Cosa dovrebbe essere nel mio .gitignore per un progetto Android Studio?


Risposte:


1330

Aggiornato ad Android Studio 3.0 Si prega di condividere elementi mancanti nei commenti.

Una risposta in ritardo ma nessuna delle risposte qui e qui era giusta per i soldi per noi ...

Quindi, ecco il nostro file 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

A partire da Android Studio 2.2 e fino alla 3.0, vengono creati nuovi progetti con questo file gitignore:

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

Obsoleto : per un formato di progetto precedente, aggiungi questa sezione al tuo file gitignore:


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

Questo file dovrebbe trovarsi nella cartella principale del progetto e non all'interno della cartella del modulo del progetto.

Modifica note:

  1. Dalla versione 0.3+ sembra che sia possibile eseguire il commit e il push dei file * .iml e build.gradle . Se il tuo progetto si basa su Gradle: nella nuova finestra di dialogo Apri / Importa, dovresti selezionare la "use auto import"casella di controllo e selezionare il "use default gradle wrapper (recommended)"pulsante di opzione . Tutti i percorsi sono ora relativi come suggerito da @George.

  2. Risposta aggiornata in base alla fonte allegata @ 128 KB e ai suggerimenti di @Skela


8
Perché dobbiamo importare il progetto e aggiungere manualmente librerie e dipendenze dei moduli? Esiste un modo per preservare queste cose nel repository e quando cloniamo il repository basta aprire un progetto?
Justin,

13
Il modo corretto per farlo è quello di controllare i file * .iml e * .ipr e aprirli nell'IDE. Perché obbligare altre persone del tuo team a ricreare questi file e perché consentire loro di utilizzare impostazioni eventualmente errate (come la versione sdk)?
Sky Kelsey,

26
@liorry, non sono d'accordo. Questa è la prima risposta che altre persone vedranno ed è ampiamente votata. A causa di tutte le cose che devi fare per far funzionare un progetto dopo un nuovo clone di Git usando questo particolare .gitignore, sento fortemente che questo non è ciò di cui la maggior parte delle persone avrebbe bisogno. Anche se immagino che il numero di voti positivi mi dica altrimenti, ma non sono ancora d'accordo. Per lo meno, forse alcune informazioni che affermano che molto probabilmente dovrai impostare di nuovo il progetto e non funzionerà immediatamente.
Skela

10
@liorry, non intendo essere scortese o niente amico, per favore non prenderlo sul personale. Il problema è che queste cose devono funzionare con una quantità minima di installazione per essere di qualsiasi utilità pratica. Quando è necessario importare il progetto e aggiungere manualmente le dipendenze del modulo, questo entra immediatamente in un regno di follia. Quando hai familiarità con un progetto e conosci queste cose a fondo, allora non c'è problema con il tuo approccio. Ma per uno sviluppatore che sta clonando il progetto per la prima volta, non è poi così pratico. Sto davvero solo cercando di assicurarmi che il tuo approccio non diventi la norma.
Skela,

14
Si dovrebbe Non Versione i .imlfile a meno che non wan't a che fare con fastidi non necessari se altri utenti Nome del progetto in modo diverso al momento del check out.
theblang,

151

Sulla base del mio normale .gitignore Android e dopo aver letto la documentazione sul sito Web IDEA di Intellij e aver letto i messaggi su StackOverflow, ho creato il seguente file:

# 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

Si noti inoltre che, come sottolineato, la sezione dei file nativi incorporati è utile soprattutto quando si crea il proprio codice nativo con Android NDK. Se, d'altra parte, stai utilizzando una libreria di terze parti che include questi file, potresti voler rimuovere queste righe (* .o e * .so) dal tuo .gitignore.


10
Quasi giusto. Non credo sia una buona idea ignorare * .so perché non sarai in grado di lavorare con progetti che hanno dipendenze collegate alle librerie NDK. Ma un ottimo punto di partenza per tutti gli account!
Skela,

