Android Studio で Sigined APK を生成するにはツールバーの [ Build > Generate Signed APK... ] から
ガイダンスに従えば生成できます。
しかし、GUI からではファイル名は app-release.apk などになるので
変更したい場合などは Gradle の設定が必要になります。
Gradle で Signed APK のファイル名を設定する
Generate signed APK has been named by program · bc41551 · wada811/Android-Material-Design-Colorsapply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.0.1"
defaultConfig {
applicationId "at.wada811.android.material.design.colors.sample"
minSdkVersion 8
targetSdkVersion 21
versionCode 2
versionName "1.1.0"
}
signingConfigs {
release
}
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
applicationVariants.all { variant ->
if (variant.buildType.name.equals("release")) {
def file = variant.outputFile
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"
variant.outputFile = new File(file.parent, newName)
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21+'
compile project(':library')
}./gradlew assembleReleaseすると
at.wada811.android.material.design.colors.sample_r2_v1.1.0_20141022_173737.apk
のようなファイル名で app/build/outputs に生成されます。
参考
gradle - AndroidStudioでAPKのファイル名にバージョン番号などを入れる設定 - Qiita追記: Android Gradle Plugin 0.13, Gradle 2.1 で outputFile が deprecated になっている
WARNING [Project: :sample] variant.getOutputFile() is deprecated. Call it on one of variant.getOutputs() instead. が表示されるので書き直しました。applicationVariants.all { variant ->
if (variant.buildType.name.equals("release")) {
variant.outputs.each { output ->
System.println("* output.outputFile.name : ${output.outputFile.name}")
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"
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
}outputs というから複数あるのかとおもいきや apk しかありませんでした。
無駄にネストが深くなる…。