1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Androidアプリ開発探求記(その2)

Last updated at Posted at 2020-08-02

はじめに

今回も前回同様、行き当たりばったりでまったりと実験しつつ、その過程を綴ってみようと思います。

misc.xml の怪

前回は、GitHub 上に repository を作成し、そこに Android project を作ってみました。

Android Studio から生成された直後の Android project を commit したわけなのですが、その後 misc.xml というファイルが何やら妙な差分を生成しているようなのです。

◆ 勝手に書き換わるコード

いろいろ実験してみたところ、どうも Reimport Gradle Projectsync にて書き換えのピンポンが起こっているようでした。

☆ Android project 生成直後

languageLevelJDK_1_7 となっている。

misc.xml
<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 直後

languageLevelJDK_1_8 に変化する。

misc.xml
<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 を実行すると、languageLevelJDK_1_7 に戻る。

misc.xml
<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 のバージョンを設定してみました。

次回も行き当たりばったりで、まったりと実験しつつ、その過程を綴ってみようと思います。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?