web-dev-qa-db-ja.com

Gradleプラグインv4.10.1でAPKの名前を変更

今日、Android StudioをGradleプラグインバージョン4.10.1に付属の3.3バージョンに更新しました。

以前、build.gradleは、このコードを使用してapkの名前を次の構造に変更していました。

app-{buildType[release|debug]}-{flavor[prod|stage]}-{versionName[1.2.4]-{versionCode[43]}.apk

app-release-prod-1.1.4-45.apk

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = output.outputFile.name.replace(".apk", "-${variant.versionName}-${variant.versionCode}.apk").replace("-unsigned", "")
    }
}

しかし、更新後にこのエラーが発生しました。

警告:API'variantOutput.getPackageApplication() 'は廃止され、' variant.getPackageApplicationProvider() 'に置き換えられました。 2019年末に削除されます。詳細については、 https://d.Android.com/r/tools/task-configuration-avoidance を参照してください。何がvariantOutput.getPackageApplication()を呼び出しているかを判別するには、コマンドラインで-Pandroid.debug.obsoleteApi = trueを使用して、スタックトレースを表示します。影響を受けるモジュール:アプリ

このプラグインバージョンでは出力データにアクセスできないため、問題はoutput.outputFile.nameにあります。

これまでのところ、私はこのアプローチを試しましたが成功しませんでした。

applicationVariants.all { variant ->
    variant.flavors*.name.all { flavor ->
        outputFileName = "${flavor}-${variant.buildType.name}-${variant.versionName}-${variant.versionCode}.apk".replace("-unsigned", "")
    }
}

何か案が?

================================================== =====

[〜#〜]更新[〜#〜]

この問題を再検討しました。次のスニペットを試しましたが、そのバリアントのフレーバーを取得する際に問題が発生します。

Android.applicationVariants.all { variant ->
    def flavor = variant.flavorName
    variant.outputs.all { output ->
        def builtType = variant.buildType.name
        def versionName = variant.versionName
        def versionCode = variant.versionCode
        outputFileName = "app-${flavor}-${builtType}-${versionName}-${versionCode}.apk"
    }
}

outputs: app--release-1.0.4-88.apk

ありがとう

9
axierjhtjz
applicationVariants.all { variant ->
        variant.outputs.all {
            def appName = "AppName"
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def newName = "${appName}${defaultConfig.versionName}_${buildType}.apk"
            outputFileName = newName
        }
    }

以下のコードは、apkファイル名を次のように生成します

AppName1.2.0_buildType.apk