Что должно быть в моем .gitignore для проекта Android Studio?

1258

Какие файлы должны быть в моем .gitignoreпроекте Android Studio?

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

respectTheCode
источник
7
github.com/github/gitignore
Юша Алеауб

Ответы:

1331

Обновлено до 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
Почему мы должны импортировать проект и вручную добавлять зависимости библиотек и модулей? Есть ли способ сохранить эти вещи в репо, и когда мы клонируем репо, просто делаем проект открытым?
Джастин
13
Правильный способ сделать это - проверить файлы * .iml и * .ipr и просто открыть их в IDE. Зачем заставлять других людей в вашей команде воссоздавать эти файлы и разрешать им использовать, возможно, неправильные настройки (например, версию SDK)?
Скай Келси
26
@ Лорри, я не согласен. Это первый ответ, который увидят другие люди, и за него проголосовали. Из-за всего, что вам нужно сделать, чтобы запустить проект после запуска нового клона из git с использованием этого конкретного .gitignore, я твердо убежден, что это не то, что нужно большинству людей. Хотя я предполагаю, что количество голосов «за» говорит об обратном, но я все еще не согласен. По крайней мере, возможно, некоторая информация о том, что вам, скорее всего, придется заново настроить проект, и он не будет работать «из коробки».
Скела
10
@ liorry, я не хочу быть грубым или что-нибудь приятель, пожалуйста, не принимайте это на свой счет. Проблема в том, что эти вещи должны работать с минимальным количеством настроек, чтобы иметь какое-либо практическое применение. Когда вам нужно импортировать проект и вручную добавить зависимости модуля, он сразу же входит в сумасшедший мир. Когда вы знакомы с проектом и знаете эти вещи наизнанку, с вашим подходом проблем не возникает. Но для разработчика, который клонирует проект впервые, это просто не так практично. Я просто пытаюсь сделать так, чтобы ваш подход не стал нормой.
Скела
14
Вам не следует создавать версии .imlфайлов, если вы не хотите иметь дело с ненужными раздражениями, если другие пользователи по-разному называют проект при выходе.
Theblang
151

Основываясь на моем обычном Android .gitignore , и после прочтения документации на веб-сайте 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
Почти верно. Я не думаю, что стоит игнорировать * .so, потому что вы не сможете работать с проектами, которые связаны зависимостями от библиотек NDK. Но очень хорошая отправная точка по всем показателям!
Скела
@ Скела хорошая мысль. У меня они были там с тех пор, как я создавал свои собственные нативные файлы, но я также работал над проектами, которые требуют простого копирования и вставки предварительно созданных файлов. Я добавил примечание об этом к ответу выше.
Фил
@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могут содержать пароли баз данных. ИДЕЯ 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 1) SDK также определяются на уровне IDE. На них ссылаются в Манифесте, но файл проекта содержит фактические определения SDK. 2) Стиль кода должен поддерживаться как минимум на уровне проекта. В идеале каждый мог бы написать стандартную Java, ну да ладно. 3) Авторские заголовки хранятся в проекте. Они используются для создания новых файлов и могут содержать макросы для имени, названия компании, проекта, даты и т. Д. Я рекомендую вам проверить их! Таким образом, файлы проекта содержат важную метаинформацию о проекте, которой нужно делиться и контролировать в группе.
Скай Келси
3
Сопровождающий внес изменения в свой репо . Это, вероятно, скоро будет введено в мастер.
FalconC
5
JetBrains устарел DOC-1186 и поместил их обновленные рекомендации в новый пост : DO INCLUDE: Все файлы в каталоге .idea в корневом каталоге проекта, кроме workspace.xml и tasks.xml и все файлы .iml. Будьте внимательны при совместном использовании артефактов Android, которые создают подписанную сборку (будут содержать пароли хранилища ключей), dataSources.ids и datasources.xml (они могут содержать пароли). ИСПОЛЬЗУЙТЕ ИСКЛЮЧЕНИЕ: gradle.xml, папка пользовательских словарей и файлы XML в .idea / library (если они сгенерированы из проекта Gradle).
JSmitty
2
Это прекрасная теория, но она просто не работает для нас. Мы последовательно получаем файлы .iml с такими записями: <orderEntry type="jdk" jdkName="1.6 (38)" jdkType="JavaSDK" />Обратите внимание на число 38, которое, похоже, постоянно увеличивается. (файл misc.xml также имеет эту проблему).
Сэм
42

