簡體   English   中英

Android Gradle build:重命名apk

[英]Android Gradle build : renaming the apk

如何調整build.gradle以更改apk的最終基本名稱? (不更改默認后綴)

在Gradle 1.8上, project.archivesBaseName確實有效,但它提出了這個抱怨:

不建議按需創建屬性(也稱為動態屬性),並計划在Gradle 2.0中刪除它們。 有關替換動態屬性的信息,請閱讀http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html 不推薦使用的動態屬性:“root project'myapp'”上的“archivesBaseName”,值:“AnotherName”。

要擺脫警告(並避免在Gradle 2.0上構建中斷),請使用以下命令:

project.ext.set("archivesBaseName", "AnotherName");

...正如ExtraPropertiesExtension文檔中所建議的那樣

更新(Gradle插件1.1.0)

Android Gradle插件版本1.1.0引入了一個破壞archivesBaseName的錯誤, 正如friederbluemle所說 但幸運的是,此后已經修復( 版本1.1.2 )。

我發現了一個很簡單的解決方案 apk基本名稱是在項目上定義的屬性archivesBaseName 所以以下行足以重命名apks:

project.archivesBaseName = "AnotherName";

從您必須使用的Android Gradle插件的1.1.0版開始

archivesBaseName = "yourOtherName"

而不是project.ext.set("archivesBaseName", "yourOtherName")在您build.gradle ,使其工作。

以下代碼在v1.3.1上僅適用於我,僅適用於APK:

android {
    defaultConfig {
        archivesBaseName = "AnotherName"

再次,這適用於Android插件1.3.1(而不是1.3.0),但我們仍然無法重命名我們的應用程序(APK)和庫(AAR)。 這是一個很大的問題,因為我們有一個20多個項目設置,我們可以鎖定已部署二進制文件的來源,而不是在每個子項目build.gradle中重復代碼。

以下為我們工作:

在root build.gradle中定義以下方法(和插件):

ext.snapshotSuffix = "<sha>-<count>-SNAPSHOT"
ext.nextVersion = "patch"
apply plugin: 'com.cinnober.gradle.semver-git'

def renameArtifact(variant) {
    variant.outputs.each { output ->
        def fullName = output.outputFile.name
        def projectName = fullName.substring(0, fullName.indexOf('-'))
        output.outputFile = new File(
                (String) output.outputFile.parent,
                (String) output.outputFile.name.replace(projectName, "drivecx-${projectName}-${project.version}"))
    }
}

適用於應用場合:

apply plugin: 'com.android.application'
android {
    ...
    // Rename all output artifacts to include version information
    applicationVariants.all { variant ->
        renameArtifact(variant)
    }
}

對於圖書館使用:

apply plugin: 'com.android.library'
android {
    ...
    // Rename all output artifacts to include version information
    libraryVariants.all { variant ->
        renameArtifact(variant)
    }
}

現在你得到一些非常好的文件,它們有一個共同的前綴,項目名稱,git-describe-wth-sha1-buildflavor和擴展名。

老例子:

androidauto-debug.apk

新例子:

drivecx-androidauto-0.2.1-d1436b7-193-SNAPSHOT-debug.apk

獎勵是它不會重命名未對齊的apks。

您還可以通過在root settings.gradle以下內容來重命名子項目(不重命名目錄):

rootProject.children.each {
    it.name = ('app' == it.name ? 'MyAppName' : it.name)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM