Android Wearアプリを開発するときはversionCodeなどを一元管理すると便利

Last Update: 2015-04-26

Android Wearアプリ(WatchFaceも)をGoogle Playで公開するときにbuild.gradleの共通化をやっておいた方がいいと思います。

Android Wearアプリプロジェクトを作成すると、標準ではmobileモジュールとwearモジュールが作成され、それぞれのモジュールにbuild.gradleが作成されます。

Google Playにアプリを公開する場合、build.gradleで指定するversionCodeとversionNameはmobile,wearモジュールで共通にしなければなりません。

初回アップロード時は両方同じ値なので問題ありませんが、アプリをバージョンアップする際に2つのファイルをいじらないといけないのは面倒くさいと思います。(というか絶対に忘れる)

そのためversionCodeなどは、一箇所直せばmobileとwearのどちらにも適用されるようにしてやるといいと思います。

私はmobile,wearのbuild.gradleで共通して利用する部分を、別ファイルにして読み込ませるようにしてみました。

QiitaのAndroidの署名情報(signingConfigs)を外出しようを参考にさせていただきました。

/mobile/buildConfig.gradle

defaultConfig {

    applicationId "jp.gcreate.product.customphotowatch"
    minSdkVersion 18

    targetSdkVersion 21
    versionCode 3
    versionName "1.0.2"
}

/mobile/build.gradle


apply plugin: "com.android.application"



android {

    apply from: "configBuild.gradle", to: android

    compileSdkVersion 21

    buildToolsVersion "21.1.2"

}

〜dependenciesは省略

/wear/build.gradle

apply plugin: "com.android.application"




android {

    apply from: "../mobile/configBuild.gradle", to: android

    compileSdkVersion 21

    buildToolsVersion "21.1.2"
    defaultConfig{
    
    minSdkVersion 20
    
}

}

〜dependenciesは省略

上記では省略しましたが、buildTypeも外部ファイルに出して両者で同じ設定が適用されるようにしてます。

やってて未だに不安なのが、ちゃんと正しく設定できているのか、確認の仕方がいまいち分からず不安だということでしょうか・・・。

先日のDroidKaigiで発表のあった、つかえるGradleプロジェクトの作り方のやり方も参考になります。

こちらのスライドでの方法は、versionCode等の値を/build.gradleで定義し、各々のプロジェクトその値を参照することで共通化するやり方です。

こちらのやり方のほうが分かりやすいなぁって発表聞いてて思いました。

ちなみにAndroid Studioではルートのことをプロジェクト、mobileとかwearのことをモジュールと呼びますが、Gradleの世界ではどれもプロジェクトと呼ぶそうです。勉強になりました。