根据构建时间中的applicationId更改AndroidManifest中的包属性

时间:2017-04-26 09:34:42

标签: android android-gradle android-manifest build.gradle

我正在尝试在构建期间在我的.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中动态更改包?

0 个答案:

没有答案