恕我直言,Java/Android 在这种情况下并不容易。理想情况下,您应该拥有一个代码库,并且能够随意编译付费或免费版本。免费版本将禁用关键方法/类,因此没有人可以修改数据库或 xml 来启用应用程序的全部功能。
一种方法是使用条件编译,Java 也不支持。但是,有一些 Ant 任务可以做到这一点,例如http://prebop.sourceforge.net/doc.html。您可以在代码中添加如下内容:
/* $if paid_version$ */
public void paid_method() {
}
/* $endif$ */
如果您正在构建的 ant 目标没有定义变量paid_version,上述代码将被删除。
如何设置 prebop 是另一个话题,它很复杂,但值得拥有一个单一的代码库。
2013 年 5 月更新:基于 Gradle 的新 Android 构建系统使构建付费和免费 APK 稍微容易一些。有关“构建变体”的主题,请参阅Android 工具网站。简而言之,您可以像这样构建您的源代码:
/src/main/
/src/paid/
/src/free/
所有共享代码驻留在 中/src/main
,付费代码驻留,/src/paid
免费代码驻留/src/free
。构建系统将为您创建付费和免费 APK。但是,仍然缺少的一项功能是在源代码本身中进行条件编译的能力。在撰写本文时,Gradle 构建工具仍处于 beta 状态,因此希望它会在最终版本中添加。