Що має бути в моєму .gitignore для проекту Android Studio?


1255

Які файли мають бути в моєму .gitignoreпроекті Android Studio?

Я бачив кілька прикладів, які включають усі .imlдокументи, однак документи IntelliJ кажуть, що вони .imlповинні бути включені до вашого керування джерелами.


Відповіді:


1330

Оновлено до Android Studio 3.0. Будь ласка, поділіться відсутніми елементами у коментарях.

Пізня відповідь, але жодна з відповідей тут і тут не була правильною на гроші для нас ...

Отже, ось наш файл 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 і до 3.0, з цим файлом 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


8
Чому нам потрібно імпортувати проект і вручну додавати залежності libs та module? Чи є спосіб зберегти ці речі в репо, і коли ми клонуємо репо, просто робимо проект відкритим?
Джастін

13
Правильний спосіб зробити це - перевірити файли * .iml та * .ipr та просто відкрити їх у IDE. Навіщо змушувати інших людей у ​​вашій команді відтворювати ці файли та чому дозволяти їм використовувати, можливо, неправильні налаштування (наприклад, sdk версія)?
Sky Kelsey

26
@liorry, я не згоден. Це перша відповідь, яку побачать інші люди, і вона масово голосується. Зважаючи на все, що вам потрібно зробити, щоб розпочати проект після свіжого клону від git, використовуючи саме цю. Хоча я здогадуюсь, що кількість голосів наголошує мені інакше, але я все одно не згоден. Принаймні, можливо, якась інформація, що вказує на те, що вам, швидше за все, доведеться знову налаштувати проект, і він не вийде нестандартним.
Скела

10
@ liorry, я не маю на увазі грубість чи щось подібне, будь ласка, не сприймайте це особисто. Проблема полягає в тому, що ці речі повинні працювати з мінімальною кількістю налаштувань, щоб мати практичну користь. Коли вам потрібно імпортувати проект і вручну додати залежності модуля, він негайно вводиться у царство лунатизму. Коли ви знайомі з проектом і знаєте ці речі зсередини, то з вашим підходом не виникає жодних проблем. Але для розробника, який клонує проект вперше, його просто не так вже й практично. Я справді просто намагаюся переконатись, що ваш підхід не став нормою, яка у всіх.
Скела

14
Ви не повинні розміщувати версії .imlфайлів, якщо ви не хочете мати справу з зайвими роздратуваннями, якщо інші користувачі називають проект по-іншому, коли вони перевіряють його.
theblang

151

На основі мого звичайного .gitignore для Android. Після прочитання документації на веб-сайті Intellij IDEA та читання публікацій на StackOverflow я створив такий файл:

# 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. Якщо, з іншого боку, ви використовуєте сторонню бібліотеку, яка включає ці файли, ви можете видалити ці рядки (* .o та * .so) зі свого .gitignore.


10
Майже правильно. Я не вважаю, що не варто ігнорувати *. Тому, що ви не зможете працювати з проектами, які пов’язані залежностями від бібліотек NDK. Але дуже хороша відправна точка з усіх рахунків!
Скела

@Skela хороший момент. У мене це було з тих пір, коли я створював свої власні рідні файли - але я також працював над проектами, для яких потрібна проста копія та вставлення попередньо вбудованих файлів. Я додав примітку про це до відповіді вище.
Філ-

@Phil Чи є у вас думки щодо файлів XML .idea/libraries? Чи слід їх поділяти чи виключати на вашу думку?
Алекс Локвуд

1
@AlexLockwood Я думаю, що ці файли повинні бути включені, якщо проект не залежить від іншого проекту чи модуля. Якщо, однак, проект залежить від модуля, який містить бібліотеки, то цей файл слід ігнорувати на рівні проекту, а не модулем.
Філ

@Phil дуже крутий, і я використовував це до цих пір, але файл Dex прослизає через тріщини: /moduledirectory/build/intermediates/dex-cache/cache.xml - чи не було б сенсу додавати ** / build для того, щоб виключити також папки збірки в модулях?
Олівер Хауслер

82

Оновлено 7/2015:

Ось остаточне джерело від JetBrains


Формат проекту на основі каталогів (.idea каталог)

