AndroidStudio で APK のファイル名を変更する Gradle の設定 | DevAchieveでAPK をリネームしましたが、
出力されるフォルダが build/outputs/apk/ なので
変更したいことがあるかと思います。
Gradle の Task を定義してあげれば
任意のフォルダにコピーする処理を実行することができます。
Gradle で Signed APK とProGuard 関連ファイルをコピーするタスクを設定する
Add move apk task and move proguard task · c7cdd90 · wada811/Android-Material-Design-Colors
applicationVariants.all { variant ->
if (variant.buildType.name.equals("release")) {
variant.outputs.each { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
// Rename APK
def applicationId = defaultConfig.applicationId
def versionCode = defaultConfig.versionCode
def versionName = defaultConfig.versionName
def date = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date())
def newName = "${applicationId}_r${versionCode}_v${versionName}_${date}.apk"
def publish = project.tasks.create("publishAll")
// Move and Rename APK
def task = project.tasks.create("publish${variant.name.capitalize()}Apk", Copy)
task.from(output.outputFile)
task.rename(output.outputFile.name, newName)
task.into(file("${variant.name}/apk").getAbsolutePath())
task.dependsOn variant.assemble
publish.dependsOn task
// Move ProGuard
if (variant.buildType.runProguard) {
def copyTask = project.tasks.create("copy${variant.name.capitalize()}MappingText", Copy)
def buildTypeName = variant.buildType.name
copyTask.from(file("build/outputs/proguard/${buildTypeName}").path)
copyTask.into(file("${variant.name}/proguard").getAbsolutePath())
copyTask.dependsOn variant.assemble
task.dependsOn copyTask
}
}
}
}
}実行
./gradlew publishAll でapp/release/apk/ に Signed APK が、
app/release/proguard/ に ProGuard 関連ファイルがコピーされます。