build.gradle を適応させて、apk(s) の最終ベース名を変更するにはどうすればよいですか? (デフォルトのサフィックスを変更せずに)
5 に答える
Gradle 1.8ではproject.archivesBaseName
動作しますが、次の苦情が発生します。
オンデマンドでのプロパティの作成 (別名動的プロパティ) は廃止され、Gradle 2.0 で削除される予定です。 動的プロパティの置き換えについては、 http: //gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.htmlを参照してください 。非推奨の動的プロパティ:「ルート プロジェクト 'myapp'」の「archivesBaseName」、値:「AnotherName」。
警告を取り除く (そして Gradle 2.0 でビルドが壊れないようにする) には、次のようにします。
project.ext.set("archivesBaseName", "AnotherName");
... ExtraPropertiesExtension documentationで提案されているように。
更新 (Gradle プラグイン 1.1.0)
Android Gradle プラグイン バージョン 1.1.0 はarchivesBaseName
、friderbluemle が指摘したように壊れたバグを導入しました。しかし幸いなことに、これは修正されています (バージョン 1.1.2で)。
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) の両方の名前を変更するのにまだ問題がありました。デプロイされたバイナリがどこから来るのかをロックダウンし、すべてのサブプロジェクト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 の名前を変更しないことです。
以下を root に置くことで、サブプロジェクトの名前を (ディレクトリの名前を変更せずに) 変更することもできますsettings.gradle
:
rootProject.children.each {
it.name = ('app' == it.name ? 'MyAppName' : it.name)
}