Цей формат використовується за замовчуванням у всіх останніх версіях IDE. Ось що вам потрібно поділитися:

  • Всі файли в .ideaдиректорії в корені проекту , за винятком тих workspace.xmlі tasks.xmlфайлів , які налаштування конкретних зберігання призначених для користувача
  • Усі .imlфайли модулів, які можуть бути розміщені в різних каталогах модулів (стосується IntelliJ IDEA)

Будьте уважні до спільного використання наступного:

  • Артефакти Android, які створюють підписану збірку (міститимуть паролі зберігання ключів)
  • В IDEA 13 і більш ранні версії dataSources.ids, datasources.xmlможуть містити паролі баз даних. IDEA 14 вирішує цю проблему .

Ви можете розглянути наступне:

  • Файл gradle.xml, дивіться це обговорення
  • папка словників користувачів (щоб уникнути конфліктів, якщо інший розробник має те саме ім'я)
  • XML-файли .idea/librariesу випадку, якщо вони генеруються з проекту Gradle

Старий формат проекту ( .ipr/ .iml/ .iwsфайли)

  • Поділіться .iprфайлом проекту та всіма .imlфайлами модулів, не діліться цим .iwsфайлом, оскільки він зберігає налаштування користувача

Хоча ці інструкції призначені для IntelliJ IDEA, вони справжні 100% для Android Studio.


Ось .gitignoreфрагмент, який містить усі перераховані вище правила:

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

Які SDK підтримуються, визначено в AndroidManifest.xml (а також Gradle). Будь-який SDK, дозволений цим налаштуванням, повинен бути нормальним для розробки. Щодо стилів коду: це не те, що потрібно підтримувати в кожному проекті окремо, і, крім того, його слід з’ясувати незалежно від IDE. Заголовки авторських прав: сподіваємось, вони знаходяться у вашій кодовій базі, а не в будь-яких файлах проекту IDE. Інакше будівництво на командному рядку їх просто не включатиме ...
Risadinha

@Risadinha 1) SDK визначаються також на рівні IDE. На них посилається в Manifest, але файл проекту містить фактичні визначення SDK. 2) Стиль коду слід підтримувати НАЙКРАЩО на рівні проекту. В ідеалі кожен писав би стандартну Java, але так добре. 3) Заголовки авторських прав зберігаються в проекті. Вони використовуються для створення нових файлів і можуть містити макроси для імені, назви компанії, проекту, дати тощо. Я рекомендую перевірити їх! Підсумовуючи, файли проектів містять важливу мета-інформацію про проект, яку потрібно ділити та контролювати в команді.
Sky Kelsey

3
Супроводжувач змінив зміни до власного репо . Напевно, скоро його втягнуть у майстра.
FalconC

5
JetBrains припинив DOC-1186 і розмістив їх оновлені рекомендації в новому дописі : DO INCLUDE: Усі файли, що знаходяться в каталозі .idea в корені проекту, крім робочої області.xml та task.xml та всіх файлів .iml. Будьте уважні під час спільного використання артефактів Android, які створюють підписану збірку (міститимуть паролі зберігання ключів), dataSources.ids та datasources.xml (вони можуть містити паролі). ВИСНОВОК ВИКЛЮЧИТИ: gradle.xml, папка словників користувачів та файли XML під .idea / бібліотеками (у випадку, якщо вони генеруються з проекту Gradle).
JSmitty

2
Це прекрасна теорія, але це просто не працює для нас. Ми послідовно закінчуємо файли .iml із такими записами: <orderEntry type="jdk" jdkName="1.6 (38)" jdkType="JavaSDK" />Зауважте, що число 38, яке, здається, постійно збільшується. (у файлі misc.xml також є ця проблема).
Сем

41

Я не згоден з усіма цими відповідями. Наступна конфігурація чудово працює для програми нашої організації.

Я ігнорую:

  • /build
  • /.idea(з можливими винятками, дивіться коментарі у відповіді dalewking )
  • *.iml
  • local.properties

Я думаю, майже всі згодні з цим /build.

