एंड्रॉइड स्टूडियो प्रोजेक्ट के लिए मेरे.gitignore में क्या होना चाहिए?




android-studio (20)

अज्ञात दुष्प्रभाव को रोकने के लिए विकास समय के माध्यम से .gitignore सूची को जोड़ना सबसे अच्छा है जब संस्करण नियंत्रण कुछ कारणों से पूर्व-परिभाषित (प्रतिलिपि / पेस्ट) सूची के कारण काम नहीं करेगा। मेरी परियोजना में से एक के लिए, अनदेखा सूची केवल निम्न है:

.gradle
.idea
libs
obj
build
*.log

एंड्रॉइड स्टूडियो प्रोजेक्ट के लिए मेरे .gitignore में कौन सी फाइलें होनी चाहिए?

मैंने कई उदाहरण देखे हैं जिनमें सभी शामिल हैं .iml लेकिन IntelliJ दस्तावेज़ कहते हैं कि .iml को आपके स्रोत नियंत्रण में शामिल किया जाना चाहिए।


इस पर निर्भर करता है कि आपका प्रोजेक्ट प्रारूप कैसे बनाए रखा जाता है:

आपके पास दो विकल्प हैं:

  1. निर्देशिका-आधारित प्रारूप (आपके पास एक .idea फ़ोल्डर होगा जिसमें प्रोजेक्ट विशिष्ट फ़ाइलें .idea )
  2. फ़ाइल-आधारित प्रारूप (कॉन्फ़िगरेशन फ़ाइलें हैं। .iws और .iws )

रेफरी: http://www.jetbrains.com/idea/webhelp/project.html

संस्करण नियंत्रण के लिए प्रतिबद्ध फ़ाइलें उपर्युक्त पर निर्भर करती हैं:

  1. वर्जन नियंत्रण में .idea फ़ोल्डर शामिल करें, workspace.xml और tasks.xml बाहर करें
  2. संस्करण नियंत्रण .iml फ़ाइल और सभी .iml मॉड्यूल फ़ाइलें, .iws फ़ाइल को बहिष्कृत करें क्योंकि यह उपयोगकर्ता विशिष्ट सेटिंग्स को संग्रहीत करती है।

रेफरी: https://intellij-support.jetbrains.com/entries/23393067


एंड्रॉइड स्टूडियो 0.8.4 के रूप में। नई परियोजना शुरू करते समय गिटिनोरोर फ़ाइल स्वचालित रूप से जेनरेट की जाती है। डिफ़ॉल्ट रूप से इसमें शामिल हैं:

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

मैं इस कथन से सहमत हूं, हालांकि मैं इस फ़ाइल को बदलने / निर्माण करने के लिए / / इसमें निर्माण / निर्माण और / ऐप / बिल्ड करने के लिए संशोधित करता हूं, इसलिए मैं अपने भंडार में ऐप / बिल्ड में सभी फ़ाइलों के साथ समाप्त नहीं होता हूं।

ध्यान दें कि यदि आप एक्लिप्स से कोई प्रोजेक्ट आयात करते हैं, तो .gitignore की प्रतिलिपि नहीं बनाई जाएगी, या आपके लिए "स्वचालित रूप से" बनाई गई नहीं है।


एंड्रॉइड स्टूडियो 3.0 परियोजनाओं के लिए निम्न का उपयोग करें:

.gitignore

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

ग्रैडल परियोजना फ़ोल्डर

रिपोजिटरी क्लोनिंग के बाद आपके (ग्रैडल) प्रोजेक्ट फ़ोल्डर में एकमात्र चीज यह संरचना है (कम से कम उपयोग के मामलों के लिए मुझे अब तक सामना करना पड़ा):

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

निम्नलिखित में से किसी भी स्रोत नियंत्रण में जोड़ने की आवश्यकता नहीं है:

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

तो आप तदनुसार hgignore या gitignore कॉन्फ़िगर कर सकते हैं।