@Skela buon punto. Ho avuto questi dentro da quando stavo costruendo i miei file nativi - ma ho anche lavorato su progetti che richiedono una semplice copia e incolla di file predefiniti. Ho aggiunto una nota al riguardo alla risposta sopra.
Phil

@Phil Hai delle opinioni sui file XML in .idea/libraries? Dovrebbero essere condivisi o esclusi secondo te?
Alex Lockwood,

1
@AlexLockwood Penso che questi file dovrebbero essere inclusi se il progetto non dipende da un altro progetto o modulo. Se, tuttavia, il progetto dipende da un modulo che contiene le librerie, questo file dovrebbe essere ignorato a livello di progetto, ma non dal modulo.
Phil

@Phil molto bello e l'ho usato finora ma un file dex scivola attraverso le fessure: /moduledirectory/build/intermediates/dex-cache/cache.xml - non avrebbe senso aggiungere ** / build per escludere anche le cartelle di build nei moduli?
Oliver Hausler,

82

7/2015 aggiornato:

Ecco la fonte definitiva da JetBrains


Formato del progetto basato su directory (directory .idea)

Questo formato è utilizzato da tutte le versioni IDE recenti per impostazione predefinita. Ecco cosa devi condividere:

  • Tutti i file nella .ideadirectory nella radice del progetto tranne i file workspace.xmle tasks.xmlche memorizzano le impostazioni specifiche dell'utente
  • Tutti i .imlfile del modulo che possono trovarsi in diverse directory del modulo (si applica a IntelliJ IDEA)

Fai attenzione a condividere quanto segue:

  • Manufatti Android che producono una build firmata (conterranno le password del keystore)
  • In IDEA 13 e precedenti dataSources.ids, datasources.xmlpuò contenere password del database. IDEA 14 risolve questo problema .

Puoi considerare di non condividere quanto segue:

  • file gradle.xml, vedere questa discussione
  • cartella dizionari utente (per evitare conflitti se altri sviluppatori hanno lo stesso nome)
  • File XML .idea/librariesin caso siano generati dal progetto Gradle

Formato del progetto legacy ( .ipr/ .iml/ .iwsfiles)

  • Condividi il .iprfile di progetto e tutti i .imlfile del modulo, non condividere il .iwsfile poiché memorizza le impostazioni specifiche dell'utente

Mentre queste istruzioni sono per IntelliJ IDEA, sono valide al 100% per Android Studio.


Ecco uno .gitignoresnippet che incorpora tutte le regole precedenti:

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

Quali SDK sono supportati è definito in AndroidManifest.xml (e anche da Gradle). Qualsiasi SDK consentito da tale impostazione deve essere corretto per lo sviluppo. Per quanto riguarda gli stili di codice: questo non è qualcosa che deve essere mantenuto separatamente in ogni progetto e inoltre dovrebbe essere chiarito indipendentemente dall'IDE. Intestazioni del copyright: si spera che siano nella tua base di codice e non nei file di progetto IDE. Altrimenti,
basandoti

@Risadinha 1) Anche gli SDK sono definiti a livello IDE. Sono indicati nel Manifest, ma il file di progetto contiene le definizioni SDK effettive. 2) Lo stile del codice deve essere mantenuto ALMENO a livello di progetto. Idealmente, tutti scriverebbero Java standard, ma vabbè. 3) Le intestazioni del copyright sono memorizzate nel progetto. Sono utilizzati per la creazione di nuovi file e possono contenere macro per nome, ragione sociale, progetto, data, ecc. Ti consiglio di provarli! In sintesi, i file di progetto contengono importanti meta informazioni sul progetto che devono essere condivise e controllate in tutto il team.
Sky Kelsey

3
Un manutentore ha apportato le modifiche al proprio repository . Probabilmente verrà presto trasformato in maestro.
FalconC,