Мені стало нудно постійно бачити повідомлення про різні library.xmlфайли, які Gradle створює або видаляє /.idea. build.gradleПрацюватиме на розробник Місцевого , коли вони спочатку перевірити проект, то чому ці XML файли повинні бути версірованнимі? Android Studio також буде генерувати решту часу, /.ideaколи розробник створює проект, використовуючи Check out from Version Control, так навіщо потрібно робити все, що в цій папці?

Якщо версія *.imlмає версію, новому користувачеві доведеться назвати проект таким же чином, як це було під час вчинення. Оскільки це також генерований файл, навіщо його версію в першу чергу?

Ці local.propertiesфайли вказує на абсолютний шлях в файлової системі для SDK, так що це, безумовно , не повинно бути версірованнимі.

Редагувати 1 : Додано .gradleдля ігнорування матеріалів кешування Gradle, на які не слід розбиратись (дякую Василю Макарову ).

Редагування 2 : Додано .DS_Storeзараз, коли я використовую Mac. Ця папка специфічна для Mac, і її не слід переробляти.

Додаткова примітка . Ви, ймовірно, також хочете додати каталог, щоб вставити ключі підпису під час створення версії.

Для зручності копіювання / вставки :

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

4
Я згоден з вашою відповіддю. Я також вважаю , що ні * .iml або .idea файли повинні бути версіоніруются: stackoverflow.com/a/26290130/2948212
diegosasw

7
Я голосую за твій гітгнор, оскільки він дуже схожий на моє. Пара пропозицій: Використовуйте build/замість того, /buildщоб збігати модуль для створення таких ріжків app/build. Використовуйте .gradleдля відповідності каталогу кешування gradle.
Василь Макаров

Я також сумніваюсь, чому списки gitignore за замовчуванням / будувати замість build / я закінчую всі файли в додатку / build у моєму сховищі, якщо я використовую / build
guyland123

@ guyland123 Щойно я помітив, що .gitignoreу мене в каталозі додатків є ще один файл, який також містить /build. Це автоматично генерується, я не пам'ятаю? Так build/буде застосовано до папок?
theblang

@mattblang так.. gitignore створюється автоматично під час створення нового проекту. Однак він не створюється, коли ви імпортуєте проект із кажуть Eclipse. build / відповідатиме всім каталогам з назвою "build" під розташуванням файлу .gitignore. Напр. додаток / збірка буде проігноровано
guyland123

37

Я використовую цей .gitignore. Я знайшов це за адресою: http://th4t.net/android-studio-gitignore.html

*.iml
*.iws
*.ipr
.idea/
.gradle/
local.properties

*/build/

*~
*.swp

1
* / build / не ігнорує незмінені файли в моєму каталозі збирання якісь ідеї? @ Рішено: мені довелося додати * / * / build /, оскільки моя папка збірки була парою каталогів.
speedynomads

35

У випадку з Android Studio єдині файли, які потрібно зберегти в контролі версій, - це файли, необхідні для складання програми з командного рядка за допомогою gradle. Тож ви можете ігнорувати:

  • * .iml
  • .idea
  • будувати

Однак якщо ви збережете будь-які налаштування IDE, наприклад налаштування стилю коду, вони зберігаються у папці .idea. Якщо ви хочете, щоб ці зміни в контролі версій, тоді ви також збережете файли IDEA (* .iml та .idea).


3
Дякуємо, що пояснили це. З того, що я прочитав, якщо ви збираєтесь включити .idea у свій проект, ви повинні проігнорувати * /. Idea / workspace.xml та * /. Idea / task.xml
respectTheCode

15
поки не ігноруйте папку .idea. Плагін Gradle ще не має жодної задачі "ідея gradle", і імпорт проекту в Android Studio зараз далеко не ідеальний.
robotoaster

2
Крім того, якщо ви працюєте в команді, розглядайте можливість ігнорування local.properties, оскільки вона містить жорсткий код коду sdk.
Калін

@robotoaster, все ж рекомендуєте не ігнорувати папку .idea?
loeschg

@Ioeschg більше не потрібно. якщо ви замовляєте чистий git repo, використовуйте Import New Project, і він повинен працювати нормально, доки існують файли збірки.
robotoaster

20

Android Studio 3.4

Якщо ви створюєте проект Gradle за допомогою Android Studio, .gitignoreфайл міститиме наступне:

