为我们的Beta测试人员启用的功能,发布如何删除

时间:2013-07-18 15:54:31

标签: android android-manifest release release-management beta-testing

我们有一个活动菜单,允许测试用户在多个测试/登台数据库/ REST服务器之间切换。在发布时,我想删除此菜单甚至被看到。我不希望代码中的变量需要手动修改。我希望我们的CI能为我做这件事。只是不确定动态构建以删除它的最佳方法。我想在清单中添加debuggable,然后当Jenkins构建它以进行发布时,它会将manifest debuggable更改为false,这反过来代码将隐藏用户的菜单。这是最好的方式还是有更好的方法? (也许在清单中使用testOnly?)

1 个答案:

答案 0 :(得分:0)

目前我在清单中使用了debuggable属性,该属性最初未在文件中设置,因为Eclipse对此不满意。然后在我的ant脚本中,我创建了一个custom_rules.xml,我根据目标false手动设置了清单中的属性,如果是release,则为true,如果是调试版本,则为true。

<target name="-set-debug-files" depends="-set-mode-check">
.....
    <!-- alter the app manifest to reflect the testing state -->
    <property name="match.start" value="android:debuggable="/>
    <property name="match.end" value=">"/>
    <replaceregexp file="AndroidManifest.xml"
               match="${match.start}.*${match.end}"
               replace="${match.start}&quot;true&quot;${match.end}">
    </replaceregexp>

    <echo level="info">${ant.project.name} 
        setting manifest debug state to true</echo>
</target>

<target name="-set-release-mode" depends="-set-mode-check">
......
    <property name="match.start" value="android:debuggable="/>
    <property name="match.end" value=">"/>
    <replaceregexp file="AndroidManifest.xml"
               match="${match.start}.*${match.end}"
               replace="${match.start}&quot;false&quot;${match.end}">
    </replaceregexp>

    <echo level="info">${ant.project.name} 
         setting manifest debug state to false</echo>

</target>

然后在我自定义Application类中的代码中,我创建了一个静态,我可以在我的活动中引用它。

DEBUG = (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;

然后当我需要隐藏/显示我使用的东西时:

if (MyApplication.DEBUGGABLE) {
    ...show stuff
} else {
    ...hide stuff
}