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

Android 为我们的测试人员启用的功能,发布如何删除,android,android-manifest,release,release-management,beta-testing,Android,Android Manifest,Release,Release Management,Beta Testing,我们有一个活动菜单,允许beta用户在几个测试/暂存数据库/REST服务器之间切换。在发布时,我想删除这个菜单,甚至不让人看到。我不希望代码中有一个必须手动修改的变量。我希望我们的CI为我做这件事。只是不确定动态构建的最佳方式来删除此项。我想在清单中添加可调试的,然后当Jenkins为release构建清单时,它会将清单可调试更改为false,这反过来代码会对用户隐藏菜单。这是最好的方法还是有更好的方法?(可能只在清单中使用testOnly?目前,我正在清单中使用可调试属性,该属性最初未在文件中

我们有一个活动菜单,允许beta用户在几个测试/暂存数据库/REST服务器之间切换。在发布时,我想删除这个菜单,甚至不让人看到。我不希望代码中有一个必须手动修改的变量。我希望我们的CI为我做这件事。只是不确定动态构建的最佳方式来删除此项。我想在清单中添加可调试的,然后当Jenkins为release构建清单时,它会将清单可调试更改为false,这反过来代码会对用户隐藏菜单。这是最好的方法还是有更好的方法?(可能只在清单中使用testOnly?

目前,我正在清单中使用可调试属性,该属性最初未在文件中设置,因为Eclipse不赞成这样做。然后,在我的ant脚本中,我创建了一个自定义的_rules.xml,其中我根据目标false if release和true if debug version手动设置清单中的属性

<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>
然后,当我需要隐藏/显示我使用的东西时:

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