.gitignore

*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild

Я рекомендую ігнорувати повний каталог ".idea", оскільки він містить специфічні для користувача конфігурації, нічого важливого для процесу збирання.

Папка проекту Gradle

Єдине, що повинно бути у вашій папці (Gradle) проекту після клонування сховища - це ця структура (принаймні, для випадків використання, з якими я стикався до цього часу):

app/
.git/
gradle/
build.gradle
.gitignore
gradle.properties
gradlew
gradle.bat
settings.gradle

Рекомендується зареєструвати сценарії обгортки gradle (див. Тут ).

Щоб зробити файли Wrapper доступними для інших розробників та середовищ виконання, вам потрібно перевірити їх у контролі версій.


1
Чому слід зберігати такі файли, як gradlew та gradle.bat?
Більтон

2
@Bilthon Вони не є бінарними файлами. Вони є сценаріями запуску gradle для Windows (gradle.bat) та Linux (gradlew).
Віллі Менцель

Ой .. Я бачу, ти маєш рацію, але хіба вони взагалі не автогенеруються?
Більтон

2
@Bilthon Дійсно, вони є! Вони генеруються за допомогою параметрів за замовчуванням. Якщо ви щось зміните, вони повинні бути включені у ваше сховище, щоб правильно створити його під час перевірки свіжого. Вони такі маленькі, що не завадить завжди тримати їх.
Віллі Менцель

2
Тут також перевірте цей офіційний ресурс, який прямо рекомендує привласнити
friederbluemle

19

Моя порада буде також не ігнорувати папку .idea.

Я імпортував проект Eclipse на основі Git в Android Studio, і це вийшло нормально. Пізніше я хотів імпортувати цей проект з Git (як і вперше) на іншу машину з Android Studio, але це не вийшло. Android Studio завантажив усі файли, але не зміг "бачити" проект як проект. Я тільки міг відкривати Git-файли.

Під час першого імпорту проекту (від Eclipse до Android Studio) мій старий .gitignore був перезаписаний, а новий виглядав так:

  • .idea / .name
  • .idea / compiler.xml
  • .idea / copyright / profile_settings.xml
  • .idea / encodings.xml
  • .idea / бібліотеки / libs.xml
  • .idea / misc.xml
  • .idea / module.xml
  • .idea / scopes / obseg_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

Отже, я спробував використати порожній гітігнор і зараз це спрацювало. Інша Android Studio може завантажувати файли та Проект. Я думаю, що деякі файли не важливі (profiles_settings.xml)для Git та імпорту, але я просто радий, що це працювало.


Від github.com/joeblau/gitignore.io/isissue/… : erge Baranov (IntelliJ) 26 вересня, 14:23 CEST Це залежало б від проекту. Якщо проект імпортується з Maven або Gradle, файли .iml генеруються автоматично і не можуть бути спільними для доступу, інакше ці файли є важливими для проекту і повинні бути спільними для того, щоб інші користувачі могли відкрити проект після оформлення замовлення. .iml файли містять усю інформацію про конфігурацію модуля (корені, папки джерел, залежності тощо).
Адріан Романеллі

9

Це найкращий спосіб зробити .gitignoreчерез тут


1
Я не можу зробити цю роботу для Android Studio. Якщо я просто виберу "android", здається, це реалізація Eclipse. Чи я це роблю неправильно?
zipzit

Єдина згадка про Eclipse - це один рядок: "Папка Proguard, породжена Eclipse". Решта здається нормальною для AS
Jose_GD

@zipzit, можливо, ти маєш рацію. Здається, що сайт створює .gitignore не для Android Studio, оскільки він не містить .idea /.
CoolMind

1
Опція для Android Studio також
Даніял Джаваід

8

НЕ ПОТРІБНО додати до джерела управління будь-яке з наведеного нижче:

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

Таким чином, ви можете налаштувати hgignore або gitignore відповідно.

Перший раз, коли розробник клонує джерело управління, може перейти:

  1. Відкрийте Android Studio
  2. Імпортний проект
  3. Перегляньте build.gradle в клонованому сховищі та відкрийте його

Це все