5
JetBrains ha deprecato DOC-1186 e ha inserito i suoi consigli aggiornati in un nuovo post : DO INCLUDE: tutti i file nella directory .idea nella radice del progetto tranne il workspace.xml e task.xml e tutti i file .iml. ATTENZIONE quando condividi artefatti Android che producono una build firmata (conterrà le password del keystore), dataSources.ids e datasources.xml (possono contenere password). CONSIDERA ESCLUSIONE: gradle.xml, cartella dizionari utente e file XML in .idea / libraries (nel caso siano generati dal progetto Gradle).
JSmitty,

2
Questa è una teoria adorabile, ma semplicemente non funziona per noi. Finiamo costantemente con file .iml con voci come questa: <orderEntry type="jdk" jdkName="1.6 (38)" jdkType="JavaSDK" />nota il numero 38 che sembra essere costantemente incrementato. (anche il file misc.xml presenta questo problema).
Sam,

41

Non sono d'accordo con tutte queste risposte. La seguente configurazione funziona perfettamente per l'app della nostra organizzazione.

Ignoro:

  • /build
  • /.idea(con possibili eccezioni, vedere i commenti nella risposta di Dalewking )
  • *.iml
  • local.properties

Penso che quasi tutti siano d'accordo /build.

Mi sono stancato di vedere costantemente messaggi sui vari library.xmlfile che Gradle crea o elimina /.idea. La build.gradleverrà eseguito sui di sviluppatori locale quando in primo luogo controllare il progetto, quindi perché fanno quei file XML devono essere di versione? Android Studio genererà anche il resto di /.ideaquando uno sviluppatore crea un progetto utilizzando Check out from Version Control, quindi perché qualcosa in quella cartella deve essere aggiornato?

Se la *.imlversione è aggiornata, un nuovo utente dovrà nominare il progetto esattamente come era quando è stato eseguito il commit. Poiché questo è anche un file generato, perché prima di tutto versione?

I local.propertiesfile indicano un percorso assoluto sul file system per l'SDK, quindi sicuramente non dovrebbe essere aggiornato.

Modifica 1 : aggiunto .gradleper ignorare le cose di cache di livello che non dovrebbero essere sottoposte a versione (grazie Vasily Makarov ).

Modifica 2 : aggiunto .DS_Storeora che sto usando Mac. Questa cartella è specifica per Mac e non deve essere aggiornata.

Nota aggiuntiva : probabilmente si desidera anche aggiungere una directory per inserire le chiavi di accesso durante la creazione di una versione di rilascio.

Per comodità di copia / incolla :

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

4
Sono d'accordo con la tua risposta. Credo anche che né il .iml * o .idea file dovrebbero essere di versione: stackoverflow.com/a/26290130/2948212
diegosasw

7
Il mio voto è per il tuo gitignore in quanto è molto simile al mio. Suggerimenti di coppia: utilizzare build/invece di /buildabbinare dir di build del modulo come app/build. Utilizzare .gradleper abbinare la directory di memorizzazione nella cache dei gradi.
Vasily Makarov

Mi chiedo anche perché l'elenco predefinito gitignore / build invece di build / finisca con tutti i file nell'app / build nel mio repository se uso / build
guyland123

@ guyland123 Ho appena notato che ho un altro .gitignorefile nella directory della mia app che contiene anche /build. Questo è generato automaticamente, non me lo ricordo? Quindi build/si applicherà alle sottocartelle?
theblang,

@mattblang yes .gitignore viene generato automaticamente quando si crea un nuovo progetto. Non viene creato tuttavia quando si importa un progetto da dire Eclipse. build / corrisponderà a tutte le directory denominate "build" sotto la posizione del file .gitignore. Per esempio. l'app / build verrà ignorata.
guyland123,

37

Uso questo .gitignore. L'ho trovato su: http://th4t.net/android-studio-gitignore.html

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

*/build/

*~
*.swp

