1. ホーム
  2. android

[解決済み] " app-release.apk" このデフォルトで生成されたapk名を変更する方法

2022-04-15 06:45:13

質問

を生成するたびに、署名された アプク Android Studioでは、デフォルトでapp-release.apkという名前になるのですが...。

apkに割り当てる必要がある名前を尋ねてくるように、何か設定を行うことはできますか(eclipseで行っている方法)。

私がしていることは - それが生成された後、apkの名前を変更します。 これはエラーを与えませんが、私はプロンプトを得るために設定で任意の変更を行うことができるように、任意の本物の方法はありますか?

注:。

apkを生成している間、android studioは場所(だけ)を選択するプロンプトを私に与えています。

解決方法を教えてください。

はい、変更することができますが、もう少し注意が必要です。

次に、以下を追加します。 build.gradle をチェックしていることを確認し、プロジェクトの ビルドバリアント のようなプロジェクトの release or Debug ということで、ここではビルドバリアントを release が、Debugを選択することも可能です。

    buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig getSigningConfig()
                applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def date = new Date();
                        def formattedDate = date.format('yyyyMMddHHmmss')
                        output.outputFile = new File(output.outputFile.parent,
                                output.outputFile.name.replace("-release", "-" + formattedDate)
    //for Debug use output.outputFile = new File(output.outputFile.parent,
   //                             output.outputFile.name.replace("-debug", "-" + formattedDate)
                        )
                    }
                }
            }
        }

このような別のアプローチで行うこともできます。

 defaultConfig {
        applicationId "com.myapp.status"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        setProperty("archivesBaseName", "COMU-$versionName")
    }

build.gradleでSet propertyメソッドを使用する。 そして、プロジェクトを実行する前にgradleを同期することを忘れないでください。 あなたの問題が解決することを願っています :)

<ブロッククオート

Googleのアップデートで追加された新しい対処法 フレーバーやバリアントの出力に応じてビルド名を変更できるようになりました。 //以下のソースはデベロッパーアンドロイドのドキュメントからです。 詳細については、上記のドキュメントを参照してください。

Variant API を使用してバリアント出力を操作することは、新しいプラグインでは壊れています。以下のように、ビルド時に APK 名を変更するような簡単なタスクではまだ動作します。

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

.aabバンドルのリネーム これはうまく David Medenjakが回答しています。

tasks.whenTaskAdded { task ->
    if (task.name.startsWith("bundle")) {
        def renameTaskName = "rename${task.name.capitalize()}Aab"
        def flavor = task.name.substring("bundle".length()).uncapitalize()
        tasks.create(renameTaskName, Copy) {
            def path = "${buildDir}/outputs/bundle/${flavor}/"
            from(path)
            include "app.aab"
            destinationDir file("${buildDir}/outputs/renamedBundle/")
            rename "app.aab", "${flavor}.aab"
        }

        task.finalizedBy(renameTaskName)
    }
//@credit to David Medenjak for this block of code
}

上記のコードは必要ですか?

最新版のandroid studio 3.3.1にて確認したこと。

.aabバンドルのリネームは、以前のコードで行われ、タスクのリネームは全く必要ありません。

皆さんのお役に立てれば幸いです。)