Androidアプリケーションプロジェクトで次の簡略化された構成を使用しています。
Android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0.0"
applicationVariants.all { variant ->
def file = variant.outputFile
def fileName = file.name.replace(".apk", "-" + versionName + ".apk")
variant.outputFile = new File(file.parent, fileName)
}
}
}
Gradleプラグインをv.0.13.0に、Gradleをv.2.1に更新しました。次の警告が表示されます。
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
非推奨の警告を取り除くために、Groovyスクリプトをどのように書き直すことができますか?
Larry Schiefer からの回答に基づいて、スクリプトを次のように変更できます。
Android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = outputFile.name.replace('.apk', "-${versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
完全なコードスニペットは次のようになります。
// Customize generated apk's name with version number
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def manifestParser = new com.Android.builder.core.DefaultManifestParser()
def fileName = outputFile.name.replace(".apk", "-DEBUG-" + manifestParser.getVersionName(Android.sourceSets.main.manifest.srcFile) + ".apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
ビルドバリアント出力APIは、最新のAndroid Gradleプラグインで変更されました。これにより、複数の出力ファイル(またはディレクトリ)が許可されるようになったため、このメソッドは非推奨としてマークされています。_variant.outputs
_代わりに、Collection
が返されます。これにより、反復して各出力ファイルを取得できます。ファイルオブジェクトがnull以外であり、条件に一致することを確認する必要があります(たとえば、 '.apk'拡張子。)次に、新しいFile
オブジェクトを作成して、コレクション内の出力に追加できます。
Gradle 3.0.0のAndroidプラグイン
このように使えます
Android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Androidドキュメント https://developer.Android.com/studio/build/gradle-plugin-3-0-0- migration.html#update_gradle