除外 - Android Studioプロジェクトのための私の.gitignoreには何が必要ですか?




settings gradle gitignore (20)

Android Studioプロジェクト用の.gitignoreはどのようなファイルが必要ですか?

私はすべての.iml含むいくつかの例を見てきましたが、IntelliJのドキュメントでは、 .imlソース管理に含める必要があると言われています。


Android Studio 0.8.4以降.gitignoreファイルは、新規プロジェクトの開始時に自動的に生成されます。 デフォルトでは、以下が含まれています。

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
build/
/captures

私はこのステートメントに同意しますが、私はこのファイルを変更してビルドする/ビルドする/(これは/ buildと/ app / buildをインクルードする)ので、私のリポジトリのapp / buildのすべてのファイルで終わることはありません。

また、Eclipseからプロジェクトをインポートすると、.gitignoreはコピーされないか、自動的に作成されます。


Android Studio 0.8.4以降.gitignoreファイルは、新規プロジェクトの開始時に自動的に生成されます。 デフォルトでは、以下が含まれています。

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build

Android Studioの場合、バージョンコントロールに保存する必要があるのは、gradleを使用してコマンドラインからアプリケーションをビルドするために必要なファイルだけです。 だからあなたは無視することができます:

  • * .iml
  • 。アイディア
  • ビルドする

ただし、カスタムコードスタイル設定などのIDE設定を保存すると、.ideaフォルダーに保存されます。 これらの変更をバージョン管理で行いたい場合は、IDEAファイルも保存します(* .imlと.idea)。


hereから.gitignoreを生成する最良の方法here


github.com/github/gitignoreはすばらしいコレクションです

Android.gitignore

# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches

# Keystore files
# Uncomment the following line if you do not want to check your keystore files in.
#*.jks

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

JetBrains Supportのこの公式文書には、次のものが含まれている必要があります:

All files under .idea directory except workspace.xml and tasks.xml because
    they store specific user settings
All the *.iml files that can be located in different module directories

また、注意すべきことの他の推奨事項も示しています。


Android Studio 3.0にアップデートコメントに不足しているアイテムを共有してください。

遅い答えが、こことhereの答えのどれも私たちのためのお金hereはなかった...

だから、ここに私たちのgitignoreファイルがあります:

#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Windows thumbnail db
Thumbs.db

# OSX files
.DS_Store

# Android Studio
*.iml
.idea
#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
.gradle
build/
.navigation
captures/
output.json 

#NDK
obj/
.externalNativeBuild

Android Studio 2.2以降では、このgitignoreファイルを使用して新しいプロジェクトが作成されます。

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild

廃止予定 - 古いプロジェクト形式の場合は、このセクションをgitignoreファイルに追加してください:


/*/out
/*/*/build
/*/*/production
*.iws
*.ipr
*~
*.swp

このファイルは、プロジェクトのモジュールフォルダ内ではなく、プロジェクトのルートフォルダに配置する必要があります。

ノートの編集:

  1. バージョン0.3以降では、 * .imlファイルとbuild.gradleファイルをコミットしてプッシュすることができます。 あなたのプロジェクトがGradleに基づいている場合:新しいオープン/インポートダイアログで、 "use auto import"チェックボックスをチェックし、 "use default gradle wrapper (recommended)"ラジオボタンを選択する必要があります。 @Georgeの提案どおり、すべてのパスが相対パスになりました。

  2. @ 128KBの添付ソースと@Skela提案に基づいて更新された回答


更新済み7/2015:

JetBrains最終的な情報源はここにあります

ディレクトリベースのプロジェクト形式(.ideaディレクトリ)

この形式は、デフォルトですべての最近のIDEバージョンで使用されます。 あなたが共有する必要があるものは次のとおりです:

  • プロジェクト固有の設定を格納するtasks.xmlファイルとtasks.xmlファイル以外のプロジェクトルートの.ideaディレクトリ下のすべてのファイル
  • 異なるモジュールディレクトリに配置できるすべての.imlモジュールファイル(IntelliJ IDEAに適用されます)

