0

我为我的应用程序创建了两种风格。免费版和专业版。专业版可以访问其他功能(活动)。我为每种风味添加了相关的 res 文件夹并更新了我的 gradle:

 productFlavors {

        free {
            applicationId "com.***.***.free"
            versionName "1.0 - Beta - Free"
        }

        pro {
            applicationId "com.***.***.full"
            versionName "1.0 - Beta - Pro"
        }

    }

    sourceSets {

        free {
            res.srcDirs = ['src/free/res', 'src/free/res/']
        }

        pro {
            res.srcDirs = ['src/pro/res', 'src/pro/res/']
        }

    }

我在主屏幕上的免费版本中添加了一个按钮,它应该执行以下操作:

  • 打开付款对话框
  • 如果成功......(做事)
  • 启动专业版

在“...”是我的问题: - 当我将额外的专业版活动和相关资源从主资源文件夹移动到专业资源文件夹时,免费版下载是否不包含它们,所以购买时必须下载吗?还是免费版下载包含所有内容?所以我必须禁止从免费版本访问它?因为如果免费版本只包含必要的东西会更好,而当您购买专业版时,额外的内容将额外下载。

  • 如果没有,该怎么做?
4

1 回答 1

0

简单方法
实现此流程的常用且最简单的方法是创建一个包含所有类和资源的应用程序,然后以编程方式禁用其中一些,直到完成应用程序内付款。


可能的方式
可以不将所有内容都包含在 apk 中:

  • 代码(类)
    您可以在运行时加载已编译的代码。看看这个这个。一个问题是活动类必须在清单中注册,因此它们必须存在于 apk 中。可能的解决方案是创建这些类,但将它们的大部分逻辑与动态加载的代码分开。
    请注意,Google Play 的政策禁止从 Google Play 以外的来源下载可执行代码。

  • 资源
    资源可以作为文件进行管理,在应用内成功后下载到应用目录中。然后您可以将它们用作文件(而不是作为资源,编写更多代码来加载它们)。这样,您将需要在代码中手动处理方向、语言等更改。此外,似乎不可能使用在运行时加载的 xml 布局和样式,因此您可以将它们留在资源中或通过编程设置替换它们(不是膨胀资源,而是在代码中构造布局)。


更多信息

至于您的配置freepro风味是不同的应用程序,因为它们具有不同的包名称(applicationId),因此不可能自动将用户从一个迁移到另一个。

于 2017-07-28T13:52:54.717 回答