備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

AndroidStudioでRunしたときもSignedAPKを使いたい

先日、Android開発環境をeclipseからAndroidStudioに変更しました。
移行は何とか無事に完了したのですが、リリース済みのアプリをインストールした実機でRunをすると、

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

このようなエラーが出て一度アプリを削除しないとインストール出来ないという事態が発生しました。
このままアプリのアップデートをしたら、ユーザーには一度アプリを削除してもらわないといけないのかな、、と思ったのですが、そんな事はなく。
自分の環境の場合は、debug用のapkがインストールされていたようなので、debug用のapkを作成するときにも以下のようにkeyを使用するように変更
build.gradleファイル

Properties releaseProps = new Properties()
if(rootProject.file("release.properties").exists()){
    releaseProps.load(new FileInputStream(rootProject.file("release.properties")))
} else {
    println("release.propertiesファイルをプロジェクトルートに作成してください。")
}

android {
    compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
    buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION

    defaultConfig {
        applicationId 'sample'
        minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
        targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        versionCode {versionCode}
        versionName "versionName"
    }

    signingConfigs {
        debug {
            storeFile rootProject.file(releaseProps.STORE_FILE)
            storePassword releaseProps.STORE_PASSWORD
            keyAlias releaseProps.KEY_ALIAS
            keyPassword releaseProps.KEY_PASSWORD
        }

        release {
            storeFile rootProject.file(releaseProps.STORE_FILE)
            storePassword releaseProps.STORE_PASSWORD
            keyAlias releaseProps.KEY_ALIAS
            keyPassword releaseProps.KEY_PASSWORD
        }
    }
}

ちなみに、release.propertiesファイルと、gradle.propertiesファイルは、プロジェクト直下に置いています。
gradle.propertiesのファイル内容は、こちら

ANDROID_BUILD_MIN_SDK_VERSION=9
ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.1
ANDROID_BUILD_SDK_VERSION=21

これをbuild.gradle内で

project.ANDROID_BUILD_MIN_SDK_VERSION

このように呼び出します。
release.propertiesのファイル内容は、こちら

STORE_FILE=releasekey.keystore
STORE_PASSWORD=password
KEY_ALIAS=releasekey
KEY_PASSWORD=password

注意点としては、セミコロンとか、コロンはいらないという事ですね。
もっと他に方法ありそうですが、これでいちいちアプリの削除をしなくてもRunでアプリのインストールが出来るようになりました。

Android Studio - Run signed apk on emulator - Stack Overflow