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