はじめに
今回も前回同様、行き当たりばったりでまったりと実験しつつ、その過程を綴ってみようと思います。
misc.xml の怪
前回は、GitHub 上に repository を作成し、そこに Android project を作ってみました。
Android Studio から生成された直後の Android project を commit したわけなのですが、その後 misc.xml というファイルが何やら妙な差分を生成しているようなのです。
◆ 勝手に書き換わるコード
いろいろ実験してみたところ、どうも Reimport Gradle Project と sync にて書き換えのピンポンが起こっているようでした。
☆ Android project 生成直後
languageLevel が JDK_1_7 となっている。
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
☆ Reimport Gradle Project 直後
languageLevel が JDK_1_8 に変化する。
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
☆ sync 直後
sync や Rebuild Project を実行すると、languageLevel が JDK_1_7 に戻る。
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
◆ JDKバージョンを設定してみる
現状では JDK のバージョン情報を指定している個所が無いので、各々の機能が異なる default 値を採用しているという可能性はあり得そうです。ということで、以下のように build.gradle に JDK の設定を入れてみたところ、sync 時に languageLevel が JDK_1_8 になるようになりました。
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
ちなみに、kotlinOptions を単独で設定しても効果はありませんでした。
android {
kotlinOptions {
jvmTarget = '1.8'
}
}
考察
◆ JDK バージョン
とりあえずは、JDK のバージョンを設定すればOKすればよさそうです。
しかし、複数のモジュールで異なる JDK のバージョンを指定している場合どうなんだろうとか、そもそも .gitignore に含めてしまえばいいじゃんとか、いろいろと思うところはあります。
◆ .gitignore
おそらく misc.xml を .ignore に含めてしまっても良さそうに思えるのですが、現状では JDK のバージョンを設定ている状態での実害が確認されているわけではないので、.gitignore に含めるのはやめておくこととします。
コード変更
前回 create_new_android_project ブランチで作業したままなので、新規ブランチを作成して JDK バージョン対応用の差分を作成したいと思います。
◆ pull
☆ pull 失敗例
git pull を実行した時点でエラーになります。
$ git fetch -p
$ git checkout develop
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> develop
☆ upstream の設定
毎回 git pull origin develop とするのはめんどくさいので、develop の upstream を設定します。
$ git branch --set-upstream-to=origin/develop develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
◆ コード追加
☆ feature branch の作成
$ git pull
$ git checkout -b set_jdk_1_8
☆ 変更差分
前回と同様、ちゃんと Pull Request を行ってコード追加を実施します。
branchの後掃除
Pull Request を merge した後に、以下のように後掃除します。
$ git fetch -p
$ git checkout develop
$ git pull
$ git branch -d create_new_android_project # 前回消し忘れてた local branch
$ git branch -d set_jdk_1_8 # 今回削除すべきな local branch
お掃除後の branch の状況。
※ fetch に -p を付けないと、remotes/origin/set_jdk_1_8 のようなリモートへの参照が残り続けます。
$ git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
おわりに
ということで、今回は JDK のバージョンを設定してみました。
次回も行き当たりばったりで、まったりと実験しつつ、その過程を綴ってみようと思います。