LoginSignup
10
13

More than 5 years have passed since last update.

【Android】開発版アプリとリリースアプリを一端末に共存させる

Posted at

だいぶ今更な感じだが、最近対応してみて割と便利だったのでメモ。
アプリに署名するProductID(パッケージ名)が別であれば別アプリとして認識されるので、開発版とリリース用とをGradleのProductFlavorを使ってBuildVariantsで切りかえられるようにします。
今回は「開発版アプリとリリースアプリを一端末に共存させる」までの最短距離を記すので、BuildVariants、BuildType、Flavorについての詳細を知りたい方はこの辺りの記事をご参考に。

build.gradleの設定

まずはbuild.gradleにproductFlavorsを追加し、devで署名された場合はapplicationIdがdev用のもので上書きされるように設定しています。productionの場合はdefaultConfigのままにするので空欄で。なお、dev/productionという名前はお好きなものに。
また、アプリ名を切りかえのためにプレースホルダーを設定します。
defaultConfigとproductFlavors->devのmanifestPlaceholdersにappNameを追加し、それぞれアプリ名を指定しておきます。

build.gradle
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.hoge.hoge"
        manifestPlaceholders = [appName:"@string/app_name"]
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 20
        versionName "2.0.0"
    }

    productFlavors {
        dev {
            applicationId = "com.hoge.hoge.dev"
            manifestPlaceholders = [appName:"@string/app_name_dev"]
        }
        production {
        }
    }
}

AndroidManifestの設定

applicationと最初のactivityに「android:label="${appName}」を記載し、build.gradleで定義したappNameを読み込みます。これでランチャー上のアプリ名がdevとproductionそれぞれのものになります。
また、BroadcastReceiver等は「android:authorities="${applicationId}」を明示してあげないとエラーが出るので注意。

AndroidManifest.xml
<application
        android:name=".Application"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme"
        android:label="${appName}">

        <activity
            android:name="com.hoge.hoge.HogeActivity"
            android:label="${appName}">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
・・・

BuildVariantsの設定

debug/releaseそれぞれFlavor付きのvariantが選択できるようになっています。

スクリーンショット 2016-04-12 23.39.44 2016-04-12 23-40-12.png

debug/relaseで署名しBuildされたアプリは同一端末にそれぞれインストールできます。

Vysor (Beta) 2016-04-12 23-58-44.png

まとめ

非常に簡単でした。
「バージョンごと」「APIの向き先ごと」でアプリを共存させるなどの用途でも活用できそうです。

10
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13