Android Studio項目應該提交哪些文件到GitHub上?

Google過,沒有找到滿意的答案,想問問各位大神們在把Android Studio的項目提交到GitHub的時候一般忽略哪些文件,提交哪些文件,以及原因是什麼?謝謝!


https://github.com/github/gitignore/blob/master/Android.gitignore.


弄清楚你把代碼上傳到github的目的是什麼,自然而然就知道上傳些什麼了,可以把開源項目想像成一款產品,如果你是用戶,你需要什麼。

上傳到github肯定是想開源你的代碼,首先別人clone你的代碼導入到IDE能夠立馬使用,不用任何額外的配置那是最好不過的事情;其次別人查閱你的代碼時,能夠很容易地讀懂。

所以:

  • 如果你的項目有設計文檔、類圖、單元測試、說明文檔什麼的,應該放進去;如果你為項目寫了更新日誌,有每次更新的記錄,也應該放進去;文檔類的東西可以在項目中建立一個doc文件夾,專門放這些;
  • 如果你依賴了第三方庫,建議也放進去,這會給使用這個項目的人帶來極大地方便;
  • 如果你的項目可以導成jar包獨立使用,建議放一份獨立的jar包;
  • 其它就是基本的一些東西:項目源碼

其實你可以看一下github上流行的開源項目,他們是怎麼做的;或者看一下用AS創建項目時,默認的.gitignore中過濾掉了哪些文件;起碼編譯生成的文件是不會上傳的,因為用戶拿到你的代碼,在運行之前肯定會先編譯,上傳編譯生成文件白白佔用了github的存儲空間。

補一刀,可以看下StackOverflow上的這個回答:http://stackoverflow.com/questions/16736856/what-should-be-in-my-gitignore-for-an-android-studio-project


我們團隊用的:

.gradle
/local.properties
.DS_Store # only needed under mac os
/build
/captures
*.iml
.idea
*.apk #optional

下面詳細說:

其中

.idea #ide 相關
*.apk #optional

是在系統默認的.gitignore文件基礎上額外添加的,如果不加 .idea的話會存在不同開發人員開發機上.idea/下文件不同,導致需要提交的問題。而且經過我和團隊小夥伴之間的實踐.idea目錄下的東西AS都會自動生成,並不需要提交到倉庫中。

#針對樓上抖的機靈

github也是提供「私有項目」託管的 ,所以公司的項目放到github上也不是不可以


現在的AS已經很智能了,用AS新建的項目會自動在目錄下新建.gitignore,默認已經忽略了下面五個

/build

/.idea

/.gradle

*.iml

local.properties

如果是OSX,還會自動忽略.DS_Store。另外還有一些可以加入的遇到了再加就行,比如

*.log

*.keystore


# Built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/
out
lib

# Gradle files
build/
.gradle
gradlew.bat
build
gradle.properties
gradle
gradlew

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

##Android Studio Ignore files
/.idea/workspace.xml
/.idea/libraries
/captures
.navigation/

# IntelliJ IDEA
.idea
*.iml
*.ipr
*.iws

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

# Mac system files
.DS_Store

# Eclipse project files
.classpath
.project
.settings/
eclipsebin
.metadata/

#NDK
obj/
jniLibs

具體可以查看Github https://github.com/androidyue/AndroidGitIgnore/blob/master/gitignore


貼一下我自己常用的.gitignore JsBridge/.gitignore at master · lzyzsd/JsBridge · GitHub文件,對gitignore/Android.gitignore at master · github/gitignore · GitHub 進行了一些補充。

#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

# Eclipse project files

.classpath

.project

# Android Studio

.idea

#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.

.gradle

build/

# Signing files

.signing/

# User-specific configurations

.idea/libraries/

.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/vcs.xml

*.iml


GitHub新建倉庫的時候不是可以選擇gitignore文件么?選Android就行了


Android Studio 是基於 JetBrains 的 IntelliJ,所以復用 GitHub 維護的 gitignore 倉庫里的對應文件 JetBrains.gitignore 就已經足夠好。

https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore

其它類型的項目的 gitignore 也可以從這個倉庫里找。


謝邀,但是我除了不想讓別人看到的東西不提交上去之外,其他的基本都提交上去了。至於build目錄下的文件是默認已經ingored的了。


去github上看看star數量過1000的項目的gitignore文件就好了,一般來說,build生成的文件和ide相關的文件都不需要提交,別人只要能從你提交的代碼中完成編譯就可以了


訪問 gitignore.io,輸入操作系統、IDE、編程語言等,點擊 Generate 即可生成 .gitignore 文件。

我一直在用這個網站,剛剛順手比較了一下,這個網站生成的 Android .gitignore 和 @祈雨藍 提到的 gitignore/Android.gitignore at master · github/gitignore · GitHub 幾乎相同,只多兩行:

### Android Patch ###
gen-external-apklibs


請看我寫的這篇文章

http://www.jianshu.com/p/caeacecb50cc


沒準你應該知道一下.有一個插件叫

.gitignore

安裝試試吧.自動生成/追加到原有文件.


除了默認的 gitignore 之外,有時候自己會添加一些配置文件,這些一定要記得考慮一下是否需要放到 ignore 裡面。

典型的比如簽名證書的密碼配置文件。為了避免每次編譯都重新輸入證書密碼,我們會在 build.gradle 中配置證書密碼,如果這麼做,那麼將存儲證書密碼的文件添加到 gitignore 中比較好。


*.iml文件添加到.gitignore後,新檢出項目沒有.iml文件不就無法構建了嗎??


所有可以使程序可以正常運行的最小集合。

No more and no less.


我平時都是這樣簡單粗暴!


推薦閱讀:

Android Studio有哪些非常好用的插件?
有什麼好用的Android Studio的插件值得推薦?
如何做好安卓應用的界面設計?
Android 手機自動化測試工具有哪幾種?
Android 開發有哪些新技術出現?

TAG:版本控制系統 | Android開發 | 開源項目 | GitHub | AndroidStudio |