我为我的应用创建了两种口味。免费版和专业版。专业版可以访问其他功能(活动)。我为每种风味添加了相关的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/']
}
}
我在主屏幕上的免费版本中添加了一个按钮,该按钮应执行以下操作:
在“......”是我的问题: - 当我将其他专业版活动和相关资源从main-res-folder移动到pro-res-folder时,免费版下载是否不包含它们,因此购买时必须下载它们? 或者免费版下载是否包含所有内容?所以我必须禁止从免费版本访问它? 因为如果免费版本只包含必要的东西会更好,当你购买专业版本时,额外的将被额外下载。
答案 0 :(得分:0)
简单方法
实现此流程的通常和最简单的方法是创建一个包含所有类和资源的应用程序,然后以编程方式禁用其中一些应用程序直到完成应用程序内付款。
可能的方式
有可能不包括apk中的所有内容:
代码(类)
您可以在运行时加载已编译的代码。查看this和this。问题是活动类必须在清单中注册,因此它们必须存在于apk中。可能的解决方案是创建这些类,但将其大部分逻辑分离为动态加载的代码。
请注意,Google Play policy禁止从Google Play以外的来源下载可执行代码。
资源
资源可以作为在成功进入应用程序目录后下载的文件进行管理。然后你可以将它们用作文件(而不是资源,编写更多代码来加载它们)。这样,您需要在代码中手动处理方向,语言等。此外,似乎不可能使用xml布局,在运行时加载样式,因此您可以将它们留在资源中或通过编程设置替换它们(不是为了扩充资源,而是在代码中构造布局)。
更多信息
至于您的配置,free
和pro
风格是不同的应用,因为它们具有不同的包名称(applicationId
),因此无法自动将用户从一个迁移到另一个