1
* / build / non ignora i file invariati nella mia directory di build. qualche idea? @Solved: ho dovuto aggiungere * / * / build / poiché la mia cartella di build era profonda un paio di directory.
speedynomads

35

Nel caso di Android Studio, gli unici file che devono essere salvati nel controllo versione sono i file necessari per compilare l'applicazione dalla riga di comando tramite gradle. Quindi puoi ignorare:

  • * .iml
  • .idea
  • costruire

Tuttavia, se si salvano le impostazioni IDE, come le impostazioni personalizzate dello stile di codice, vengono salvate nella cartella .idea. Se si desidera apportare tali modifiche al controllo della versione, è necessario salvare anche i file IDEA (* .iml e .idea).


3
Grazie per averlo spiegato. Da quello che ho letto se hai intenzione di includere .idea nel tuo progetto, dovresti ignorare * /. Idea / workspace.xml e * /. Idea / task.xml
rispettoTheCode

15
per ora non ignorare la cartella .idea. Il plugin Gradle non ha ancora alcuna "idea gradle" e il progetto di importazione in Android Studio è tutt'altro che perfetto adesso.
robotoaster,

2
Inoltre, se lavori in gruppo, considera di ignorare local.properties perché contiene il percorso sdk hardcoded.
Calin,

@robotoaster, consiglieresti comunque di non ignorare la cartella .idea?
loeschg,

@Ioeschg non è più richiesto. se si esegue il checkout di git repo pulito, utilizzare Importa nuovo progetto e dovrebbe funzionare correttamente fintanto che sono presenti file di build.
robotoaster,

20

Android Studio 3.4

Se crei un progetto Gradle utilizzando Android Studio il .gitignore file conterrà quanto segue:

.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

Consiglierei di ignorare la directory ".idea" completa perché contiene configurazioni specifiche dell'utente, nulla di importante per il processo di compilazione.

Cartella del progetto Gradle

L'unica cosa che dovrebbe essere nella cartella del progetto (Gradle) dopo la clonazione del repository è questa struttura (almeno per i casi d'uso che ho riscontrato finora):

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

Si consiglia di effettuare il check-in degli script wrapper gradle (vedere qui ).

Per rendere i file Wrapper disponibili per altri sviluppatori e ambienti di esecuzione, è necessario controllarli nel controllo della versione.


1
Perché dovresti tenere binari come gradlew e gradle.bat?
Bilthon,

2
@Bilthon Non sono binari. Sono script di avvio graduale per Windows (gradle.bat) e Linux (gradlew).
Willi Mentzel,

Ohh .. Vedo che hai ragione, ma non sono comunque autogenerati?
Bilthon,

2
@Bilthon In effetti lo sono! Sono generati con opzioni predefinite. Se cambi qualcosa, dovrebbero essere inclusi nel tuo repository per poterlo compilare correttamente al momento del check out. Sono così piccoli che non fa male tenerli sempre.
Willi Mentzel,

2
Controlla anche qui questa risorsa ufficiale che raccomanda esplicitamente di impegnare gli script del wrapper Gradle per il controllo del codice sorgente: docs.gradle.org/current/userguide/…
friederbluemle,

19

Il mio consiglio sarebbe anche di non ignorare la cartella .idea.

Ho importato un progetto Eclipse basato su Git su Android Studio e questo è andato bene. Successivamente, volevo importare questo progetto con Git (come la prima volta) su un'altra macchina con Android Studio, ma non ha funzionato. Android Studio ha caricato tutti i file ma non è stato in grado di "vedere" il progetto come progetto. Potrei solo aprire Git-files.

Durante l'importazione del progetto per la prima volta (da Eclipse ad Android Studio) il mio vecchio .gitignore è stato sovrascritto e quello nuovo sembrava così:

  • .idea / .name
  • .idea / compiler.xml
  • .idea / copyright / profiles_settings.xml
  • .idea / encodings.xml
  • .idea / librerie / libs.xml
  • .idea / misc.xml
  • .idea / modules.xml
  • .idea / campo di applicazione / scope_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

