概要
assembleコマンドで出力したAPKファイルが、渡した先で古いものとごっちゃにされてしまうことがまれによくあるので、出力時点でファイル名を変更してバージョンが一目でわかるようにしています。
参考:
Android Studio2系
特定のProductFlavorの全てのBuildTypeを一括で出力したり、逆に全てのProductFlavorの特定のBuildTypeを一括で出力したりすることも多いため、まとめてbuild/outputs/apkに出力するようにしています。
build.gradle
android {
/** 略 **/
applicationVariants.all { variant ->
variant.outputs.each { output ->
if (output.outputFile?.name?.endsWith('.apk')) {
variant.productFlavors.each { productFlavor ->
// 出力ファイル名は「BuildTypeProductFlavor_versionName_versionCode.apk」
output.outputFile = new File(output.outputFile.parent,
variant.buildType.getName().capitalize() + productFlavor.name.capitalize() + '_' + variant.versionName + '_' + variant.versionCode + '.apk')
}
}
}
}
}
Android Studio3系
output.outputFileが操作できないためAndroid Sutdio2系とは若干異なります。
そのままだとbuild/outputs/apk/productFlavor/buildTypeにそれぞれ出力されるため2階層上に出力する用に調整していますが、ちょっと気持ち悪さがあります…
build.gradle
android {
/** 略 **/
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (outputFileName?.endsWith('.apk')) {
variant.productFlavors.each { productFlavor ->
// 出力ファイル名は「BuildTypeProductFlavor_versionName_versionCode.apk」
outputFileName = '../../' + variant.buildType.getName().capitalize() + productFlavor.name.capitalize() + '_' + variant.versionName + '_' + variant.versionCode + '.apk'
}
}
}
}
}