我正在构建一个 android 应用程序,我想将它分成两个版本,Pro 和 Free。
专业版应用程序将完全无广告,免费将受到限制并带有广告。两个应用程序的业务逻辑基础将是相同的......所以我认为“编写代码”两次是不正确的。在两个项目中处理相同的代码对于错误修复和代码改进可能非常烦人。
有没有办法用一个项目做到这一点?
例如,共享首选项不是很好的解决方案,因为许多人拥有 root 访问权限,因此他们可以很容易地更改它。
我正在构建一个 android 应用程序,我想将它分成两个版本,Pro 和 Free。
专业版应用程序将完全无广告,免费将受到限制并带有广告。两个应用程序的业务逻辑基础将是相同的......所以我认为“编写代码”两次是不正确的。在两个项目中处理相同的代码对于错误修复和代码改进可能非常烦人。
有没有办法用一个项目做到这一点?
例如,共享首选项不是很好的解决方案,因为许多人拥有 root 访问权限,因此他们可以很容易地更改它。
首先你好,
据我所知或所见,同一个应用程序的两个版本(免费版和专业版)应该是两个不同的项目。您可以但不应该使用相同的应用程序并仅检查保存在 Prefs 中的标志,但 root 用户可以覆盖它(正如您已经说过的)。
您也可以使用谷歌的应用内购买来验证这一点,如其他答案所述。在我看来,您不应该使用同一个项目并检查标志,因为它必然会产生一些开销,特别是如果您使用 Internet 进行检查。如果用户的网络连接速度较慢或不可靠,他的体验就会受到影响。
做到这一点的“干净”方法是像其他人一样制作两个不同的应用程序:用户可以安装免费应用程序或专业应用程序。这是理想的,因为您有两个不同的用户选项,如果他们想要专业版,他们不需要获得免费的,然后在菜单中看到选项解锁。这对用户来说更直接。
我建议您先构建 pro 应用程序,然后在完成后通过限制功能和添加添加来派生免费版本,因为剥离它比加载项更容易。完成专业版后,只需单击:
文件 -> 新建 -> 项目(出现弹出菜单) -> 选择 Android 文件夹 -> 选择“Android Project from Existing Code” -> 选择您的应用并点击完成
缺点是如果你发现了一个错误,你必须在两个项目中修复它。如果您想优化查找错误,您可以构建免费版本,将其投放市场并修复最终用户报告的错误以及您发现的错误。在您认为一切都很好之后,您可以从现有代码创建专业版并继续进行。
ps:我意识到我填满了整个页面,但这是我在这里的第一个答案,似乎我过于热情了:-)
如果这个解决方案看起来有点原始,我很抱歉,但是......为什么不在你的代码中使用硬编码标志......某些类中的一些静态变量说:
public static final boolean isFreeVersion = true/false;
然后,在您想要决定是否显示添加的任何地方,只需引用此布尔值。
您仍然需要构建您的应用程序两次并将其发布到商店两次(在不同的应用程序签名下),一次将布尔值设置为 true,一次设置为 false。但至少代码库是相同的。这样,如果您发现了一个错误,您可以修复它,并且只需切换布尔值即可发布两次相同的应用程序。
我很确定您甚至可以找到一个 ant 脚本来在构建期间为您更改布尔值。
使用谷歌的应用内购买怎么样?通过这种方式,Google 服务器管理 PRO/Trial 详细信息。唯一的缺点是您的应用需要访问互联网以进行验证:)