以下を共有することには注意しください

  • 署名付きビルドを生成するAndroidの成果物(キーストアのパスワードが含まれます)
  • IDEA 13以前のdataSources.idsでは、 datasources.xmlにデータベースのパスワードを含めることができます。 IDEA 14はこの問題を解決します

あなたは以下を共有しないと考えるかもしれません:

  • gradle.xmlファイル、 このディスカッションを参照してください
  • ユーザー辞書フォルダ(他の開発者が同じ名前を持つ場合、競合を避けるため)
  • Gradleプロジェクトから生成された場合の.idea/libraries下のXMLファイル

従来のプロジェクト形式( .ipr / .iml / .iwsファイル)

  • プロジェクト.iprファイルとすべての.imlモジュールファイルを共有し.iwsファイルを共有しないください。ユーザー固有の設定が保存されています

これらの手順はIntelliJ IDEAのためのものですが、Android Studioの場合は100%となります。

上記のすべてのルールを組み込んだ.gitignoreスニペットを以下に示します。

# Android Studio / IntelliJ IDEA 
*.iws
.idea/libraries
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml

あなたのプロジェクトフォーマットがどのように維持されているかによって異なります:

あなたには2つの選択肢があります:

  1. ディレクトリベースのフォーマット(プロジェクト固有のファイルを含む.ideaフォルダがあります)
  2. ファイルベースのフォーマット(設定ファイルは.iwsおよび.ipr

Ref: http://www.jetbrains.com/idea/webhelp/project.html : http://www.jetbrains.com/idea/webhelp/project.html

バージョン管理にコミットされたファイルは上記に依存します:

  1. バージョン管理に.ideaフォルダを含め、 workspace.xmltasks.xml
  2. バージョン管理の.iprファイルとすべての.imlモジュールファイルを削除するには、ユーザー固有の設定を格納する.iwsファイルを除外します。

Ref: https : //intellij-support.jetbrains.com/entries/23393067


どこからでもあらかじめ定義された(コピー/貼り付け)リストのために何らかの理由でバージョンコントロールが動作しない場合、未知の副作用を防ぐために開発時間を通して.gitignoreリストを追加することが最善です。 私のプロジェクトの1つでは、無視リストは以下のものだけです:

.gradle
.idea
libs
obj
build
*.log

ソースコントロールに次のいずれかを追加する必要はありません。

.idea/
.gradle/
*.iml
build/
local.properties

したがって、hgignoreまたはgitignoreを適宜設定することができます。

開発者がソースコントロールを初めてクローン化すると次のようになります。

  1. Android Studioを開く
  2. プロジェクトのインポート
  3. クローンされたリポジトリ内のbuild.gradleを参照して開きます

それで全部です

PS:Android Studioは、build.gradleが次のようになっていると仮定して、mavenを通じてgradleプラグインを取得します:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

Androidスタジオは.ideaフォルダの内容( 生成されるため、ソース管理に含まれないworkspace.xmlを含む)と.gradleフォルダのコンテンツを生成します。

このアプローチは、ソースコントロールがAndroid Studioについて実際に何も知らないという点でEclipseに優しいです。 Android Studioでは、プロジェクトをインポートして残りの部分を生成するためにbuild.gradleが必要です。


基本的に自動的に再生成されるファイル。

良いテストはあなたのレポをクローンし、Android Studioがあなたのプロジェクトを即座に解釈して実行できるかどうかを確認することです(欠落しているものを生成する)。
そうでない場合は、欠けているものを見つけ、それ無視されていないことを確認します 、レポに追加されます。

つまり、 Androidのような既存の.gitignoreファイルを例に取ることができます。

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/

私の普通のAndroidの.gitignoreをビルドし、Intellij IDEAのWebサイトのドキュメントやの記事を読んだ後、私は次のファイルを作成しました:

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# built native files (uncomment if you build your own)
# *.o
# *.so

# generated files
bin/
gen/

# Ignore gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Eclipse Metadata
.metadata/

# Mac OS X clutter
*.DS_Store

# Windows clutter
Thumbs.db

# Intellij IDEA (see https://intellij-support.jetbrains.com/entries/23393067)
.idea/workspace.xml
.idea/tasks.xml
.idea/datasources.xml
.idea/dataSources.ids

また、指摘したように、 ビルドされたネイティブファイルセクションは、Android NDKを使用して独自のネイティブコードを構築する場合に主に役立ちます。 一方、これらのファイルを含むサードパーティのライブラリを使用している場合は、.gitignoreからこれらの行(* .oと* .so)を削除することをお勧めします。


私は.ideaフォルダのコミットをサポートしています( workspace.xmltasks.xmlを除く)。 しかし、私は結論に達し始めています.imlファイルは無視する必要があります。

ここに問題があります:

たとえば "foo"という名前のディレクトリでプロジェクトを開くと、foo.imlが表示され、すべてうまくできているようです。 問題は、Android Studioでプロジェクトを開こうとすると、ディレクトリをfoo2(または別のディレクトリ名に複製)という名前に変更した場合、次の3つのことが起こることです。

  • foo2.imlという名前の新しいimlファイル
  • あなたのAndroidプロジェクトのimlファイルは、親としてfoo2をポイントするように変更されます
  • .idea / modules.xmlにfoo2.imlの行が追加されるので、古いimlファイルと新しいディレクトリの両方があります

私は、プロジェクトが別のディレクトリに格納されているときに、Android Studioがこのimlファイルの生成を行わないようにする方法はありません。 それらをソース管理に追加すると、問題が発生します。 したがって、おそらく私たちは* .imlファイルと.idea/modules.xml無視するべきだと思います


私はGithub .gitignoreファイルをマージする

### Github Android.gitignore ### 

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

### Github JetBrains.gitignore ### 

# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties

JetBrainsのサポート:バージョン管理システムでプロジェクトを管理する方法



私はこれらすべての答えに同意しません。 次の設定は、組織のアプリにとって非常に効果的です。

私は無視する:

  • /build
  • /.idea (可能な例外を除いて、 dalewkingの答えのコメントを参照)
  • *.iml
  • local.properties

私はほとんど誰もが約同意して/buildすると思います。

私はGradleが/.idea作成または削除するさまざまなlibrary.xmlファイルに関するメッセージを絶えず見ているのが/.ideaです。 build.gradleはプロジェクトを最初にチェックアウトしたときに開発者のローカルで実行されるため、なぜこれらのXMLファイルをバージョン管理する必要がありますか? Android Studioは、開発者がCheck out from Version Controlを使用してプロジェクトを作成すると、/. /.ideaの残りの部分も生成するため、そのフォルダ内のすべてのバージョンをバージョン化する必要がありますか?

*.imlがバージョン管理されている場合、新規ユーザーはコミット時とまったく同じ名前を付けなければなりません。 これも生成されたファイルなので、なぜ最初にバージョン化するのですか?

local.propertiesファイルは、SDKのファイルシステム上の絶対パスを指しています。 local.properties 、絶対にバージョン化するべきではありません。

編集1.gradleをバージョン管理されていないはずの.gradleキャッシングのものを無視するように追加しました( Vasily Makarovに感謝します)。

編集2 :Macを使用しているので、 .DS_Store追加しました。 このフォルダはMac固有のものであり、バージョン管理しないでください。

追加の注意 :リリース版をビルドするときに、署名キーを入れるディレクトリを追加したいと思うかもしれません。

コピー/ペーストの利便性のために

.gradle
/build
/.idea
*.iml
local.properties
.DS_Store 

私はビルドファイルを無視することに問題がありましたが、これはうまくいくようです:-)

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Android Studio
.idea/
.gradle
/*/local.properties
/*/out
/*/*/build
/*/*/production
*.iml
*.iws
*.ipr
*~
*.swp

*/build
*/production
*/local.properties
*/out

Githubは、さまざまな種類のプロジェクトに有用なgitignore項目を保持しています。ここにアンドロイドプロジェクトの役に立つgitignoreのリストがあります。

# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# Intellij
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/libraries

# Keystore files
*.jks

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

Android Gitignore in github


    ### Github Android.gitignore ### 

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

### Github JetBrains.gitignore ### 

# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries

# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties




gitignore