我有一个需要创建多个 apk 的 android 项目。每个 apk 之间的唯一区别是包名称(例如 com.my.package.name)和应用程序字符串名称,因此我可以在一台设备上安装应用程序的多个实例。有没有更好的方法来做到这一点?我考虑过创建一个库项目,但我认为可能有更简单的方法来做到这一点。
7 回答
您可以将主代码放入库中并构建多个生成多个 APK 的同级项目:
我对此进行了测试,比我最初想象 的要容易得多: https ://stackoverflow.com/a/9971543/305135
图书馆项目是这样做的正确方法。您创建并处理库项目,并且每个版本都有一个项目,这取决于库项目。请记住,您需要为每个项目提供正确的 Android 清单。
您可以试用新的 Android 构建系统。这里有一些链接
- http://tools.android.com/tech-docs/new-build-system
- http://tools.android.com/tech-docs/new-build-system/build-system-concepts
- http://tools.android.com/tech-docs/new-build-system/using-the-new-build-system
您可以自定义以下属性:
- minSdkVersion
- 目标SDK版本
- 版本代码
- 版本名称
- 包名(覆盖清单中的值)
- ETC..
您可以在应用级别的 gradle 中使用 productFlavors。
flavorDimensions "tier"
productFlavors {
dev
{
dimension "tier"
buildConfigField "String", "URL", "\"http://glapp/demo.php\""
buildConfigField "boolean", "ENABLE_DEBUG", "false"
versionName = android.defaultConfig.versionName + " dev"
applicationId = "com.abc.glnewapp.dev"
resValue "string", "app_name", "GL Demo"
}
prod
{
dimension "tier"
buildConfigField "String", "URL", "\"http://glapp/live.php\""
buildConfigField "boolean", "ENABLE_DEBUG", "false"
applicationId = "com.abc.glnewapp.prod"
resValue "string", "app_name", "GL Live"
}
}
然后选择构建变体以根据变体构建 apk 您可以根据需要放置许多面粉(不同的 apk)。
您可以通过在 src 目录下的 falour name 文件夹中添加相同的 res 结构来更改应用程序图标和其他可绘制对象。此外,如果您发现任何与 google json 相关的问题,那么只需将 google json 文件复制到 src->productflavor
欲了解更多信息,请访问
您不能以编程方式更改包名称。因此,唯一的解决方案是手动更改它并创建apk。
要更改包名称,您可以执行以下操作:
您需要复制该项目。右键单击一个,选择“Android工具->重命名应用程序包”
希望这有帮助。
我实际上使用apktool来反编译 apk,然后使用一些 Perl 脚本编辑 smali 文件以更改包名称。