1385

What files should be in my .gitignore for an Android Studio project?

I've seen several examples that all include .iml but IntelliJ docs say that .iml must be included in your source control.

Ashraf.Shk786
  • 618
  • 1
  • 11
  • 23
respectTheCode
  • 42,348
  • 18
  • 73
  • 86

32 Answers32

1427

Updated to Android Studio 3.0 Please share missing items in comments.

A late answer but this alternative answer was not right for us ...

So, here's our gitignore file:

#built application files
*.apk
*.ap_
*.aab
                           
# 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

Since Android Studio 2.2 and up to 3.0, new projects are created with this gitignore file:

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

Deprecated - for older project format, add this section to your gitignore file:


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

This file should be located in the project's root folder and not inside the project's module folder.

Edit Notes:

  1. Since version 0.3+ it seems you can commit and push *.iml and build.gradle files. If your project is based on Gradle: in the new open/import dialog, you should check the "use auto import" checkbox and mark the "use default gradle wrapper (recommended)" radio button. All paths are now relative as @George suggested.

  2. Updated answer according to @128KB attached source and @Skela suggestions

Rene Knop
  • 1,788
  • 3
  • 15
  • 27
Lior Iluz
  • 26,213
  • 16
  • 65
  • 114
  • 8
    Why do we have to import the project and manually add libs and module dependencies? Is there any way to preserve those things in the repo and when we clone the repo just do a project open? – Justin Aug 20 '13 at 05:52
  • @Justin we couldn't find a way to preserve the dependencies as they're written with their full path and it's a different path for each of our team members... if you find a way, please share :) – Lior Iluz Aug 20 '13 at 10:21
  • 13
    The proper way to do this is to check in the *.iml and *.ipr files, and just open them in the IDE. Why force other people on your team to recreate these files, and why allow them to use possibly incorrect settings (such as sdk version)? – Sky Kelsey Aug 26 '13 at 22:36
  • @SkyKelsey as for Studio 0.2.3 we tried it and it created conflicts. Every time someone made changes in his project settings, we all had to re-set ours. – Lior Iluz Aug 27 '13 at 04:06
  • 3
    Yup. Everytime someone made changes you got them. That's the point of the project file. You give it out to each collaborator, and the code stye, copyright info, and many other things get replicated. What kind of things were they changing? Seems like either they shouldn't have been making those changes, or someone had to make them anyway. – Sky Kelsey Aug 27 '13 at 04:14
  • @SkyKelsey I mean changes the shouldn't have been pushed.. again, from our experience, the posted gitignore file works great for us... worth the 2 minutes project setup for every team member. If you have a tested (in a team environment) better file, please share it and I'll test it. – Lior Iluz Aug 27 '13 at 05:15
  • 1
    @liorry couldn't you have just used relative paths from the .iml location? – George Oct 09 '13 at 23:51
  • @George we found that relative paths work only for some. Probably depends on if the user installed to everyone (program files) or to his user only (appData)... You are more than welcome to share a new and improved gitignore file if you have something that works! – Lior Iluz Oct 10 '13 at 04:43
  • 2
    @liorry I'm sorry, I was referring to relative paths inside the iml file. I don't think it makes sense or is reasonable to force everyone on the team to create their own iml file by importing the project. – George Oct 11 '13 at 06:34
  • 1
    if your project is converted from an eclipse project, the directories build and production might not be where they are supposed to be so instead of /*/*/build I used "*/build" and "*/production" – Mars Jan 17 '14 at 15:34
  • 1
    Another good one to exclude is .DS_Store which is generated on OSX but the OS. – Brill Pappin Feb 11 '14 at 16:22
  • 2
    adding .idea to the git ignore file is not fit for purpose, I don't understand how this answer got that many votes. Check out Phil's answer below, thats the answer that deserves upvotes. – Skela Mar 01 '14 at 05:19
  • 3
    @Skela this works for us as expected so we shared it. It seems like it helps others as well. If it doesn't work for you or you found one better suited to your needs, that doesn't mean this answer isn't good. – Lior Iluz Mar 09 '14 at 05:51
  • 29
    @liorry , I disagree. This is the first answer other people will see, and it is massively up-voted. Due to all the things you need to do to get a project up and running after a fresh clone from git using this particular .gitignore I strongly feel this is not what most people would need. Although I guess the number of up-votes tells me otherwise, but I still don't agree. At the very least, perhaps some information stating that you most likely will have to set the project up again and it won't work out-of-the-box. – Skela Mar 10 '14 at 14:31
  • 1
    @Skela this information is there since I posted the answer... you can verify that and see I didn't edit it. Also, When I posted my answer, there was already an answer marked as "accepted" and the OP changed the "accepted" to my answer so my answer wasn't the top one. Moreover, in Phil's answer, there's a link that if you visit there, you see people are arguing about this gitignore file as well. So Phil's answer is not the correct one as well? NO. Use what works good for your needs. – Lior Iluz Mar 11 '14 at 05:41
  • 10
    @liorry, I don't mean to be rude or anything mate, please don't take it personally. The issue is, these things need to work with minimal amount of setup to be of any practical use. When you need to Import the project, and manually add module dependancies its immediately entered a realm of lunacy. When you are familiar with a project, and know these things inside-out, then there is no issue with your approach. But for a developer who is cloning the project for the first time, its just not that practical. I really am just trying to make sure that your approach does not become the norm thats all. – Skela Mar 12 '14 at 08:45
  • @Skela None taken, really. that's OK and everyone's entitled to their own opinion. The users have both answers to choose from, my answer is very clear about the need to re-import dependencies, all that's left is for them to choose what better suits their needs... Thanks for your feedback. I'll try to find the time to take it into consideration and edit the answer if needed. – Lior Iluz Mar 12 '14 at 09:53
  • 1
    I agree .DS_Store is missing. This is a good source, yet not up to date: https://code.google.com/p/iosched/source/browse/.gitignore – 128KB Mar 20 '14 at 05:46
  • Be careful when copying the Code posted above to your .gitignore. There are some whitespaces before the statements which cause the file to not work properly. Better take the attached source! – kutschenator Apr 01 '14 at 09:44
  • i think it should be /*/build instead of /*/*/build – KKO Aug 29 '14 at 13:57
  • 1
    If you have `build/` in your `.gitignore` file you don't really need `*.class`, `*.dex`, `*.apk` and `*.ap_` – Parampal Pooni Oct 09 '14 at 20:33
  • @ParampalP true for Android studio. This file is also for Eclipse. – Lior Iluz Oct 09 '14 at 23:41
  • Alex Ruiz, a developer on android studio, has said *.iml files do not need to be included as it is recreated. Android studio does not necessarily follow the same recommendations as Intelli-j – letstango Nov 20 '14 at 18:40
  • 2
    why include Eclipse files if this is built with Android studio? – kraftydevil Dec 14 '14 at 18:40
  • Does this answer still hold in Android Studio 1.0? – Kevin Krumwiede Dec 17 '14 at 19:25
  • @KevinKrumwiede yes but since Android Studio 1.0, new projects are automatically added with a gitignore file. updated answer. – Lior Iluz Dec 18 '14 at 05:42
  • @LiorIluz Hmmm... there are several files not in the default .gitignore that contain the absolute path to the project. You mentioned something about using relative paths. How do you do that? I've asked a question here: http://stackoverflow.com/questions/27562791/how-to-force-android-studio-to-use-relative-paths – Kevin Krumwiede Dec 19 '14 at 09:33
  • So basically, the new default .gitignore says the opposite of your previous answer: check in project and module files. – Sky Kelsey Jan 06 '15 at 22:37
  • @SkyKelsey things changed... this answer has been through several changes along with the changes in the Studio project structure and the gradle version. I'm just keeping the answer updated as much as I can. If you find something wrong, please let me know so I can fix it asap. – Lior Iluz Jan 07 '15 at 21:24
  • 1
    Removed app/build too and everything is perfect. – Guillaume Jobin Jan 15 '15 at 15:29
  • 1
    Unfortunately this is still a mess. Files that contain both user-specific configurations (apparently) but also contain required information. Cant believe this couldnt be sorted out before a 1.0 release. – Greg Ennis Jan 28 '15 at 21:24
  • 16
    You should **not** version the `.iml` files unless you wan't to deal with unneeded annoyances if other users name the project differently when they check out. – theblang Feb 26 '15 at 20:35
  • 2
    Also, "app/app.iml" file seems to change every time I switch Android Studio from "Unit Test" build variant to "Instrumentation Test". This should disqualify at least "app/app.iml" for revision control. (Noted on Android Studio 1.1.0) – jokki Apr 07 '15 at 08:27
  • Suggest adding obj/ to ignore JNI (C/C++) object files too. Apart from that this worked perfectly for my Android Studio migration, many thanks. – Reuben Scratton Sep 12 '15 at 11:17
  • @ReubenScratton Thanks for the input. Added. I don't have JNI files to test it with so let me know if I added obj/ incorrectly. – Lior Iluz Sep 12 '15 at 17:15
  • 1
    I use this, but I found that .idea/modules.xml and .idea/gradle.xml (the latter discussed in Sky Kelsey's answer) both contain paths that are specific to my machine. It does not make sense to push these, but I am wondering whether simply removing these two will be fine or if it will imply removing other dependencies as well. – JHH Sep 30 '15 at 12:11
  • @JHH you're right, but ".idea" is added to this ignore file so I don't understand why it still pushed files under this folder for you. Maybe because it's missing '/'? – Lior Iluz Oct 01 '15 at 15:44
  • The top part of this answer should state that Android Studio also creates a .gitignore in the `` directory which ignores `/build/`. People using that part of the answer will try and emulate, so it should be complete (other answers here simply use `build/` instead of `/build` but you can see how that may not be desirable in some cases). – btalb Oct 15 '15 at 01:33
  • /app/build needs to be added to .gitignore too – syonip Nov 22 '15 at 14:55
  • @syonip build/ is already there and it ignores all build folders for us. – Lior Iluz Nov 23 '15 at 06:06
  • oh ok I was reading the top update, where there's /build instead of build/ – syonip Nov 23 '15 at 08:01
  • Sure... it shouldn't change because of a new studio version – Lior Iluz Nov 26 '15 at 06:09
  • @LiorIluz what about libs folders in the modules. have you intentionally missed them in the git ignore file ? or do you think they should be in version control system ? – Ahmed Dec 10 '15 at 07:46
  • @Ahmed If I understand you correctly, I think they should be in version control... if you add a library and import its classes, your team members will need the jar pushed as well, no? – Lior Iluz Dec 19 '15 at 16:54
  • 1
    Android Studio 1.5 *appears* to be ignoring `*.iml` and `/captures` by default. Can anyone else confirm if this is the case? – nneonneo Feb 20 '16 at 22:22
  • @nneonneo I can confirm that Android Studio 1.5 on PC adds `*.iml*` and `/captures` to .gitignore. – Overlord Zurg Mar 08 '16 at 13:40
  • Why do we also have .gitignore files in all our module folders? – Cilenco Aug 28 '16 at 18:37
  • Since Android Studio 2.2, they added `.externalNativeBuild` to the default .gitignore. Please update your answer... – Adam Burley Oct 29 '16 at 23:58
  • any updates to latest android studio ? As of my knowledge there are some of the files ignored in app file too. – Sagar Nayak May 26 '17 at 03:55
  • why "/local.properties" in default .gitignore ? it does not ignore local.properties file – Alessandro Scarozza Jul 18 '17 at 11:10
  • @LiorIluz But how about the `build` folder in `app` module?! – Dr.jacky Sep 15 '17 at 06:53
  • @LiorIluz you included output.json with a #Android Studio 3.0 comment in the same line. The inclusion of the comment inline with the file prevents git from actually ignoring the file (at least with Source Tree on mac). Had to separate the file and the comment into 2 lines to make it work. Thanks though! – pdriegen Dec 11 '17 at 15:11
  • 1
    And why would you put .gradle files in the .gitignore? The app.gradle has dependencies and it and etc – Yehonatan Jul 08 '18 at 11:33
  • @LiorIluz Hi Lior, Should I ignore the gradlew file? – Tefa Jun 10 '21 at 13:21
  • 1
    @Tefa don't think so. It's the Gradle Wrapper util that checks if gradle is installed so you can build your project. Better keep it. – Lior Iluz Jun 14 '21 at 15:32
160

Building on my normal Android .gitignore, and after reading through documentation on the Intellij IDEA website and reading posts on StackOverflow, I have constructed the following 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

Also note that as pointed out, the built native files section is primarily useful when you are building your own native code with the Android NDK. If, on the other hand, you are using a third party library that includes these files, you may wish to remove these lines (*.o and *.so) from your .gitignore.

hichris123
  • 10,145
  • 15
  • 56
  • 70
Phil
  • 35,852
  • 23
  • 123
  • 164
  • 10
    Almost right. I don't think its a good idea to ignore *.so because you won't be able to work with projects that have linked dependancies on NDK libraries. But a very good starting point by all accounts! – Skela Mar 12 '14 at 08:47
  • @Skela good point. I had these in there from when I was building my own native files - but I have also worked on projects that require a simple copy and paste of pre-built files. I added a note about this to the answer above. – Phil Mar 12 '14 at 13:36
  • @Phil Do you have any opinions about the XML files in `.idea/libraries`? Should they be shared or excluded in your opinion? – Alex Lockwood May 29 '14 at 18:25
  • 1
    @AlexLockwood I think these files should be included if the project is not dependent on another project or module. If, however, the project is dependent on a module that contains the libraries, then this file should be ignored at the project level, but not by the module. – Phil May 29 '14 at 18:35
  • @Phil very cool and I have used this so far but a dex file slips through the cracks: /moduledirectory/build/intermediates/dex-cache/cache.xml - wouldn't it make sense to add **/build in order to exclude the build folders in the modules as well? – Oliver Hausler Nov 30 '14 at 17:18
  • There is a build directory that gets created within the Application directory, for sample apps, shouldn't that be ignored too? - https://github.com/googlesamples/android-ActionBarCompat-Basic – Sumeet Pareek Apr 21 '15 at 10:03
  • @SumeetPareek yes, any directories with built or generated files should be ignored. – Phil Apr 21 '15 at 14:32
  • @Phil & @Skela, you should keep `*.so` in here (at the root `.gitignore`) and for those cases where you do not want to ignore `*.so`, do `git add -f` on them OR create a `.gitignore` in that subdirectory and add `!*.so` to it, to un-ignore them ONLY in that subset of the tree. – void.pointer Jun 21 '15 at 16:33
  • It's pretty much sums up all that is required for android studio .gitignore but i would rather track .gradle file and i did it in my setup – hi0001234d Apr 27 '16 at 08:36
84

Updated 7/2015:

Here is the definitive source from JetBrains


Directory based project format (.idea directory)

This format is used by all the recent IDE versions by default. Here is what you need to share:

  • All the files under .idea directory in the project root except the workspace.xml and tasks.xml files which store user specific settings
  • All the .iml module files that can be located in different module directories (applies to IntelliJ IDEA)

Be careful about sharing the following:

  • Android artifacts that produce a signed build (will contain keystore passwords)
  • In IDEA 13 and earlier dataSources.ids, datasources.xml can contain database passwords. IDEA 14 solves this problem.

You may consider not to share the following:

  • gradle.xml file, see this discussion
  • user dictionaries folder (to avoid conflicts if other developer has the same name)
  • XML files under .idea/libraries in case they are generated from Gradle project

Legacy project format (.ipr/.iml/.iws files)

  • Share the project .ipr file and all the .iml module files, don't share the .iws file as it stores user specific settings

While these instructions are for IntelliJ IDEA, they hold true 100% for Android Studio.


Here is a .gitignore snippet that incorporates all of the above rules:

# Android Studio / IntelliJ IDEA 
*.iws
.idea/libraries
.idea/tasks.xml
.idea/vcs.xml
.idea/workspace.xml
Sky Kelsey
  • 19,192
  • 5
  • 36
  • 77
  • Which SDKs are supported is defined in the AndroidManifest.xml (and also by Gradle). Any SDK allowed by that setting must be ok for development. Concerning code styles: this is not something that has to be maintained in each project separately, and moreover it should be clarified independent of the IDE. Copyright headers: hopefully, these are in your code base and not in any IDE project files. Otherwise building on the commandline would simply not include them... – Risadinha Oct 08 '13 at 10:31
  • @Risadinha 1) SDKs are defined at the IDE level as well. They are referenced in the Manifest, but the project file contains the actual SDK definitions. 2) Code style should be maintained AT LEAST at the project level. Ideally, everyone would write standard Java, but oh well. 3) Copyright headers are stored in the project. They are used for new file creation, and can contain macros for name, company name, project, date, etc. I recommend you check them out! In summary, the project files contain important meta information about the project that needs to be shared and controlled across the team. – Sky Kelsey Oct 08 '13 at 19:18
  • @SkyKelsey thanks for the clarification. 1) the SDK should only be defined in Gradle and AndroidManifest. The SDK must not interfere. Continuous Integration is agnostic of any IDE. 2)+3) I understand that these are the only reasons for versioning IDE project files. I prefer maintaining the config export files of different IDEs in a project independent matter, on a team/company level (their own repo). BTW the .idea folder holds plugin and user specific stuff, caches libraries and there are relative paths. Maintaining .gitignore entries for that - is that worth the effort? – Risadinha Oct 09 '13 at 12:00
  • I believe that the SDK needs to be defined in Android Studio for syntax highlighting. This may have changed with recent builds. It is necessary when building with IntelliJ. But if it is no longer necessary for Android Studio, there are still plenty of reasons to check the project files in. The reasons I mentioned are just the ones that spring to mind, and certainly not the only reasons. The link provided tells you what to checkin from .idea and what to leave out. I don't know if there is other stuff in there from plugins that should be left out. I still think you are doing it wrong. – Sky Kelsey Oct 09 '13 at 16:40
  • 3
    [A maintainer has pulled the changes to his own repo](https://github.com/github/gitignore/pull/798). It'll probably be pulled into master soon. – FalconC Nov 08 '13 at 21:22
  • 5
    JetBrains has deprecated DOC-1186 and put their [updated recommendations in a new post](https://intellij-support.jetbrains.com/entries/23393067): DO INCLUDE: All the files under .idea directory in the project root except the workspace.xml and tasks.xml, and all the .iml files. BE CAREFUL when sharing Android artifacts that produce a signed build (will contain keystore passwords), dataSources.ids and datasources.xml (they may contain passwords). CONSIDER EXCLUDING: gradle.xml, user dictionaries folder, and XML files under .idea/libraries (in case they are generated from Gradle project). – JSmitty Feb 05 '14 at 03:07
  • Thanks. Ugh that is a mess. I wish they had planned to separate out public and private information a little better. – Sky Kelsey Feb 05 '14 at 03:31
  • 2
    That's a lovely theory but this simply doesn't work for us. We consistently end up with .iml files with entries like this: `` Notice the number 38 that seems to constantly be being incremented. (the misc.xml file also has this trouble). – Sam Jul 09 '14 at 16:38
  • I would file an enhancement request with Jetbrains in that case. Personally, I get this ``. That said, this small annoyance doesn't outweigh the benefits. – Sky Kelsey Jul 10 '14 at 01:06
  • I too think it makes much more sense to commit (most) of the .idea directory, and .iml. Android projects differ from other types of projects because there is configuration that is beyond just coding an app: selecting the SDK version, referencing libraries, etc. If someone wanted to work on the same project, they would have to import it, select a new target SDK version, and re-add all of the libraries and .jars. Committing the .idea avoids that. – Elad Nava Dec 01 '14 at 12:58
50

I disagree with all of these answers. The following configuration is working great for our organization's app.

I ignore:

  • /build
  • /.idea (with possible exceptions, see comments in dalewking's answer)
  • *.iml
  • local.properties

I think almost everyone agrees about /build.

I got sick of constantly seeing messages about the various library.xml files that Gradle creates or deletes in /.idea. The build.gradle will run on the developers's local when they first check out the project, so why do those XML files need to be versioned? Android Studio will also generate the rest of /.idea when a developer creates a project using Check out from Version Control, so why does anything in that folder need to be versioned?

If the *.iml is versioned a new user will have to name the project exactly the same as it was when committed. Since this is also a generated file, why version it in the first place?

The local.properties files points to an absolute path on the file system for the SDK, so it definitely shouldn't be versioned.

Edit 1: Added .gradle to ignore the gradle caching stuff that should not be versioned (thanks Vasily Makarov).

Edit 2: Added .DS_Store now that I am using Mac. This folder is Mac specific and should not be versioned.

Additional note: You probably also want to add a directory to put your signing keys in when building a release version.

For copy/paste convenience:

.gradle
/build
/.idea
*.iml
local.properties
.DS_Store 
Community
  • 1
  • 1
theblang
  • 10,215
  • 9
  • 69
  • 120
  • 5
    I agree with your answer. I also believe that neither the *.iml or .idea files should be versioned: http://stackoverflow.com/a/26290130/2948212 – diegosasw Oct 10 '14 at 00:37
  • 9
    My vote is for your gitignore as it is very much like mine. Couple suggestions: Use `build/` instead of `/build` to match module build dirs like `app/build`. Use `.gradle` to match gradle caching directory. – Vasily Makarov Apr 14 '15 at 09:15
  • I also question why the default gitignore lists /build instead of build/ I end up with all the files in app/build in my repository if I use /build – guyland123 Apr 23 '15 at 21:40
  • @guyland123 I just noticed that I have another `.gitignore` file in my app directory that also contains `/build`. Is this auto generated, I can't remember? So `build/` will apply to subfolders? – theblang Apr 23 '15 at 21:52
  • @mattblang yes .gitignore is auto generated when you create a new project. It is not created however when you import a project from say Eclipse. build/ will match all directories named "build" beneath the location of the .gitignore file. Eg. app/build will be ignored. – guyland123 Apr 24 '15 at 13:44
  • Platform-specific files that are unrelated to the project, such as `.DS_Store`, are better ignored locally (`.git/info/exclude`) or globally as a per-system configuration (see `core.excludesfile` git setting). – Vladimir Panteleev Oct 24 '20 at 15:16
  • All rules in this answer are included in the default .gitignore by AndroidStudio 4.2.1 (as of 2021) – Roland Jul 01 '21 at 10:30
50

Android Studio Flamingo 2022.2.1

If you create a Gradle project using Android Studio the .gitignore file will contain the following:

.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
.cxx
local.properties

I would recommend ignoring the complete ".idea" directory because it contains user-specific configurations, nothing important for the build process.

Gradle project folder

The only thing that should be in your (Gradle) project folder after repository cloning is this structure (at least for the use cases I encountered so far):

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

Note: It is recommended to check-in the gradle wrapper scripts (gradlew, gradlew.bat) as described here.

To make the Wrapper files available to other developers and execution environments you’ll need to check them into version control.

Willi Mentzel
  • 27,862
  • 20
  • 113
  • 121
  • What about `build_file_checksums.ser`? If not ignored, it should not produce compile-time problems but must be deleted/reverted before you are able to -say- switch branches. – MathMax Sep 09 '20 at 12:46
  • @MassimoFrittelli In which Android Studio version was this file created? – Willi Mentzel Feb 07 '21 at 08:39
  • 4.something. Unfortunately I am not working on that project anymore so I cannot give you precise details, but I guess that every Android Studio 4 will generate that file. – MathMax Feb 07 '21 at 15:43
  • So the gradle project folder should have the items you mentioned in the end of your answer - but what does `.gradle` do in the ignore? – Chucky Dec 07 '21 at 11:17
  • 1
    Right, I see, .gradle is a folder containing generated build files and it need not be included, just like a few other 'dot' folders. I answered my own question! – Chucky Dec 07 '21 at 11:23
38

I use this .gitignore. I found it at: http://th4t.net/android-studio-gitignore.html

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

*/build/

*~
*.swp
helbaroudy
  • 1,052
  • 7
  • 16
  • 1
    */build/ is not ignoring unchanged files in my build directory. any ideas? @Solved: i had to add */*/build/ as my build folder was a couple of directories deep. – speedynomads Jul 19 '13 at 10:35
  • Use just `build/` to ignore any file in any folder named build, no matter where in or nested under the folder the `.gitignore` is in. Using `/build/` will only ignore a build folder directly in the top level. Using `*/build/` only looks for build folders nested 1 deep. Using `**/build/` will look recursively - I'm not sure if it starts at the top level or 1 level deep though (if at top level, then it would be same as `build/` though, so...) – LightCC Jul 29 '20 at 20:09
36

In the case of Android Studio, the only files that are required to be saved in version control are the files required to build the application from the command line using gradle. So you can ignore:

  • *.iml
  • .idea
  • build

However, if you save any IDE settings, such as custom code style settings, they get saved in the .idea folder. If you want those changes in version control, then you'd save the IDEA files as well (*.iml and .idea).

Siva Velusamy
  • 2,471
  • 17
  • 9
  • 3
    Thanks for explaining that. From what I have read if you are going to include .idea in your project you should ignore */.idea/workspace.xml and */.idea/tasks.xml – respectTheCode May 24 '13 at 15:58
  • 15
    do not ignore .idea folder for now. Gradle plugin doesn't have any 'gradle idea' task yet and import project in Android Studio is far from perfect now. – robotoaster May 30 '13 at 11:40
  • 2
    Also if you are working in a team consider ignoring local.properties because it contains the sdk path hardcoded. – Calin Jun 29 '13 at 16:24
  • @robotoaster, would you still recommend not ignoring the .idea folder? – loeschg Oct 30 '13 at 21:00
  • @Ioeschg no longer required. if you checkout clean git repo use Import New Project and it should work fine as long as build files are present. – robotoaster Nov 03 '13 at 17:01
21

My advise would be also to not ignore the .idea folder.

I've imported a Git-based Eclipse project to Android Studio and that went fine. Later, I wanted to import this project with Git (like the first time) to another machine with Android Studio, but that didn't worked. Android Studio did load all the files but wasn't able to "see" the project as a project. I only could open Git-files.

While importing the project for the first time (from Eclipse to Android Studio) my old .gitignore was overwritten and the new one looked like this:

  • .idea/.name
  • .idea/compiler.xml
  • .idea/copyright/profiles_settings.xml
  • .idea/encodings.xml
  • .idea/libraries/libs.xml
  • .idea/misc.xml
  • .idea/modules.xml
  • .idea/scopes/scope_settings.xml
  • .idea/vcs.xml
  • .idea/workspace.xml

So, I tried to use an empty gitignore and now it worked. The other Android Studio could load the files and the Project. I guess some files are not important (profiles_settings.xml) for Git and importing but I am just happy it worked.

Ashraf.Shk786
  • 618
  • 1
  • 11
  • 23
Ingo
  • 327
  • 1
  • 4
11

It's the best way to generate .gitignore via here

Agilanbu
  • 2,747
  • 2
  • 28
  • 33
LiangWang
  • 8,038
  • 8
  • 41
  • 54
9

There is NO NEED to add to the source control any of the following:

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

So you can configure hgignore or gitignore accordingly.

The first time a developer clones the source control can go:

  1. Open Android Studio
  2. Import Project
  3. Browse for the build.gradle within the cloned repository and open it

That's all

PS: Android Studio will then, through maven, get the gradle plugin assuming that your build.gradle looks similar to this:

// 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 will generate the content of .idea folder (including the workspace.xml, which shouldn't be in source control because it is generated) and the .gradle folder.

This approach is Eclipse-friendly in the way that the source control does not really know anything about Android Studio. Android Studio just needs the build.gradle to import a project and generate the rest.

diegosasw
  • 13,734
  • 16
  • 95
  • 159
  • 5
    Guys, those who vote negatively should provide a valid reason to do so. It might be helpful to let us/all know if we are mistaken with our answer. – diegosasw Dec 02 '14 at 20:10
  • 1
    `There is NO NEED` yes there are some cases: copyright templates that need to be share across team members, for instance. – Henrique de Sousa May 19 '16 at 14:51
8

I support the committing of .idea folder (excluding workspace.xml and tasks.xml). But I am starting to come to the conclusion that .iml files should be ignored.

Here is the issue:

Open a project in a directory named "foo" for example and you will get foo.iml and that all seems well and good. The problem is that if I simply rename the directory to foo2 (or clone it into another directory name) when you try to open the project in Android Studio you will get three things:

  • A new iml file named foo2.iml
  • The iml file for your Android project will be changed to point now to foo2 as its parent
  • .idea/modules.xml will have a line added for foo2.iml so it has both the old iml file and the one for the new directory

I can find no way to prevent Android Studio from doing this iml file generation when the project is stored in a different directory. Adding them to source control is going to cause problems. Therefore I think perhaps we should ignore *.iml files and .idea/modules.xml

linquize
  • 19,828
  • 10
  • 59
  • 83
  • I ignore both `/.idea` and `.iml` files. I would like to hear why the `.idea` folder should be committed. – theblang Jul 10 '14 at 14:36
  • Looking at my current project, I guess there are only 2 things I have checked in from .idea/: code style settings to enforce for the team and a user dictionary containing words specific to the project that are not real words. I started out with many files in .idea committed, but when a file starts showing up as changed for no good reason it would get added to .gitignore. My point was not so much that .idea should be checked in as it was to say .iml files and modules.xml should not be. –  Jul 11 '14 at 14:45
  • Sorry, SO took my comment before I was done with it (gotta remember that comments don't accept line breaks). Edited with the rest of my thoughts. –  Jul 11 '14 at 14:52
  • Thanks! Yeah, those files that you mentioned do make sense. I agree, the biggest headache was the `library.xml` files that kept triggering messages. Also, I don't understand why I keep seeing people say that *.iml files should be included, so great point there. – theblang Jul 11 '14 at 15:11
7

Depends on how your project format is maintained:

You have two options:

  1. Directory-based format (You will have a .idea folder which contains the project specific files)
  2. File-based format (configuration files are .iws and .ipr)

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

Files committed to version control depends on the above:

  1. Include .idea folder to version control, exclude workspace.xml and tasks.xml
  2. Version control .ipr file and all the .iml module files, exclude the .iws file as it stores user specific settings.

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

Ashraf.Shk786
  • 618
  • 1
  • 11
  • 23
ramk
  • 87
  • 2
  • 1
    all of my projects seem to have both .idea folders and .iws files – respectTheCode Jun 11 '13 at 12:07
  • 1
    Personally I tried following advice from JetBrains but it didn't work for me. Me and another dev are using Android Studio and we had .idea and .iml file in git. I soon found out that once you start merging commits and get to all sorts of trouble when merge tool fails to merge any of the files under .idea path. As result I added all imls and .idea to gitignore. After all Studio does a very good job of creating project structure when importing Gradle project. So now I just pay close attention to what I have in my gradle files. – zmicer Feb 24 '14 at 10:44
7

Tested with Android Studio 3.0

You might need to Install .ignore plugin.

You can auto-generate the .gitignore file for Android. Right click on folder and follow

Add .gitignore file

Then Select Android from left panel and click Generate

Generate .gitignore file

Android Studio will generate .gitignore file which contains all the file need to ignore.

Taken from http://menukanows.com/how-to-add-gitignore-file-in-android-project/

Menuka Ishan
  • 5,164
  • 3
  • 50
  • 66
5

Basically any file that is automatically regenerated.

A good test is to clone your repo and see if Android Studio is able to interpret and run your project immediately (generating what is missing).
If not, find what is missing, and make sure it isn't ignored, but added to the repo.

That being said, you can take example on existing .gitignore files, like the Android one.

# 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
  • 1,262,500
  • 529
  • 4,410
  • 5,250
  • 11
    This is incorrect. You should check in your *.iml files, and most likely .idea and *.ipr as well. The "anything that is automatically generated" part is especially wrong. Most Android projects are automatically generated after all. – Sky Kelsey Aug 26 '13 at 22:30
  • 6
    The \*.iml, \*.idea and \*.ipr are Android-Studio/IntelliJ specific. They are *not* needed to build the project. As they are IDE-specific, and not build-chain specific, they should probably not be checked in. Everyone can use any IDE, there is no reason to check in IntelliJ project files and not Eclipse ones, for example. – Marc Plano-Lesay Oct 01 '13 at 06:09
  • 2
    If you want to work on multiple forks of the same project, or with a team where everyone uses the same IDE, or have version control of the intricate settings you use for your IDE, then yes, you should check the files in. Project files for IntelliJ are much more than simple fluff used to open your code in an editor. – Sky Kelsey Nov 18 '13 at 07:00
  • 2
    why do my iml files keep showing as changed between me and my colleague? specifically external.root.project.path keeps changing under the tag – Sam Mar 25 '14 at 18:28
  • Using Android Studio 0.8.12 on Windows 8.1 and on OS X Mavericks with the same project, I notice that the following two files get modified and marked as changed by Git when I open the project: .iml and .idea\misc.xml. Specifically: gets added or removed to/from .iml and .idea\misc.xml gets changed to due JDK install differences between the OS's. – jkwuc89 Oct 13 '14 at 17:44
5

As of Android Studio 0.8.4 .gitignore file is generated automatically when starting new project. By default it contains:

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
Johnny Doe
  • 3,280
  • 4
  • 29
  • 45
5

Using the api provided by gitignore.io, you can get is automatically generated. Here is the direct-link also 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
Daniyal Javaid
  • 1,426
  • 2
  • 18
  • 32
4

I'm kosher with adding the .iml files and Intellij sez to add the .idea folder but ignore .idea/workspace.xml and .idea/tasks.xml, but what about .idea/libraries/ ?

I don't see how it makes sense to add this. It has a list of XML files that list libraries the Android Studio project is supposed to know about. These are supposed to come instead from build.gradle defined dependencies -- not an IDE project file.

Also the contents of one of these files looks like this:

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

It doesn't make sense to commit this. What if the user specified a different home dir for gradle, or if they use a different gradle version, the path under .gradle/caches/artifacts-xxx is going to be different for them (i.e. artifacts- the number appended on the end will relate to the gradle version release you are using.) These paths are not universal, and yet the advice is to check all this in?

zenocon
  • 1,597
  • 1
  • 17
  • 24
3

I know this is an old topic and there are certainly a lot of options, but I really prefer gibo by Simon Whitaker. It's super simple to use, cross-platform (mac, *nix, and windows), and uses the github gitignore repo so it is (basically) always up to date.

Make sure your local cache is up to date:

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

Search for the language/technology you need:

    $ gibo --search android
    Android

Display the .gitignore file:

    $ 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

Now, append it to your project's .gitignore file:

    $ gibo Android >> .gitignore

(Make sure you use >> to append to your project's .gitignore file; one > will overwrite it - as I've done many times on accident!)

I know this isn't answering the OP's exact question, but using gibo makes it so you pretty much don't have to think about 'the question' anymore! .. it's nice! ;)

kodybrown
  • 2,337
  • 26
  • 22
3

To get a better idea, all you need are the following files

  • app
  • build.gradle
  • settings.gradle

Basic Android project structure

You could put everything else in the .gitignore file. All your app changes lies mostly in these files and folders. The rest you see in a basic project are gradle build files or Android Studio configuration files.

If you are using Android Studio, you can use "Import project" to successfully build the project. Alternatively you can build using command line, follow Building Android Projects with Gradle.

kalan nawarathne
  • 1,944
  • 27
  • 26
3

It's best to add up the .gitignore list through the development time to prevent unknown side effect when Version Control won't work for some reason because of the pre-defined (copy/paste) list from somewhere. For one of my project, the ignore list is only of:

.gradle
.idea
libs
obj
build
*.log
Tim Long
  • 2,039
  • 1
  • 22
  • 25
3

Github maintains useful gitignore items for various kinds of projects. Here is the list of useful gitignore items for android projects.

# 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

Sudip Bhandari
  • 2,165
  • 1
  • 27
  • 26
  • 3
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - [From Review](/review/low-quality-posts/15214630) – imtheman Feb 15 '17 at 06:39
  • @imtheman plausible.. I have updated the answer and put the link as reference – Sudip Bhandari Feb 15 '17 at 06:42
2

I merge Github .gitignore files

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

Please read: JetBrains Support: How to manage projects under Version Control Systems

d.danailov
  • 9,594
  • 4
  • 51
  • 36
1

As of Android Studio 0.8.4 .gitignore file is generated automatically when starting new project. By default it contains:

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

I agree with this statement, however I modify this file to change /build to build/ (This will include /build and /app/build) So I don't end up with all the files in app/build in my repository.

Note also that if you import a project from Eclipse, the .gitignore won't be copied, or "automagically" created for you.

guyland123
  • 841
  • 9
  • 4
1

Android Studio 3.5.3

I use this for my libraries and projects and it covers most of the files that generate by android studio and other famous tools:

# 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
  • 4,171
  • 3
  • 10
  • 21
1

This is created using the reference of http://gitignore.io/ Where you can create the latest updated gitignore file for any project. For Android http://gitignore.io/api/androidstudio. Hope this helps. Currently I am using 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
Vinodh Ram
  • 709
  • 1
  • 9
  • 22
0

Compilation:

#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/
Aqib Mumtaz
  • 4,936
  • 1
  • 36
  • 33
0

To circumvent the import of all files, where Android Studio ignores the "Ignored Files" list, but still leverage Android Studio VCS, I did the following: This will use the "Ignored Files" list from Android Studio (after import! not during) AND avoid having to use the cumbersome way Tortoise SVN sets the svn:ignore list.

  1. Use the Tortoise SVN repository browser to create a new project folder directly in the repository.
  2. Use Tortoise SVN to checkout the new folder over the top of the folder you want to import. You will get a warning that the local folder is not empty. Ignore the warning. Now you have a versioned top level folder with unversioned content.
  3. Open your project from the local working directory. VCS should now be enabled automatically
  4. Set your file exceptions in File -> Settings -> Version Control -> Ignored Files
  5. Add files to SVN from Android Studio: select 'App' in Project Structure -> VCS -> Add to VCS (this will add all files, except "Ignored Files")
  6. Commit Changes

Going forward, "Ignored Files" will be ignored and you can still manage VCS from Android Studio.

Cheers, -Joost

Joost
  • 82
  • 1
  • 9
0

You can auto generate .gitignore templates for any type of project on this website

Maso Mahboob
  • 61
  • 1
  • 3
-1

This official documentation from JetBrains Support says the following should be included:

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

It also gives other recommendations of things to be careful about.

craned
  • 2,991
  • 2
  • 34
  • 38
-1

.gitignore from AndroidRate library

# 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
Alexander Savin
  • 1,952
  • 1
  • 15
  • 30
-1

https://github.com/github/gitignore is awesome collection

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
duyuanchao
  • 3,863
  • 1
  • 25
  • 16
-3

I had problems with ignoring build files, but this seems to work :-)

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

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

# Eclipse project files
.classpath
.project

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

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