Я не согласен со всеми этими ответами. Следующая конфигурация отлично работает для приложения нашей организации.

Я игнорирую

  • /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 
theblang
источник
4
Я согласен с вашим ответом. Я также считаю, что ни файлы * .iml, ни .idea не должны быть версионными: stackoverflow.com/a/26290130/2948212
diegosasw
7
Мой голос за твоего гитиньора, так как он очень похож на мой. Пара предложений: Используйте build/вместо того, /buildчтобы соответствовать dir сборки модуля, как app/build. Используется .gradleдля соответствия директории кэширования gradle.
Василий Макаров
Я также спрашиваю, почему gitignore по умолчанию перечисляет / строит вместо сборки / я получаю все файлы из app / 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
helbaroudy
источник
1
* / build / не игнорирует неизмененные файлы в моей директории сборки. Любые идеи? @Solved: мне пришлось добавить * / * / build /, так как моя папка сборки была в паре каталогов.
спидиномы
35

В случае Android Studio единственными файлами, которые необходимо сохранить в системе управления версиями, являются файлы, необходимые для сборки приложения из командной строки с использованием gradle. Таким образом, вы можете игнорировать:

  • * .iml
  • .idea
  • строить

Тем не менее, если вы сохраните какие-либо настройки IDE, такие как пользовательские настройки стиля кода, они будут сохранены в папке .idea. Если вы хотите эти изменения в управлении версиями, то вы также должны сохранить файлы IDEA (* .iml и .idea).

Шива Велусамы
источник
3
Спасибо за объяснение этого. . Из того, что я прочитал , если вы собираетесь включить .idea в вашем проекте вы должны игнорировать * / идея / workspace.xml и * / идея / tasks.xml.
respectTheCode
15
не игнорируйте папку .idea на данный момент. Плагин Gradle пока не имеет задачи «идея грейдера», и проект импорта в Android Studio сейчас далек от совершенства.
роботоастер
2
Также, если вы работаете в команде, подумайте об игнорировании local.properties, поскольку он содержит жестко закодированный путь sdk.
Калин
@robotoaster, вы бы по-прежнему рекомендовали не игнорировать папку .idea?
loeschg
@Ioeschg больше не требуется. если вы извлекаете чистое git-репо, используйте Import New Project, и он должен работать нормально, пока присутствуют файлы сборки.
роботоастер
21

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?
Bilthon
2
@Bilthon Они не являются двоичными файлами. Это начальные скрипты для Windows (gradle.bat) и Linux (gradlew).
Вилли Ментцель
Ооо ... Я вижу, вы правы, но разве они не генерируются автоматически?
Bilthon
2
@Bilthon Действительно, они есть! Они генерируются с параметрами по умолчанию. Если вы что-то измените, они должны быть включены в ваш репозиторий, чтобы построить его правильно при проверке свежего. Они такие маленькие, не мешало бы их всегда держать.
Вилли Ментцель
2
Также проверьте этот официальный ресурс здесь, который явно рекомендует передать сценарии обертки Gradle в систему контроля версий
friederbluemle
19

Я бы также посоветовал не игнорировать папку .idea.

Я импортировал основанный на Git проект Eclipse в Android Studio, и все прошло хорошо. Позже я хотел импортировать этот проект с помощью Git (как в первый раз) на другую машину с Android Studio, но это не сработало. Android Studio загрузила все файлы, но не смогла «увидеть» проект как проект. Я мог только открыть Git-файлы.

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

  • .idea / .name
  • .idea / compiler.xml
  • .idea / авторское право / profiles_settings.xml
  • .idea / encodings.xml
  • .idea / библиотеки / libs.xml
  • .idea / misc.xml
  • .idea / modules.xml
  • .idea / прицелы / scope_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

