2014年11月19日水曜日

app-release.apk という名前ではなくバックアップファイルの様な名前を設定したい

Android Studioで出力されるリリース用のapkファイルはデフォルト状態であればapp-release.apkという固定の名前で出力されてしまいます。
これはいろいろな面でとても扱いづらいのでなんとかしたいところ。


Android Studio(Beta) 0.8.14で生成された build.gradle(app) は次の様になっていました。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "jp.rallwell.siriuth.powerkeeper"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
ここで定義すれば良いようです。
基本的な形は「AndroidStudio で APK のファイル名を変更する Gradle の設定」で記載されている形で問題ないのですが少し長いのでesファイラーのバックアップファイル形式にしておきたいと思います。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "jp.rallwell.siriuth.powerkeeper"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    applicationVariants.all { variant ->
        if (variant.buildType.name.equals("release")) {
            variant.outputs.each { output ->
                if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
                    def newName = "${defaultConfig.applicationId}_${defaultConfig.versionName}.apk"
                    output.outputFile = new File(output.outputFile.parent, newName)
                }
            }
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
という形にしました。
DefaultConfigのversionCodeとversionNameはもともとAndroidManifest.xmlの中に記述する形だったみたいですけど、どうもgradleに以降するに当たってこちらで記述する方向になったみたいですね。
現状でもDefaultConfigのversionCodeとversionNameを削除するとAndroidManifest.xmlのものが有効になってる様ですが、その形を取るとgradleでAndroidManifest.xmlを読み込む必要になってしまうのでやめたのでしょう。

参考
  • Gradle warning: variant.getOutputFile() and variant.setOutputFile() are deprecated http://stackoverflow.com/questions/25997866/gradle-warning-variant-getoutputfile-and-variant-setoutputfile-are-deprecat
  • Gradle Plugin User Guide http://tools.android.com/tech-docs/new-build-system/user-guide
  • AndroidStudio で APK のファイル名を変更する Gradle の設定 http://qiita.com/wada811/items/ab48fe40bbdb895f9f40

0 件のコメント:

コメントを投稿