android - 从相同的代码创建应用程序的免费/付费版本

标签 android

所以我的申请即将发布。我们计划发布两个版本,一个基于广告的免费播放解锁版本和一个付费完全解锁版本。我设置了代码,我可以简单地在启动时设置一个标志来启用/禁用广告并锁定/解锁所有功能。所以从字面上看,这些版本之间只有一行代码会以不同的方式执行。

为了发布两个独立的应用程序,它们需要不同的包名,所以我的问题是:有没有一种简单的方法来重构我的应用程序的包名? Eclipse 的重构工具不解析生成的 R 文件或布局和 list 文件中的任何 XML 引用。我尝试使用原始源作为源创建一个新项目,但我无法引用 Assets 和资源,并且我希望避免重复我的任何代码和 Assets 。手动重构它并不是一个巨大的痛苦,但我觉得必须有更好的方法来做到这一点。有人对此有一个优雅的解决方案吗?

编辑/回答:

对于我的情况,我发现只使用项目 -> Android 工具 -> 重命名应用程序包是完全可以接受的。我不知道这存在,我觉得现在发布这个是个白痴。感谢大家的回答和评论,请随时投票结束。

最佳答案

在 Android Studio 中使用 build.gradle 非常简单。阅读 productFlavors .这是一个非常有用的功能。只需在 build.gradle 中添加以下行:

productFlavors {
    lite {
        packageName = 'com.project.test.app'
        versionCode 1
        versionName '1.0.0'
    }
    pro {
        packageName = 'com.project.testpro.app'
        versionCode 1
        versionName '1.0.0'
    }
}

在这个例子中,我添加了两种产品风格:第一种是精简版,第二种是完整版。每个版本都有自己的 versionCode 和 versionName(用于 Google Play 发布)。

在代码中只需检查 BuildConfig.FLAVOR:

if (BuildConfig.FLAVOR == "lite") {
   // add some ads or restrict functionallity

}

要在设备上运行和测试,请使用 Android Studio 中的“构建变体”选项卡在版本之间切换: enter image description here

关于android - 从相同的代码创建应用程序的免费/付费版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5590203/

相关文章:

android ndk - ANativeWindow_lock 不一致?

android - Android 的纵横比等效?

android - 如何在 Android 中使用 REST API 将图像上传到 S3 存储桶,出现禁止错误 : 403

java - 将项目添加到另一个 Activity 中的 ListView (仅添加 1 个条目)

java - 如何在主 Activity 中的 TextView 上显示状态消息?

android - https ://dl. bintray.com/kotlin/kotlin-eap 502 网关错误

android - 上传新版本的 Android 应用程序时出错

android - 自定义警报对话框在 Android 4.x 上看起来很奇怪

android - 黑莓和安卓应用

java - 从火力基地得到 child ?