一种方法是使用字符串资源文件——因为这些值是“级联”的。
库代码被复制到免费和付费项目中,并在该项目的上下文中运行,这意味着它首先查看“本地”字符串资源。
只要您还在库项目中指定该字符串资源名称,它就会编译但在执行时使用更“本地”的值。
在您的库项目中,在 res/values/strings.xml 中指定一个名为“paid”的字符串
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<resources>
<string name="app_name">My app</string>
<string name="paid">false</string>
</resources>
在您的免费项目中,指定:
<string name="paid">false</string>
在您的付费项目中,指定:
<string name="paid">true</string>
您现在可以在您的库项目中访问它:
boolean paid = Boolean.parseBoolean(getString(R.string.paid));
当你运行免费项目时它会报告 False,当你运行付费项目时它会报告 True。
然后你只需要检查那个布尔值并分支......
if(!paid) {
//show an ad (or whatever)
}
if(paid) {
//load more game levels (or whatever)
}