Build.gradleを適応させてapkの最終的なベース名を変更するにはどうすればよいですか? (デフォルトのサフィックスを変更せずに)
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ドキュメント で提案されているように。
Android Gradleプラグインバージョン1.1.0では、archivesBaseName
、 friederbluemleが指摘したように を壊すバグが導入されました。しかし幸いなことに、これはその後修正されました( バージョン1.1.2 )。
私は非常に簡単な解決策を見つけました。 apkベース名は、プロジェクトで定義されたプロパティarchivesBaseName
です。したがって、apksの名前を変更するには次の行で十分です。
project.archivesBaseName = "AnotherName";
Android Gradleプラグインを使用する必要があるバージョン1.1.0以降
_archivesBaseName = "yourOtherName"
_
_build.gradle
_のproject.ext.set("archivesBaseName", "yourOtherName")
の代わりにそれを機能させます。
以下のコードは、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の名前を変更しないことです。
ルートsettings.gradle
に以下を配置することにより、(ディレクトリの名前を変更せずに)サブプロジェクトの名前を変更することもできます。
rootProject.children.each {
it.name = ('app' == it.name ? 'MyAppName' : it.name)
}