पहली बार एक डेवलपर क्लोन स्रोत नियंत्रण जा सकता है:

  1. एंड्रॉइड स्टूडियो खोलें
  2. परियोजना आयात करें
  3. क्लोन रिपोजिटरी के भीतर build.gradle के लिए ब्राउज़ करें और इसे खोलें

बस इतना ही

पीएस: एंड्रॉइड स्टूडियो तब, मैवेन के माध्यम से, धीरे-धीरे प्लगइन प्राप्त करेगा, यह मानते हुए कि आपका build.gradle इस तरह दिखता है:

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

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

allprojects {
    repositories {
        mavenCentral()
    }
}

एंड्रॉइड स्टूडियो .idea फ़ोल्डर की सामग्री उत्पन्न करेगा (वर्कस्पेस.एक्सएमएल सहित, जो स्रोत नियंत्रण में नहीं होना चाहिए क्योंकि यह उत्पन्न होता है ) और .gradle फ़ोल्डर।

यह दृष्टिकोण ग्रहण-अनुकूल है जिस तरह से स्रोत नियंत्रण वास्तव में एंड्रॉइड स्टूडियो के बारे में कुछ भी नहीं जानता है। एंड्रॉइड स्टूडियो को सिर्फ एक परियोजना आयात करने और शेष उत्पन्न करने के लिए build.gradle की आवश्यकता है।


बेहतर विचार पाने के लिए, आपको केवल निम्नलिखित फाइलें चाहिए

  • एप्लिकेशन
  • build.gradle
  • settings.gradle

आप सब कुछ और .gitignore फ़ाइल में डाल सकते हैं। आपके सभी ऐप परिवर्तन ज्यादातर इन फ़ाइलों और फ़ोल्डर्स में निहित हैं। मूलभूत प्रोजेक्ट में जो शेष आप देखते हैं, वे हैंडल बिल्ड फाइलें या एंड्रॉइड स्टूडियो कॉन्फ़िगरेशन फाइलें हैं।

यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं, तो आप प्रोजेक्ट को सफलतापूर्वक बनाने के लिए "प्रोजेक्ट आयात करें" का उपयोग कर सकते हैं। वैकल्पिक रूप से आप कमांड लाइन का उपयोग कर निर्माण कर सकते हैं, ग्रैडल के साथ बिल्डिंग एंड्रॉइड प्रोजेक्ट का पालन करें।


मूल रूप से कोई भी फ़ाइल जो स्वचालित रूप से पुन: उत्पन्न होती है।

एक अच्छा परीक्षण है अपने रेपो को क्लोन करना और देखें कि क्या एंड्रॉइड स्टूडियो तुरंत आपकी परियोजना को समझने और चलाने में सक्षम है (जो गुम है) उत्पन्न करना।
यदि नहीं, तो क्या गुम है, और सुनिश्चित करें कि इसे अनदेखा नहीं किया गया है, लेकिन रेपो में जोड़ा गया है।

ऐसा कहा जा रहा है कि आप एंड्रॉइड वन की तरह मौजूदा .gitignore फ़ाइलों पर उदाहरण ले सकते हैं।

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

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

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
proguard/

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

मेरी सलाह भी .idea फ़ोल्डर को अनदेखा नहीं करना होगा।

मैंने एंड्रॉइड स्टूडियो को गिट-आधारित एक्लिप्स परियोजना आयात की है और यह ठीक हो गया है। बाद में, मैं एंड्रॉइड स्टूडियो के साथ एक और मशीन पर गिट (पहली बार) के साथ इस परियोजना को आयात करना चाहता था, लेकिन यह काम नहीं किया। एंड्रॉइड स्टूडियो ने सभी फाइलों को लोड किया लेकिन परियोजना के रूप में प्रोजेक्ट को "देखने" में सक्षम नहीं था। मैं केवल गिट-फाइल खोल सकता था।

प्रोजेक्ट को पहली बार आयात करने के दौरान (एक्लिप्स से एंड्रॉइड स्टूडियो तक) मेरा पुराना। गिटिनोरोर ओवरराइट किया गया था और नया यह इस तरह दिख रहा था:

  • .idea / .name
  • .idea / compiler.xml
  • .idea / कॉपीराइट / profiles_settings.xml
  • .idea / encodings.xml
  • .idea / पुस्तकालयों / libs.xml
  • .idea / misc.xml
  • .idea / modules.xml
  • .idea / स्कोप / scope_settings.xml
  • .idea / vcs.xml
  • .idea / workspace.xml