Quindi, ho provato a usare un gitignore vuoto e ora ha funzionato. L'altro Android Studio potrebbe caricare i file e il Progetto. Immagino che alcuni file non siano importanti (profiles_settings.xml)per Git e per l'importazione, ma sono contento che abbia funzionato.


Da github.com/joeblau/gitignore.io/issues/… : erge Baranov (IntelliJ) 26 settembre, 14:23 CEST Dipenderebbe dal progetto. Se il progetto viene importato da Maven o Gradle, i file .iml vengono generati automaticamente e potrebbero non essere condivisi, altrimenti questi file sono essenziali per il progetto e devono essere condivisi in modo che altri utenti possano aprire il progetto dopo il checkout. I file .iml contengono tutte le informazioni sulla configurazione del modulo (root, cartelle di origine, dipendenze, ecc.).
Adrian Romanelli,

9

È il modo migliore per generare .gitignorevia qui


1
Non riesco a farlo funzionare per Android Studio. Se seleziono semplicemente "Android" sembra essere un'implementazione di Eclipse. Sto sbagliando?
zipzit

L'unica menzione a Eclipse è su una riga: "Cartella Proguard generata da Eclipse". Il resto sembra OK per AS
Jose_GD,

@zipzit, forse hai ragione. Sembra che il sito generi .gitignore non per Android Studio in quanto non contiene .idea /.
CoolMind,

1
C'è anche l'opzione Studio Android
Daniyal Javaid

8

Non è NECESSARIO AGGIUNGERE al controllo del codice sorgente uno dei seguenti:

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

Quindi puoi configurare hgignore o gitignore di conseguenza.

La prima volta che uno sviluppatore clona il controllo del codice sorgente può passare:

  1. Apri Android Studio
  2. Importa progetto
  3. Cerca build.gradle all'interno del repository clonato e aprilo

È tutto

PS: Android Studio, quindi, otterrà il plug-in Gradle supponendo che build.gradle sia simile a questo:

// 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 Studio genererà il contenuto della cartella .idea (incluso workspace.xml, che non dovrebbe essere nel controllo del codice sorgente perché viene generato ) e della cartella .gradle.

Questo approccio è compatibile con Eclipse in quanto il controllo del codice sorgente non sa davvero nulla di Android Studio. Android Studio ha solo bisogno di build.gradle per importare un progetto e generare il resto.


5
Ragazzi, coloro che votano negativamente dovrebbero fornire un valido motivo per farlo. Potrebbe essere utile farci sapere se ci sbagliamo con la nostra risposta.
Diegosasw,

1
There is NO NEEDsì, ci sono alcuni casi: modelli di copyright che devono essere condivisi tra i membri del team, ad esempio.
Henrique de Sousa,

8

Sostengo il commit della cartella .idea (esclusi workspace.xmle tasks.xml). Ma sto iniziando a giungere alla conclusione che i file .iml dovrebbero essere ignorati.

Ecco il problema:

Apri un progetto in una directory chiamata "foo" per esempio e otterrai foo.iml e tutto sembra a posto. Il problema è che se rinominassi semplicemente la directory in foo2 (o la clonassi in un altro nome di directory) quando provi ad aprire il progetto in Android Studio otterrai tre cose:

  • Un nuovo file iml chiamato foo2.iml
  • Il file iml per il tuo progetto Android verrà modificato per puntare ora a foo2 come suo genitore
  • .idea / modules.xml avrà una riga aggiunta per foo2.iml, quindi ha sia il vecchio file iml che quello per la nuova directory

Non riesco a trovare alcun modo per impedire ad Android Studio di fare questa generazione di file iml quando il progetto è archiviato in una directory diversa. Aggiungerli al controllo del codice sorgente causerà problemi. Quindi penso che forse dovremmo ignorare i file * .iml e.idea/modules.xml


