条件编译:在编译时获取并测试包名称

时间:2012-03-16 10:08:43

标签: java android

有很多示例说明如何在运行时在代码中获取包名称。

就我而言,我需要在编译时测试包名。

以下是我的情况:我有两个利用图书馆项目的Android项目(免费和专业版)。 免费版本有一个"获取专业版"菜单项,在其他版本中不存在。 我的菜单处理代码如下:

if ( item.getItemId()==R.id.getProVersion ) {
   //...
}

Proguard抱怨在构建专业包时不存在R.id.getProversion。 所以我需要测试正在构建的项目,以排除编译的这部分代码。

有没有办法在编译时知道软件包名称?
这个问题有替代解决方案吗?无论是以Android为中心还是以Java为中心的解决方案都可以。

2 个答案:

答案 0 :(得分:0)

你可以通过编写一个自动跳过代码安静的简单注释来做到这一点。 Myabe太过分了,但它也是进入预处理的好方法......

这似乎是关于这个主题的一个很好的(KISS)教程: http://blog.christoffer.me/2011/08/how-to-enforce-static-methods-on-class.html

答案 1 :(得分:0)

您可以将菜单项放在库项目中,然后使用运行时包名检查来实际决定是否显示消息