तो, मैंने एक खाली गिटिनोरोर का उपयोग करने की कोशिश की और अब यह काम किया। अन्य एंड्रॉइड स्टूडियो फाइलों और परियोजना को लोड कर सकता है। मुझे लगता है कि कुछ फाइलें गिट और आयात के लिए महत्वपूर्ण नहीं हैं (profiles_settings.xml) लेकिन मैं बस खुश हूं कि यह काम करता है।


मैं .idea फ़ोल्डर को करने का समर्थन करता हूं ( workspace.xml और tasks.xml को छोड़कर)। लेकिन मैं इस निष्कर्ष पर आना शुरू कर रहा हूं कि .iml फ़ाइलों को अनदेखा किया जाना चाहिए।

यहां मुद्दा है:

उदाहरण के लिए "foo" नामक निर्देशिका में एक प्रोजेक्ट खोलें और आपको foo.iml मिल जाएगा और यह सब ठीक और अच्छा लगता है। समस्या यह है कि यदि आप एंड्रॉइड स्टूडियो में प्रोजेक्ट खोलने का प्रयास करते हैं तो मैं बस foo2 (या इसे किसी अन्य निर्देशिका नाम में क्लोन करें) में निर्देशिका का नाम बदलता हूं, आपको तीन चीजें मिलेंगी:

  • Foo2.iml नाम की एक नई आईएमएल फ़ाइल
  • आपके एंड्रॉइड प्रोजेक्ट के लिए आईएमएल फाइल अब अपने माता-पिता के रूप में foo2 पर बदल जाएगी
  • .idea / modules.xml में foo2.iml के लिए एक पंक्ति जोड़ा जाएगा, इसलिए इसमें पुरानी आईएमएल फ़ाइल और नई निर्देशिका के लिए एक है

जब मैं किसी भिन्न निर्देशिका में संग्रहीत होता हूं तो एंड्रॉइड स्टूडियो को इस आईएमएल फ़ाइल पीढ़ी को करने से रोकने का कोई तरीका नहीं मिल सकता है। उन्हें स्रोत नियंत्रण में जोड़ने से समस्याएं पैदा हो रही हैं। इसलिए मुझे लगता है कि हमें * .iml फ़ाइलों और .idea/modules.xml को अनदेखा करना चाहिए


मैं .idea फ़ोल्डर जोड़ने के लिए .iml फ़ाइलों और Intellij sez जोड़ने के साथ कोशेर हूं लेकिन .idea / workspace.xml और .idea / tasks.xml को अनदेखा करता हूं, लेकिन .idea / पुस्तकालयों / के बारे में क्या?

मैं नहीं देखता कि इसे जोड़ने के लिए यह कैसे समझ में आता है। इसमें एक्सएमएल फाइलों की एक सूची है जो एंड्रॉइड स्टूडियो प्रोजेक्ट के बारे में जानी जाने वाली पुस्तकालयों की सूची है। इन्हें build.gradle परिभाषित निर्भरताओं से आना चाहिए - आईडीई प्रोजेक्ट फ़ाइल नहीं।

इन फ़ाइलों में से किसी एक की सामग्री इस तरह दिखती है:

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

यह प्रतिबद्ध करने के लिए समझ में नहीं आता है। क्या होगा यदि उपयोगकर्ता ने .gradle/caches/artifacts-xxx लिए एक अलग घर डीआईआर निर्दिष्ट किया है, या यदि वे एक अलग .gradle/caches/artifacts-xxx संस्करण का उपयोग करते हैं, तो .gradle/caches/artifacts-xxx तहत पथ उनके लिए अलग होगा (यानी artifacts- अंत में संलग्न संख्या आप जिस स्प्रिंग संस्करण रिलीज का उपयोग कर रहे हैं उससे संबंधित हैं।) ये पथ सार्वभौमिक नहीं हैं, और फिर भी सलाह यह सब जांचना है?


