如何动态更改applicationID

时间:2016-09-08 14:22:51

标签: android android-gradle build.gradle

我正在尝试通过将原始id附加到GIT分支的分支名称来更改我的applicationId。脚本 renameID.sh 执行重命名applicationID的工作。

虽然我可以在运行build时成功重命名ApplicationID,但我希望在构建之后恢复applicationID。

脚本restoreID用于将applicationID恢复为原始名称,但似乎不起作用。

有人可以指出我做错了什么或建议更好的方法来执行我的目标任务吗?

apply plugin: 'com.android.application'

class Config{
    String name
}

task renameAppId(type:org.gradle.api.tasks.Exec) {
    commandLine 'sh', 'renameID.sh'

}

preBuild.dependsOn renameAppId
task finaltask(type:org.gradle.api.tasks.Exec){
    commandLine 'sh', 'restoreID.sh'

}

build.finalizedBy(finaltask)


android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.abc.xyz"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:recyclerview-v7:+'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:support-v4:24.0.0'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.android.support:design:22.2.1'
}

2 个答案:

答案 0 :(得分:1)

您可以将一个applicationIdSuffix函数应用于您的buildType。像这样的东西

buildTypes {
    debug {
        applicationIdSuffix branch_name
    }
}

此外,您可以通过这种方式获取当前分支名称

    def branch_name = ""
    try {
        branch_name = "git rev-parse --abbrev-ref HEAD".execute().text.trim();
    } catch (ignored) {
        println "Git not found"
    }

答案 1 :(得分:0)

我认为您可以使用产品风味来实现目标。在你的app build.gradle中,在android下,你可以添加一些这样的味道

productFlavors {

    full {
        applicationId "com.mycomp.myapp"
    }

    gitBranch {
        applicationId "com.mycomp.myapp.git_branch"
    }
}

然后从defaultConfig中删除applicationId 现在,当你构建时,你可以选择android studio左下方面板使用的构建变体(builtype + flavor)。在这种情况下,它们应该是debugFull,debugGitBranch,releaseFull和releaseGitBranch。你最终的apk将相应的applicationId与你在使用过的风味中插入的那个。

希望这有帮助