Ignoro sia i file /.ideache i .imlfile. Vorrei sapere perché la .ideacartella dovrebbe essere impegnata.
theblang,

Guardando il mio progetto attuale, immagino che ci siano solo 2 cose che ho verificato da .idea /: impostazioni di stile del codice da applicare per il team e un dizionario utente che contiene parole specifiche del progetto che non sono parole reali. Ho iniziato con molti file in .idea impegnati, ma quando un file inizia a essere visualizzato come modificato senza motivo, viene aggiunto a .gitignore. Il mio punto non era tanto che .idea doveva essere archiviata come dire i file .iml e modules.xml non dovrebbero esserlo.

Siamo spiacenti, SO ha preso il mio commento prima che avessi finito (devo ricordare che i commenti non accettano le interruzioni di riga). Modificato con il resto dei miei pensieri.

Grazie! Sì, quei file che hai menzionato hanno un senso. Sono d'accordo, il più grande mal di testa erano i library.xmlfile che continuavano a innescare i messaggi. Inoltre, non capisco perché continuo a vedere la gente dire che i file * .iml dovrebbero essere inclusi, quindi ottimo punto lì.
theblang,

8

Testato con Android Studio 3.0

Potrebbe essere necessario installare il plug-in .ignore .

Puoi generare automaticamente il file .gitignore per Android. Fare clic con il tasto destro sulla cartella e seguire

Aggiungi il file .gitignore

Quindi selezionare Android dal pannello di sinistra e fare clic su Genera

Genera file .gitignore

Android Studio genererà il file .gitignore che contiene tutto il file da ignorare.

Tratto da http://menukanows.com/how-to-add-gitignore-file-in-android-project/


7

Dipende da come viene gestito il formato del progetto:

Hai due opzioni:

  1. Formato basato su directory (avrai una .ideacartella che contiene i file specifici del progetto)
  2. Formato basato su file (i file di configurazione sono .iwse .ipr)

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

I file sottoposti a controllo della versione dipendono da quanto sopra:

  1. Includi la cartella .idea nel controllo versione, escludi workspace.xmle tasks.xml
  2. Il .iprfile di controllo versione e tutti i .imlfile del modulo, escludono il .iwsfile in quanto memorizza le impostazioni specifiche dell'utente.

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


1
tutti i miei progetti sembrano avere sia le cartelle .idea che i file
.iws

1
Personalmente ho provato a seguire i consigli di JetBrains ma non ha funzionato per me. Io e un altro sviluppatore stiamo usando Android Studio e abbiamo avuto file .idea e .iml in git. Ho presto scoperto che una volta che inizi a unire i commit e ottieni tutti i tipi di problemi quando lo strumento di unione non riesce a unire i file nel percorso .idea. Di conseguenza ho aggiunto tutti i file iml e .idea a gitignore. Dopotutto Studio fa un ottimo lavoro nel creare la struttura del progetto durante l'importazione del progetto Gradle. Quindi ora prendo molta attenzione a ciò che ho nei miei file Gradle.
zmicer,

5

Fondamentalmente qualsiasi file che viene rigenerato automaticamente.

Un buon test è quello di clonare il tuo repository e vedere se Android Studio è in grado di interpretare ed eseguire immediatamente il tuo progetto (generando ciò che manca).
In caso contrario, trova ciò che manca e assicurati che non lo sia ignorato, ma aggiunto al repository.

Detto questo, puoi fare un esempio su .gitignorefile esistenti , come quello 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
Questo non è corretto Dovresti controllare i tuoi file * .iml e molto probabilmente anche .idea e * .ipr. La parte "tutto ciò che viene generato automaticamente" è particolarmente sbagliata. La maggior parte dei progetti Android vengono generati automaticamente dopo tutto.
Sky Kelsey,