Итак, я попытался использовать пустой gitignore, и теперь это сработало. Другая Android Studio может загружать файлы и проект. Я предполагаю, что некоторые файлы не важны (profiles_settings.xml)для Git и импорта, но я просто счастлив, что это сработало.

Инго
источник
От github.com/joeblau/gitignore.io/issues/…erge Баранов (IntelliJ) 26 сентября 14:23 CEST Это будет зависеть от проекта. Если проект импортируется из Maven или Gradle, файлы .iml создаются автоматически и могут не предоставляться в общий доступ, в противном случае эти файлы важны для проекта и должны быть общими, чтобы другие пользователи могли открыть проект после извлечения. Файлы .iml содержат всю информацию о конфигурации модуля (корни, исходные папки, зависимости и т. д.).
Адриан Романелли
9

Это лучший способ генерировать .gitignoreчерез здесь

Jacky
источник
1
Я не могу заставить это работать для Android Studio. Если я просто выберу «android», то это будет реализация Eclipse. Я делаю это неправильно?
Зипзит
Единственное упоминание об Eclipse в одной строке: «Папка Proguard, сгенерированная Eclipse». Остальное кажется нормальным для AS
Jose_GD
@zipzit, возможно ты прав. Кажется, что сайт генерирует .gitignore не для Android Studio, поскольку он не содержит .idea /.
CoolMind
1
Существует также вариант Android Studio
Daniyal Javaid
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 (включая файл workspace.xml, который не должен находиться в управлении исходным кодом, поскольку он генерируется). ) и папку .gradle.

Этот подход дружествен к Eclipse, так как система контроля версий ничего не знает об Android Studio. Android Studio просто нужен build.gradle для импорта проекта и генерации всего остального.

diegosasw
источник
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 / modules.xml будет добавлена ​​строка для foo2.iml, поэтому в нем есть как старый файл iml, так и файл для нового каталога.

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

linquize
источник
Я игнорирую оба /.ideaи .imlфайлы. Я хотел бы услышать, почему .ideaпапка должна быть зафиксирована.
Theblang
Глядя на мой текущий проект, я предполагаю, что есть только две вещи, которые я зарегистрировал в настройках стиля кода .idea /: для применения в команде, и пользовательский словарь, содержащий слова, характерные для проекта, которые не являются реальными словами. Я начал со многих файлов в .idea commit, но когда файл начал отображаться как измененный без уважительной причины, он был бы добавлен в .gitignore. Моя точка зрения заключалась не столько в том, что .idea следует регистрировать, сколько в том, что .iml files и modules.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

RAMK
источник
1
все мои проекты, похоже, имеют как папки .idea, так и файлы
.iws
1
Лично я пытался следовать советам от JetBrains, но у меня это не сработало. Я и другой разработчик используем Android Studio, и у нас были файлы .idea и .iml в git. Вскоре я обнаружил, что как только вы начинаете объединять коммиты и сталкиваетесь со всевозможными проблемами, когда инструмент слияния не может объединить любой из файлов по пути .idea. В результате я добавил все imls и .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/
VonC
источник
11
Это неверно Вам следует проверить файлы * .iml, а также, скорее всего, .idea и * .ipr. Часть «все, что генерируется автоматически» особенно неправильна. Большинство проектов Android создаются автоматически.
Скай Келси
6
* .Iml, * .idea и * .ipr специфичны для Android-Studio / IntelliJ. Они не нужны для построения проекта. Поскольку они специфичны для IDE, а не для цепочки сборки, их, вероятно, не следует регистрировать. Каждый может использовать любую IDE, нет причин проверять файлы проекта IntelliJ, а не, например, Eclipse.
Марк Плано-Лесей
2
Если вы хотите работать с несколькими вилами одного и того же проекта или с командой, в которой все используют одну и ту же среду IDE, или у вас есть контроль версий сложных настроек, которые вы используете для вашей среды IDE, тогда да, вы должны проверить файлы в. Файлы проекта для IntelliJ гораздо больше, чем просто пух, используемый для открытия вашего кода в редакторе.
Скай Келси
2
почему мои iml-файлы продолжают показывать изменения между мной и моим коллегой? в частности external.root.project.path постоянно меняется под тегом <module />
Сэм
Используя Android Studio 0.8.12 в Windows 8.1 и OS X Mavericks с одним и тем же проектом, я замечаю, что следующие два файла изменяются и помечаются как измененные Git при открытии проекта: <имя проекта> .iml и .idea \ misc.xml. В частности: <excludeFolder url = "file: // $ MODULE_DIR $ / build / tmp" /> добавляется или удаляется в / из <имя проекта> .iml, а .idea \ misc.xml изменяется из-за различий в установке JDK между OS - х.
jkwuc89
4

