ツールバーの [ 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 しかありませんでした。
無駄にネストが深くなる…。