मैं इसका उपयोग करता हूं .gitignore। मैंने इसे यहां पाया: http://th4t.net/android-studio-gitignore.html

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

*/build/

*~
*.swp

मैं गिथब .gitignore फ़ाइलों को मर्ज करें

### Github Android.gitignore ### 

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

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

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

### Github JetBrains.gitignore ### 

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

*.iml

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

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

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

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

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

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

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

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

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


.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

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

7/2015 अपडेट किया गया:

जेटब्रेन से निश्चित स्रोत यहां दिया गया है

निर्देशिका आधारित परियोजना प्रारूप (.idea निर्देशिका)

इस प्रारूप का उपयोग डिफ़ॉल्ट रूप से सभी हालिया आईडीई संस्करणों द्वारा किया जाता है। यहां आपको साझा करने की आवश्यकता है:

  • .idea और tasks.xml फ़ाइलों को छोड़कर प्रोजेक्ट रूट में .idea निर्देशिका के अंतर्गत सभी फ़ाइलें जो उपयोगकर्ता विशिष्ट सेटिंग्स को संग्रहीत करती हैं
  • सभी .iml मॉड्यूल फ़ाइलें जो विभिन्न मॉड्यूल निर्देशिकाओं में स्थित हो सकती हैं (IntelliJ IDEA पर लागू होती है)

निम्नलिखित साझा करने के बारे में सावधान रहें :

  • एंड्रॉइड कलाकृतियों जो एक हस्ताक्षरित निर्माण का उत्पादन करते हैं (इसमें कीस्टोर पासवर्ड होंगे)
  • आईडीईए 13 और पहले के datasources.xml dataSources.ids , datasources.xml में डेटाबेस पासवर्ड हो सकते हैं। आईडीईए 14 इस समस्या को हल करता है

आप निम्न को साझा न करने पर विचार कर सकते हैं:

  • gradle.xml फ़ाइल, इस चर्चा को देखें
  • उपयोगकर्ता शब्दकोश फ़ोल्डर (यदि अन्य डेवलपर का एक ही नाम है तो संघर्ष से बचने के लिए)
  • .idea/libraries प्रोजेक्ट से उत्पन्न होने पर .idea/libraries अंतर्गत एक्सएमएल फाइलें

विरासत परियोजना प्रारूप ( .iml / .iws / .iws फ़ाइलें)

  • प्रोजेक्ट .iml फ़ाइल और सभी .iml मॉड्यूल फ़ाइलों को साझा करें , .iws फ़ाइल साझा न करें क्योंकि यह उपयोगकर्ता विशिष्ट सेटिंग्स को संग्रहीत करता है

हालांकि ये निर्देश IntelliJ IDEA के लिए हैं, लेकिन एंड्रॉइड स्टूडियो के लिए वे 100% सही हैं।

यहां एक .gitignore स्निपेट है जो उपरोक्त सभी नियमों को शामिल करता है:

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

एंड्रॉइड स्टूडियो 3.0 के साथ परीक्षण किया

आपको .ignore प्लगइन स्थापित करने की आवश्यकता हो सकती है।

आप Android के लिए .gitignore फ़ाइल को स्वत: जेनरेट कर सकते हैं। फ़ोल्डर पर राइट क्लिक करें और फ़ॉलो करें

फिर बाएं पैनल से एंड्रॉइड का चयन करें और जेनरेट करें पर क्लिक करें

एंड्रॉइड स्टूडियो उत्पन्न करेगा .gitignore फ़ाइल जिसमें सभी फाइलों को अनदेखा करने की आवश्यकता है।

http://menukanows.com/how-to-add-gitignore-file-in-android-project/ से लिया गया


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/

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


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. चेतावनी को अनदेखा करें। 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


    ### Github Android.gitignore ### 

# Built application files
*.apk
*.ap_

# Files for the Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

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

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

### Github JetBrains.gitignore ### 

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

*.iml

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

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

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

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

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

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

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

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






gitignore