Я не согласен с добавлением файлов .iml и Intellij sez для добавления папки .idea, но игнорирую .idea / workspace.xml и .idea / tasks.xml, но как насчет .idea / library /?

Я не понимаю, как имеет смысл добавить это. Он содержит список файлов 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!"/>

Нет смысла совершать это. Что, если пользователь указал другой домашний каталог для Gradle или если он использует другую версию Gradle, путь .gradle/caches/artifacts-xxxк нему будет другим для него (т. artifacts-Е. Число, добавленное в конце, будет относиться к выпуску версии Gradle, который вы используете. ) Эти пути не универсальны, и все же совет должен все это проверить?

zenocon
источник
4

Начиная с версии Android Studio 0.8.4 .gitignoreфайл генерируется автоматически при запуске нового проекта. По умолчанию он содержит:

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
Джонни Доу
источник
3

Я знаю, что это старая тема, и вариантов, конечно, много, но я действительно предпочитаю giboСаймона Уитакера. Он очень прост в использовании, кроссплатформенный (mac, * nix и windows) и использует репозиторий github, gitignoreпоэтому он (в основном) всегда актуален.

Убедитесь, что ваш локальный кеш обновлен:

    $ 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 делает это так, что вам больше не нужно думать о «вопросе»! .. мило! ;)

wasatchwizard
источник
3

Чтобы получить лучшее представление, вам нужны только следующие файлы

  • приложение
  • build.gradle
  • settings.gradle

Базовая структура проекта Android

Вы можете поместить все остальное в файл .gitignore. Все изменения вашего приложения в основном находятся в этих файлах и папках. Остальное, что вы видите в базовом проекте, это файлы сборки Gradle или файлы конфигурации Android Studio.

Если вы используете Android Studio, вы можете использовать «Импорт проекта» для успешной сборки проекта. В качестве альтернативы вы можете построить с помощью командной строки, следуя Построение проектов Android с Gradle .

Калан Наваратна
источник
3

Лучше всего добавлять список .gitignore во время разработки, чтобы предотвратить неизвестный побочный эффект, когда контроль версий по какой-то причине не работает из-за заранее определенного (копировать / вставить) списка откуда-то. Для одного из моих проектов список игнорирования состоит только из:

.gradle
.idea
libs
obj
build
*.log
Тим Лонг
источник
3

Github содержит полезные элементы gitignore для различных проектов. Вот список полезных элементов gitignore для проектов Android.

# 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 правдоподобно .. Я обновил ответ и поместил ссылку в качестве ссылки
Судип Бхандари
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: Как управлять проектами в системах контроля версий

d.danailov
источник
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), поэтому я не получаю все файлы в app / build в моем репозитории.

Также обратите внимание, что если вы импортируете проект из Eclipse, .gitignore не будет скопирован или «автоматически» создан для вас.

guyland123
источник
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

Joost
источник
0

Android Studio 3.5.3

Я использую это для своих библиотек и проектов, и оно охватывает большую часть файлов, которые генерирует Android Studio и другие известные инструменты:

# 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
Squti
источник
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 гласит следующее:

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
Почему это было отклонено? Падение голосов без объяснения причин - худшая вещь в SO.
вытолкнул
-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
shellhub
источник