web-dev-qa-db-ja.com

Android Gradleビルド:apkの名前を変更

Build.gradleを適応させてapkの最終的なベース名を変更するにはどうすればよいですか? (デフォルトのサフィックスを変更せずに)

19
ben75

Gradle 1.8では、 project.archivesBaseName は機能しますが、次のような苦情があります。

オンデマンドでのプロパティの作成(別名動的プロパティ)は非推奨になり、Gradle2.0で削除される予定です。動的プロパティの置き換えについては、 http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html をお読みください。非推奨の動的プロパティ:「rootproject'myapp '」の「archivesBaseName」、値:「AnotherName」。

警告を取り除くには(そしてGradle 2.0でビルドが壊れないようにするには)、これを使用します:

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

... ExtraPropertiesExtensionドキュメント で提案されているように。

アップデート(Gradleプラグイン1.1.0)

Android Gradleプラグインバージョン1.1.0では、archivesBaseNamefriederbluemleが指摘したように を壊すバグが導入されました。しかし幸いなことに、これはその後修正されました( バージョン1.1.2 )。

26
Jonik

私は非常に簡単な解決策を見つけました。 apkベース名は、プロジェクトで定義されたプロパティarchivesBaseNameです。したがって、apksの名前を変更するには次の行で十分です。

project.archivesBaseName = "AnotherName";
21
ben75

Android Gradleプラグインを使用する必要があるバージョン1.1.0以降

_archivesBaseName = "yourOtherName"
_

_build.gradle_のproject.ext.set("archivesBaseName", "yourOtherName")の代わりにそれを機能させます。

10
Fabian Frank

以下のコードは、v1.3.1およびAPKのみで私にとってうまく機能しました:

Android {
    defaultConfig {
        archivesBaseName = "AnotherName"

繰り返しになりますが、これはAndroidプラグイン1.3.1(1.3.0ではありません)で機能しますが、アプリ(APK)とライブラリ(AAR)の両方の名前を変更するのに問題がありました。デプロイされたバイナリがどこから来たのかをロックダウンし、すべてのサブプロジェクトbuild.gradleでコードを複製しない、20以上のプロジェクトセットアップ。

以下は私たちのために働いた:

ルート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

ボーナスは、整列されていないapkの名前を変更しないことです。

1
MattiasF

ルートsettings.gradleに以下を配置することにより、(ディレクトリの名前を変更せずに)サブプロジェクトの名前を変更することもできます。

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