如何pipe理Android项目的免费和付费版本?

我决定构build我的免费Android应用程序的付费版本。 付费版本有一些额外的function。 我如何pipe理这两个版本?

  • 是否有可能让他们基于相同的源代码?
  • 如果应用程序需要唯一的软件包名称,我该如何强制付费应用程序来replace免费版本?
  • 如何分贝,偏好和其他私人存储的东西,如何分享他们没有暴露在世界其他地方的所有数据?

任何意见,将有助于pipe理这两个项目,但不直接回答上述问题,也赞赏。

Solutions Collecting From Web of "如何pipe理Android项目的免费和付费版本?"

有几种方法:

  1. 把你的应用程序的核心放在一个库项目中,并为付费应用程序创build另外两个项目,一个用于免费版本的应用程序。 升级到付费版本意味着用户必须卸载免费版本,并丢失所有的数据。
    这是“古典”的方法。
  2. 让用户进行应用内付款。 用户保留所有的数据库和设置,你只能维护一个应用程序。
    这个选项需要在您的应用程序中包含额外的模块,以及额外的逻辑。
  3. 制作另一个虚拟/空应用程序,这是一个付费应用程序。 这个应用程序的存在意味着用户有一个付费版本。 用户继续使用原始/免费的应用程序。
    你可以简单地使用PackageManager来检查付费应用是否被下载。
    用户保留所有的数据库和设置,你只能维护一个应用程序。 好吧,有两个应用程序,但第二个可以是非常小,简单。
    您不必包含额外的库/代码来进行应用内付款。 您也可以将所有应用程序升级到“专业”版本,只需购买一次。
    我不知道是否所有用户都了解这种模式。 对于开发者来说,这可以用最less的工作来实现,并且用户在升级时保持所有的设置。

我认为这是可能的,并build议保持在相同的源代码。 否则,你必须支持两个版本的应用程序,而不是只有一个。

如果你只有一个应用程序,那么你只有一个包名称。

在当前许可证状态(免费或付费)中创build一个负责应用程序function可用性的类。 这个类应该存储关于许可证状态的信息(免费的,付费的,也许你会在将来添加订阅模式,付费版本可能在一段时间后过期)。 您的应用程序的function仅适用于付费版本检查当前许可证状态。 您也可以根据许可证状态更改应用程序GUI。 例如隐藏付费function的GUI,显示“购买”button或广告等

而且,如果您只有一个可以免费或付费的应用程序,则无需在付费版本和免费版本之间共享任何内部应用程序数据。