6
* .Iml, * .idea e * .ipr sono specifici di Android-Studio / IntelliJ. Essi sono non necessari per costruire il progetto. Dato che sono specifici dell'IDE e non specifici della catena di build, probabilmente non dovrebbero essere registrati. Tutti possono usare qualsiasi IDE, non c'è motivo di controllare i file di progetto IntelliJ e non quelli di Eclipse, per esempio.
Marc Plano-Lesay,

2
Se vuoi lavorare su più fork dello stesso progetto, o con un team in cui tutti usano lo stesso IDE, o avere il controllo della versione delle complesse impostazioni che usi per il tuo IDE, allora sì, dovresti controllare i file in. File di progetto per IntelliJ sono molto più che semplici lanugine utilizzate per aprire il codice in un editor.
Sky Kelsey,

2
perché i miei file iml continuano a essere visualizzati come modificati tra me e il mio collega? in particolare external.root.project.path continua a cambiare sotto il tag <module />
Sam

Utilizzando Android Studio 0.8.12 su Windows 8.1 e su OS X Mavericks con lo stesso progetto, noto che i seguenti due file vengono modificati e contrassegnati come modificati da Git quando apro il progetto: <nome progetto> .iml e .idea \ misc.xml. In particolare: <excludeFolder url = "file: // $ MODULE_DIR $ / build / tmp" /> viene aggiunto o rimosso in / da <nome progetto> .iml e .idea \ misc.xml vengono cambiati in differenze di installazione JDK dovute tra OS.
jkwuc89,

4

Sono kosher con l'aggiunta dei file .iml e Intellij sez per aggiungere la cartella .idea ma ignoro .idea / workspace.xml e .idea / task.xml, ma che dire di .idea / libraries /?

Non vedo come abbia senso aggiungere questo. Ha un elenco di file XML che elencano le librerie che il progetto Android Studio dovrebbe conoscere. Si suppone che provengano invece da dipendenze definite build.gradle, non da un file di progetto IDE.

Anche il contenuto di uno di questi file è simile al seguente:

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

Non ha senso impegnarlo. Che cosa succede se l'utente specifica una home directory diversa per Gradle o se utilizza una versione Gradle diversa, il percorso sotto .gradle/caches/artifacts-xxxsarà diverso per loro (cioè artifacts-il numero aggiunto alla fine si riferirà alla versione della versione Gradle che stai usando. ) Questi percorsi non sono universali, eppure il consiglio è di controllare tutto questo?


4

A partire da Android Studio 0.8.4 il .gitignorefile viene generato automaticamente all'avvio di un nuovo progetto. Di default contiene:

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

3

So che questo è un vecchio argomento e ci sono sicuramente molte opzioni, ma preferisco davvero gibodi Simon Whitaker. È super semplice da usare, multipiattaforma (mac, * nix e windows) e utilizza il gitignorerepository github, quindi è (praticamente) sempre aggiornato.

Assicurati che la cache locale sia aggiornata:

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

Cerca la lingua / tecnologia di cui hai bisogno:

    $ gibo --search android
    Android

Visualizza il file .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

Ora aggiungilo al file .gitignore del tuo progetto:

    $ gibo Android >> .gitignore

(Assicurati di utilizzare >>per aggiungere al file .gitignore del tuo progetto; uno> lo sovrascriverà - come ho fatto molte volte per caso!)

So che questo non risponde alla domanda esatta del PO, ma l'uso di Gibo lo rende praticamente impossibile pensare più alla "domanda"! .. è carino! ;)


3

Per avere un'idea migliore, sono necessari solo i seguenti file

  • App
  • build.gradle
  • settings.gradle

Struttura di base del progetto Android

Potresti mettere tutto il resto nel file .gitignore. Tutte le modifiche apportate all'app si trovano principalmente in questi file e cartelle. Il resto che vedi in un progetto di base sono i file di build graduale o i file di configurazione di Android Studio.