PS: Android Studio потім через Maven отримає плагін gradle, припускаючи, що ваш build.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 (включаючи робочу область.xml, яка не повинна знаходитись у контролі джерела, оскільки вона створена ) та папки .gradle.

Цей підхід є Eclipse-підходящим, оскільки джерело управління насправді нічого не знає про Android Studio. Android Studio просто потребує build.gradle, щоб імпортувати проект та генерувати інше.


5
Хлопці, ті, хто голосує негативно, повинні надати поважну причину для цього. Може бути корисним, щоб ми / всі знали, якщо ми помиляємось з нашою відповіддю.
diegosasw

1
There is NO NEEDтак, є деякі випадки: шаблони авторських прав, якими потрібно ділитися між членами команди, наприклад.
Анріке де Суса

8

Я підтримую створення папки .idea (виключаючи workspace.xmlта tasks.xml). Але я починаю робити висновок, що файли .iml слід ігнорувати.

Ось питання:

Наприклад, відкрийте проект у каталозі з назвою "foo", і ви отримаєте foo.iml, і все це здається добре. Проблема полягає в тому, що якщо я просто перейменую каталог на foo2 (або клоную його до іншого імені каталогу), коли ви спробуєте відкрити проект в Android Studio, ви отримаєте три речі:

  • Новий iml-файл під назвою foo2.iml
  • Файл iml для вашого проекту Android буде змінено, щоб тепер вказати на foo2 як його батьків
  • .idea / module.xml буде доданий рядок для foo2.iml, тому він має як старий файл iml, так і новий для нового каталогу

Я не можу знайти спосіб перешкодити Android Studio робити це створення файлу IML, коли проект зберігається в іншому каталозі. Додавання їх до керування джерелом спричинить проблеми. Тому я думаю, можливо, ми повинні ігнорувати * .iml файли та.idea/modules.xml


Я ігнорую /.ideaі .imlфайли, і файли. Я хотів би почути, чому .ideaпапку слід вводити.
theblang

Дивлячись на мій поточний проект, я здогадуюсь, що я зареєструвався лише з 2-х речей, які я зареєстрував у налаштуваннях стилю коду .idea /: для виконання команди та словника користувача, що містить слова, характерні для проекту, які не є реальними словами. Я почав із багатьох файлів у .idea, зроблених, але коли файл починає відображатися як змінений без поважних причин, він буде доданий до .gitignore. Моя думка полягала не в тому, що .idea повинен бути зареєстрований, як це було сказано .iml файлів і module.xml не повинно бути.

Вибачте, так я прийняв коментар ще до того, як я закінчився з цим (треба пам’ятати, що коментарі не приймають розривів рядків) Відредаговано з рештою моїх думок.

Дякую! Так, ті файли, які ви згадали, мають сенс. Я погоджуюся, найбільшим головним болем були library.xmlфайли, які постійно викликали повідомлення. Крім того, я не розумію, чому я продовжую бачити, як люди кажуть, що * .iml файли повинні бути включені, тому велике значення там.
theblang

8

Тестовано на Android Studio 3.0

Можливо, вам доведеться встановити плагін .ignore .

Ви можете автоматично генерувати .gitignore файл для Android. Клацніть правою кнопкою миші на папці та виконайте наступні дії

Додати файл .gitignore

Потім виберіть Android на лівій панелі та натисніть кнопку Створити

Створити файл .gitignore

Android Studio створить файл .gitignore, який містить усі файли, які потрібно ігнорувати.

Взято з http://menukanows.com/how-to-add-gitignore-file-in-android-project/


7

Залежить від того, як підтримується формат вашого проекту:

У вас є два варіанти:

  1. Формат на основі каталогів (у вас буде .ideaпапка, яка містить файли, визначені для проекту)
  2. Формат на основі файлів (конфігураційні файли є .iwsта .ipr)

Посилання: http://www.jetbrains.com/idea/webhelp/project.html

Файли, присвячені контролю версій, залежать від вищезазначеного:

  1. Додайте папку .idea до контролю версій, виключіть workspace.xmlі tasks.xml
  2. .iprФайл управління версіями та всі .imlфайли модулів, виключаючи .iwsфайл, оскільки він зберігає конкретні налаштування користувача.

Довідка: https://intellij-support.jetbrains.com/entries/23393067


