如何在“发布”版本中不编译某些 Android 菜单项

Posted

技术标签:

【中文标题】如何在“发布”版本中不编译某些 Android 菜单项【英文标题】:How to not compile certain Android menu items on 'release' builds 【发布时间】:2013-03-05 13:22:19 【问题描述】:

我有一个我称之为“调试”的菜单项,它做了一些对“调试”版本很方便的事情。我希望“发布”APK 上不存在此菜单项。

有没有办法告诉编译器忽略 XML 菜单文件中的那些条目?

谢谢:-)

【问题讨论】:

【参考方案1】:

如果您正在使用菜单 XML 资源,您可以将这些仅用于调试的选项隔离到它们自己的资源 XML 文件中。然后,除了膨胀你的主要的,你也膨胀调试专用的,如果BuildConfig.DEBUGtrue

if (BuildConfig.DEBUG) 
  // inflate that second resource XML file

如果您使用 Java 代码设置菜单,则可以执行相同的基本操作,将仅用于调试的 add() 调用封装在对 BuildConfig.DEBUG 的检查中。

原则上,即将推出的基于 Gradle 的构建系统将有助于使这变得更容易一些,但目前 AFAIK 还需要几个月的时间。

【讨论】:

【参考方案2】:

如果您使用 Jenkins 创建构建,您可以使用 shell 命令将调试菜单 xml 文件替换为生产版本。这对于 web 服务详细信息 xml 文件也非常有效。

【讨论】:

以上是关于如何在“发布”版本中不编译某些 Android 菜单项的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Android 中不推荐使用某些 NotificationBuilder 方法,我应该使用哪些方法?

如何在android中具有某些条件的最新sdk版本中重复通知?

我的应用程序中不支持的 major.minor 版本 52.0

SetEditable在最新的Android版本中不起作用

prolog 中不允许从 Eclipse 迁移到 Android Studio 错误内容

Android applinks 在已发布的版本中不起作用,但在本地安装中可以正常工作