JQ Blog

ビルド環境設定(Android Studio)2

はじめに

前回にAndroidStudio, XCodeのビルド環境設定の記事を書いたとき、環境変数とか環境によって違う機能を分けることについてもっといい方法があるんじゃないかなという疑問ができたので調べてみたのをまとめた。
その中で見つけたのがbuildConfigFieldだった。
buildConfigFieldbuild.gradlebuildTypesproductFlavorsに使える定義するものである。

gradle.properties

ちなみに、build.gradleはgitや他のバージョン管理ツールで公開されるので直接書くのではなくて、gradle.propertiesから読み込む方法をとる。
まずはgradle.propertiesに設定をする。build.gradleにはString、int、array、double、floatなどいろんなobjectを宣言可能だが今回はシンプルにwebviewのurlを使うためのStringを設定してみる。

1
2
google_url=https://www.google.co.jp
yahoo_url=http://www.yahoo.co.jp


gradle.propertiesに設定をしたらbuild.gradleにも設定をする。

1
2
3
4
5
6
7
8
productFlavors {
  google {
    buildConfigField("String", "MAIN_URL", "\"${google_url}\"")
  }
  yahoo {
    buildConfigField("String", "MAIN_URL", "\"${yahoo_url}\"")
  }
}

第一変数はobjectの種類、第二変数は実際に使う名前、第三変数はgradle.propertiesで設定した名前になる。こういうふうにしたらすぐ使えるようになる。それではwebviewのところで

1
mWebView.loadUrl(MAIN_URL);

こんなにstatic変数のように使う。すると、

yahooのFlavors

googleのFlavors


これの上にアプリの名前も変えてみよう。
gradle.propertiesにアプリの名前に使うStringを設定する。

1
2
3
4
google_url=https://www.google.co.jp
yahoo_url=http://www.yahoo.co.jp
google_appName=Googleアプリ
yahoo_appName=Yahooアプリ

あと、build.gradleに追加します。

1
2
3
4
5
6
7
8
9
10
productFlavors {
  google {
    buildConfigField("String", "MAIN_URL", "\"${google_url}\"")
    resValue "string", "appName", "\"${google_appName}\""
  }
  yahoo {
    buildConfigField("String", "MAIN_URL", "\"${yahoo_url}\"")
    resValue "string", "appName", "\"${yahoo_appName}\""
  }
}

ちなみにbuild.gradleresValueと設定したらリソースとして使用できる。
第一変数はリソースの種類(ここはStringではなく、stringにすることを注意)、第二変数は実際に使う名前、第三変数はgradle.propertiesで設定した名前になる。そしてAndroidManifest@string/appNameとすると、

yahooのFlavors

googleのFlavors

日本語がちゃんと出てこない。

1
2
3
4
5
6
7
8
9
10
productFlavors {
  google {
    buildConfigField("String", "MAIN_URL", "\"${google_url}\"")
    resValue "string", "appName", "\"Googleアプリ\""
  }
  yahoo {
    buildConfigField("String", "MAIN_URL", "\"${yahoo_url}\"")
    resValue "string", "appName", "\"Yahooアプリ\""
  }
}


productFlavorsに直接書いたら、

yahooのFlavors

googleのFlavors


アプリ名も変えられる。でもなんで日本語がうまく出てこないのかの疑問ができたので今度また調べてまとめることにしよう。


参照

http://sakebook.hatenablog.com/entry/2015/11/20/015829 http://ja.stackoverflow.com/questions/31140/androidstudio%E3%81%A7%E5%90%84%E3%83%93%E3%83%AB%E3%83%89%E3%81%AB%E3%81%9D%E3%82%8C%E3%81%9E%E3%82%8C%E3%81%AE%E5%A4%89%E6%95%B0%E3%82%84%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%9C%E3%82%8B