1
У всіх моїх проектах, здається, є і папки .idea, і .iws файли
respeTheCode

1
Особисто я спробував дотримуватися порад від JetBrains, але це не спрацювало для мене. Я та ще один розробник користуємося Android Studio, і у нас був файл .idea та .iml в git. Невдовзі я дізнався, що коли ви починаєте об’єднувати коміти та потрапляти на всілякі проблеми, коли інструмент злиття не зможе об'єднати жоден з файлів у .idea шляху. В результаті я додав всі імли та .idea до gitignore. Зрештою, Studio дуже добре справляється зі створенням структури проекту при імпорті проекту Gradle. Тож тепер я просто приділяю пильну увагу тому, що я маю у своїх файлах gradle.
zmicer

5

В основному будь-який файл, який автоматично відновлюється.

Хороший тест - це клонувати репо-репортаж і перевірити, чи здатна Android Studio негайно інтерпретувати та запускати ваш проект (генеруючи те, чого не вистачає).
Якщо ні, знайдіть те, чого не вистачає, і переконайтеся, що його немає ігнорується, а додається до репо.

При цьому, ви можете взяти приклад для існуючих .gitignoreфайлів, таких як Android .

# 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/

11
Це неправильно. Ви повинні перевірити свої * .iml файли, і, швидше за все, також .idea та * .ipr. Частина "все, що автоматично генерується" особливо неправильно. Більшість проектів Android зрештою автоматично генеруються.
Sky Kelsey

6
* .Iml, * .idea та * .ipr специфічні для Android-Studio / IntelliJ. Вони не потрібні для побудови проекту. Оскільки вони специфічні для IDE, а не для ланцюгів побудови, вони, ймовірно, не повинні бути зареєстровані. Кожен може використовувати будь-яку IDE, немає причин перевіряти файли проекту IntelliJ, а не Eclipse, наприклад.
Марк Плано-Лесей

2
Якщо ви хочете працювати на декількох вилах одного проекту або в команді, де всі використовують один і той же IDE, або контролюють версії складних налаштувань, які ви використовуєте для своєї IDE, тоді так, ви повинні перевірити файли в. Файли проекту для IntelliJ набагато більше, ніж простий пух, який використовується для відкриття коду в редакторі.
Sky Kelsey

2
чому мої файли iml продовжують відображатися як змінені між мною та моїм колегою? зокрема external.root.project.path постійно змінюється під тегом <module />
Sam

Використовуючи Android Studio 0.8.12 для Windows 8.1 та OS X Mavericks із тим самим проектом, я помічаю, що наступні два файли змінюються та позначаються як змінені Git під час відкриття проекту: <ім'я проекту> .iml та .idea \ misc.xml Зокрема: <ludeFolder url = "файл: // $ MODULE_DIR $ / build / tmp" /> додається або видаляється в / з <ім'я проекту. ОС.
jkwuc89

4

Я кошерно додаю .iml файли та Intellij sez, щоб додати папку .idea, але ігнорую .idea / workspace.xml та .idea / task.xml, а як щодо .idea / бібліотеки /?

Я не бачу, як має сенс додати це. У ньому є список файлів XML, у яких перелічені бібліотеки, про які, як передбачається, знає проект Android Studio. Вони повинні надходити замість визначених build.gradle залежностей, а не файлів проекту IDE.

Також вміст одного з цих файлів виглядає так:

<component name="libraryTable">
    <CLASSES>
       <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.example/example/etc...jar!"/>

Не має сенсу цього робити. Що робити, якщо користувач вказав інший домашній dir для gradle, або якщо він використовує іншу версію gradle, шлях під.gradle/caches/artifacts-xxx цим буде для них іншим (тобто artifacts-число, додане в кінці, буде стосуватися випуску версії Gradle, яке ви використовуєте. ) Ці шляхи не є універсальними, і все ж порада перевірити все це?


4

Станом на Android Studio 0.8.4 .gitignoreфайл створюється автоматично при запуску нового проекту. За замовчуванням він містить:

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

3

