Androidのideaフォルダについて
久しぶりの投稿になってしましました。
今回はAndroidのideaフォルダのファイルについてまとめようと思います。
コミットする際にideaフォルダ内のファイルが変更ファイルとして表示されたときにどうすればいいか迷ったことはありませんか?
まずはどんなファイルがあるのかを知るところから始めましょう!
ideaフォルダ
.ideaフォルダはandroid studioの設定について記述されたもので、ほぼ自動生成されます。
なので、基本的にはコミットする必要はなく、gitignoreに入れてしまっても大丈夫なものが多いです。
しかし、チーム開発する場合、いくつか共有するのを推奨するファイルもあるため少し触れようと思います。
misc.xml
まずは.idea/misc.xmlファイルについてです。
misc.xmlファイルはプロジェクトで使用するJavaSDKのバージョン情報を定義するファイルです。
プロジェクトを複数人で開発する場合には開発者で足並みを揃えた方がいいと思うので、git管理した方がいいと思います。
下記のようなファイルになると思います。ProjectRootManagerでJavaSDKのバージョン情報が定義されています。
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<component name="ProjectRootManager" version="1" languageLevel="JDK_11" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="VisualizationToolProject">
<option name="state">
<ProjectState>
</ProjectState>
</option>
</component>
</project>
ユーザ固有のファイルパスで生成される場合あるのですが、その場合は適宜$PROJECT_DIR$に置き換えましょう。
compiler.xml
.idea/compiler.xmlファイルはコンパイラの設定ファイルです。
コンパイル時のJavaのバージョン情報を定義するファイルなので、misc.xmlと同様にgit管理した方がいいと思います。
また、アノテーションプロセッサのON/OFFの設定もあります。
下記のようなXMLファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="1.8" />
</component>
</project>
bytecodeTargetLevel target="1.8"の部分はPreferencesの Gradleで設定した内容になるはずです。
gradle.xml
.idea/gradle.xmlファイルはGradle設定を定義するXMLファイルです。
Gradleのオプション設定(Preferencesの Gradleの設定)は、主に.idea/gradle.xmlに保存されます。
下記のようにgradleJvmというオプションでGradle JDKの情報を定義しているのでgit管理した方がいいと思います。
<?xml version="1.0" encoding="UTF-8"?>
<project version="1">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="gradleJvm" value="Embedded JDK" />
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
最後に
gitignoreはテンプレートがあり、基本的には従えばいいと思います。 ただし、最小限しか構成されていないので、プロジェクトに応じてカスタマイズするのが望ましいと感じました。