Se si utilizza Android Studio, è possibile utilizzare "Importa progetto" per creare correttamente il progetto. In alternativa puoi costruire usando la riga di comando, segui Creazione di progetti Android con Gradle .


3

È meglio aggiungere l'elenco .gitignore durante il tempo di sviluppo per evitare effetti collaterali sconosciuti quando il Controllo versione non funzionerà per qualche motivo a causa dell'elenco predefinito (copia / incolla) da qualche parte. Per uno dei miei progetti, l'elenco ignora è solo di:

.gradle
.idea
libs
obj
build
*.log

3

Github mantiene utili oggetti gitignore per vari tipi di progetti. Ecco l'elenco di utili oggetti gitignore per progetti 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 in github


3
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
imtheman,

@imtheman plausible .. Ho aggiornato la risposta e ho messo il link come riferimento
Sudip Bhandari,

2

Unisco i file .gitignore di 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

Leggere: Supporto JetBrains: come gestire i progetti con i sistemi di controllo versione


2
A partire dal 2016, seguo questa risposta come la più vicina alle nostre esigenze. Grazie
Henrique de Sousa

2

Utilizzando l'API fornito da gitignore.io , puoi ottenere che viene generato automaticamente. Ecco il link diretto anche 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

A partire da Android Studio 0.8.4, il file .gitignore viene generato automaticamente all'avvio di un nuovo progetto. Di default contiene:

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

Sono d'accordo con questa affermazione, tuttavia modifico questo file per cambiare / build in build / (questo includerà / build e / app / build) Quindi non finisco con tutti i file in app / build nel mio repository.

Si noti inoltre che se si importa un progetto da Eclipse, .gitignore non verrà copiato o creato "automagicamente" per te.


0

Compilazione:

#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

Per aggirare l'importazione di tutti i file, in cui Android Studio ignora l'elenco "File ignorati", ma sfruttando ancora Android Studio VCS, ho fatto quanto segue: Questo utilizzerà l'elenco "File ignorati" da Android Studio (dopo l'importazione! Non durante) E evita di dover usare il modo ingombrante Tortoise SVN imposta l'elenco svn: ignore.

  1. Utilizzare il browser del repository Tortoise SVN per creare una nuova cartella di progetto direttamente nel repository.
  2. Utilizzare Tortoise SVN per effettuare il checkout della nuova cartella nella parte superiore della cartella che si desidera importare. Riceverai un avviso che la cartella locale non è vuota. Ignora l'avviso. Ora hai una cartella di livello superiore con versione con contenuto non verificato.
  3. Apri il tuo progetto dalla directory di lavoro locale. VCS ora dovrebbe essere abilitato automaticamente
  4. Imposta le eccezioni dei file in File -> Impostazioni -> Controllo versione -> File ignorati
  5. Aggiungi file a SVN da Android Studio: seleziona 'App' nella struttura del progetto -> VCS -> Aggiungi a VCS (questo aggiungerà tutti i file, tranne "File ignorati")
  6. Effettua modifiche

Andando avanti, "File ignorati" verrà ignorato e potrai comunque gestire VCS da Android Studio.

Saluti, -Salvate


0

Android Studio 3.5.3

Lo uso per le mie librerie e progetti e copre la maggior parte dei file generati da Android Studio e altri strumenti famosi:

# 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

Questo viene creato usando il riferimento di http://gitignore.io/ Dove è possibile creare il file gitignore aggiornato più recente per qualsiasi progetto. Per Android http://gitignore.io/api/androidstudio . Spero che sia di aiuto. Attualmente sto usando 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

Questa documentazione ufficiale del supporto JetBrains dice che dovrebbe essere incluso quanto segue:

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

Fornisce anche altri consigli su cose di cui fare attenzione.


1
Perché questo è stato votato verso il basso? La riduzione dei voti senza spiegazione è la cosa peggiore di SO.
allungato il

-1

.gitignore da biblioteca 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 è una collezione fantastica

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.