Я знаю, що це стара тема, і варіантів, безумовно, дуже багато, але я справді віддаю перевагу giboСаймону Вітакеру. Це дуже просте у використанні, крос-платформне (mac, * nix та windows), і використовує github gitignorerepo, тому воно (в основному) завжди актуальне.

Переконайтесь, що ваш локальний кеш оновлений:

    $ gibo --upgrade
    From https://github.com/github/gitignore
     * branch            master     -> FETCH_HEAD
    Current branch master is up to date.

Шукайте потрібну мову / технологію:

    $ gibo --search android
    Android

Відобразити файл .gitignore:

    $ gibo Android
    ### Android

    # 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

Тепер додайте його до .gitignore файлу вашого проекту:

    $ gibo Android >> .gitignore

(Переконайтеся, що ви >>додаєте до файлу .gitignore вашого проекту; один> його перезапише - як я багато разів робив випадково!)

Я знаю, що це не відповідає точним питанням ОП, але використання gibo робить це так, що вам майже не доведеться більше думати про "питання"! .. Це гарно! ;)


3

Для кращого уявлення вам потрібно лише наступні файли

  • додаток
  • build.gradle
  • settings.gradle

Основна структура проекту Android

Все інше можна помістити у файл .gitignore. Усі зміни вашої програми в основному полягають у цих файлах і папках. Решта, яку ви бачите в базовому проекті - це файли збірки gradle або файли конфігурації Android Studio.

Якщо ви використовуєте Android Studio, ви можете використовувати "Імпорт проекту" для успішного складання проекту. Крім того, ви можете будувати за допомогою командного рядка, дотримуйтесь Створення проектів Android за допомогою Gradle .


3

Найкраще скласти список .gitignore через час розробки, щоб запобігти невідомому побічному ефекту, коли версія Control чомусь не працюватиме через попередньо визначений (скопіювати / вставити) список десь. Для одного з моїх проектів список ігнорування складається лише з:

.gradle
.idea
libs
obj
build
*.log

3

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 в github


3
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
imtheman

@imtheman правдоподібно .. Я оновив відповідь і поставив посилання як посилання
Sudip Bhandari

2

Я зливаю файли 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: як керувати проектами в системах управління версіями


2
Станом на 2016 рік, я відповідаю цій відповіді як найбільш близькій до наших потреб. Спасибі
Анріке де Суса

2

Використовуючи api, наданий gitignore.io , ви можете отримати автоматично генерується. Ось пряме посилання також gitignore.io/api/androidstudio

### AndroidStudio ###
# Covers files to be ignored for android development using Android Studio.

# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle
.gradle/
build/

# Signing files
.signing/

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

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio
/*/build/
/*/local.properties
/*/out
/*/*/build
/*/*/production
captures/
.navigation/
*.ipr
*~
*.swp

# Android Patch
gen-external-apklibs

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

# NDK
obj/

# IntelliJ IDEA
*.iml
*.iws
/out/

# User-specific configurations
.idea/caches/
.idea/libraries/
.idea/shelf/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
.idea/datasources.xml
.idea/dataSources.ids
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
.idea/assetWizardSettings.xml

# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.war
*.ear

# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*

## Plugin-specific files:

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Mongo Explorer plugin
.idea/mongoSettings.xml

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

### AndroidStudio Patch ###

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.gitignore.io/api/androidstudio

1

Станом на Android Studio 0.8.4 .gitignore файл генерується автоматично при запуску нового проекту. За замовчуванням він містить:

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

Я погоджуюся з цим твердженням, однак я модифікую цей файл, щоб змінити / скласти для складання / (Це буде включати / build та / app / build) Тому я не закінчую всі файли програми / build у моєму сховищі.

Зауважте також, що якщо ви імпортуєте проект із Eclipse, .gitignore не буде скопійовано або створено "автоматично" для вас.


0

Збірка:

