我正在尝试在构建期间在我的.apk中创建动态包名称。问题是我不能将占位符放在AndroidManifest.xml中作为系统默认情况下公开${applicationId}
但是这不能使用。
我也不能使用build.gradle中manifestPlaceholders = [package:""+ applicationId +""]
中指定的defaultConfig
。
我试图做的是:
String packageName = System.getProperty("packageName")
defaultConfig {
applicationId packageName
minSdkVersion 19
manifestPlaceholders = [package:""+ packageName +""]
targetSdkVersion 25
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
和buildTypes:
buildTypes {
release {
println("Building release apk using application id: " + packageName)
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
println("Building debug apk using application id: " + packageName)
if (packageName == null) {
packageName = "com.example.mypackage"
}
applicationIdSuffix ".debug"
versionNameSuffix "-debug"
}
}
我在这里尝试实现的是从命令行获取包名称,如果有人尝试构建版本而不指定构建失败。但即使我没有指定并执行任务assembleRelease
,我收到此消息:
Building release apk using application id: null
Building debug apk using application id: null
它仍然构建apk并且它运行完全正常,这是由于Manifest中提供的包。所以我的问题是如何在AndroidManifest.xml中动态更改包?