19

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

4

5 に答える 5

26

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 はarchivesBaseNamefriderbluemle が指摘したように壊れたバグを導入しました。しかし幸いなことに、これは修正されています (バージョン 1.1.2で)。

于 2013-12-18T14:04:54.287 に答える
11

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

archivesBaseName = "yourOtherName"

project.ext.set("archivesBaseName", "yourOtherName")あなたの代わりにbuild.gradleそれを機能させるために。

于 2015-02-20T03:32:39.523 に答える
2

以下のコードは、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 の名前を変更しないことです。

于 2015-10-20T00:13:50.743 に答える
0

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

rootProject.children.each {
    it.name = ('app' == it.name ? 'MyAppName' : it.name)
}
于 2016-03-25T21:06:16.700 に答える