#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Gradle files
.gradle/
build/
/*/build/

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

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Windows thumbnail db
Thumbs.db

# OSX files
.DS_Store

# Eclipse project files
.classpath
.project

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

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

0

Щоб обійти імпорт усіх файлів, де Android Studio ігнорує список "Ігноровані файли", але все-таки використовує Android Studio VCS, я зробив наступне: Це використовуватиме список "Ігноровані файли" з Android Studio (після імпорту! Не під час) І уникайте необхідності використовувати громіздкий спосіб, коли Tortoise SVN встановлює список svn: ignore.

  1. Використовуйте браузер сховища Tortoise SVN, щоб створити нову папку проекту безпосередньо у сховищі.
  2. Використовуйте Tortoise SVN, щоб перевірити нову папку вгорі папки, яку потрібно імпортувати. Ви отримаєте попередження про те, що локальна папка не порожня. Ігноруйте попередження. Тепер у вас є папка вищого рівня з неперевершеним вмістом.
  3. Відкрийте свій проект з місцевого робочого каталогу. Тепер VCS має бути включено автоматично
  4. Встановіть винятки з файлу у меню Файл -> Налаштування -> Контроль версій -> Ігноровані файли
  5. Додайте файли до SVN з Android Studio: виберіть "Додаток" у структурі проекту -> VCS -> Додати до VCS (це додасть усі файли, крім "Ігноровані файли")
  6. Внести зміни

Вперед "Ігноровані файли" будуть проігноровані, і ви все одно можете керувати VCS з Android Studio.

Будьте здорові, -Joost


0

Android Studio 3.5.3

Я використовую це для своїх бібліотек та проектів, і він охоплює більшість файлів, які генерує андроїд-студія та інші відомі інструменти:

# Built application files
*.apk
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Generated files
bin/
gen/
out/
app/release/

# Gradle files
.gradle/
build/

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

# 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 lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

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

# Freeline
freeline.py
freeline/
freeline_project_description.json

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

#NDK
*.so

0

Це створюється за допомогою посилання на http://gitignore.io/, де ви можете створити останній оновлений файл gitignore для будь-якого проекту. Для Android http://gitignore.io/api/androidstudio . Сподіваюсь, це допомагає. На даний момент я використовую Android Studio 3.6.3

# Created by https://www.gitignore.io/api/androidstudio
# Edit at https://www.gitignore.io/?templates=androidstudio

### AndroidStudio ###
# Covers files to be ignored for android development using Android Studio.

# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle
.gradle/
build/

# Signing files
.signing/

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

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio
/*/build/
/*/local.properties
/*/out
/*/*/build
/*/*/production
captures/
.navigation/
*.ipr
*~
*.swp

# Android Patch
gen-external-apklibs

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

# NDK
obj/

# IntelliJ IDEA
*.iml
*.iws
/out/

# User-specific configurations
.idea/caches/
.idea/libraries/
.idea/shelf/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml
.idea/datasources.xml
.idea/dataSources.ids
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml
.idea/assetWizardSettings.xml

# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Legacy Eclipse project files
.classpath
.project
.cproject
.settings/

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.war
*.ear

# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*

## Plugin-specific files:

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Mongo Explorer plugin
.idea/mongoSettings.xml

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

### AndroidStudio Patch ###

!/gradle/wrapper/gradle-wrapper.jar

# End of https://www.gitignore.io/api/androidstudio

-1

У цій офіційній документації 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

Він також дає інші рекомендації, щодо яких слід бути обережними.


1
Чому це було проголосовано? Падіння голосів без жодних пояснень - це найгірше, що стосується ТА.
викрадено

-1

.gitignore з бібліотеки AndroidRate

# Copyright 2017 - 2018 Vorlonsoft LLC
#
# Licensed under The MIT License (MIT)

# Built application files
*.ap_
*.apk

# Built library files
*.aar
*.jar

# Built native files
*.o
*.so

# Files for the Dalvik/Android Runtime (ART)
*.dex
*.odex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle/
build/

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

# Windows thumbnail cache
Thumbs.db

# macOS
.DS_Store/

# Log Files
*.log

# Android Studio
.navigation/
captures/
output.json

# NDK
.externalNativeBuild/
obj/

# IntelliJ
## User-specific stuff
.idea/**/tasks.xml
.idea/**/workspace.xml
.idea/dictionaries
## Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/dynamic.xml
.idea/**/sqlDataSources.xml
.idea/**/uiDesigner.xml
## Gradle
.idea/**/gradle.xml
.idea/**/libraries
## VCS
.idea/vcs.xml
## Module files
*.iml
## File-based project format
*.iws

-1

https://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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.