【发布时间】:2015-10-26 02:50:47
【问题描述】:
我遇到了源代码控制问题,即在将项目与 gradle 同步后,某些文件不断更改。
以下是通常发生的情况
- 我创建了一个发布分支。
- Gradle 需要同步,所以我同步它。
- 在同步后观察这些文件时会发生变化:
git status
modified: app/build/generated/source/r/debug/android/support/v7/appcompat/R.java
modified: app/build/generated/source/r/debug/com/google/android/gms/R.java
modified: app/build/generated/source/r/debug/obfuscated/obfuscated/R.java
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$color.class
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$drawable.class
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$id.class
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$layout.class
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$string.class
deleted: app/build/intermediates/classes/debug/com/google/android/gms/R$color.class
deleted: app/build/intermediates/classes/debug/com/google/android/gms/R$drawable.class
deleted: app/build/intermediates/classes/debug/com/google/android/gms/R$string.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/Globals.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$color.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$dimen.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$drawable.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$id.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$integer.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$layout.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$menu.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$mipmap.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$raw.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$string.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$style.class
deleted: app/build/intermediates/classes/debug/obfuscated/obfuscated/R$styleable.class
modified: app/build/intermediates/manifests/full/debug/AndroidManifest.xml
modified: app/build/intermediates/symbols/debug/R.txt
我已与团队的其他成员沟通使用此 .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
# Eclipse project files
.classpath
.project
# Android Studio
*.iws
*.iml
.idea
.gradle
build/
*/build/
问题 1:提交上述更改?
这些文件都与 .gitignore 中指定的 */build/ 匹配,所以我的直觉是使用 git rm 在本地将它们从源代码控制中删除。对吗?
问题 2:删除 Manifest 或整个构建文件夹是否有问题?
这个:app/build/intermediates/manifests/full/debug/AndroidManifest.xml
删除整个构建文件夹 (git rm app/build -r -f) 并重新同步会产生此错误:
Error:Execution failed for task ':app:processDebugManifest'. > com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: /Users/Obfuscated/Projects/Android/Obfuscated/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.1/AndroidManifest.xml (No such file or directory)
问题3:如何合理组织项目和团队?
我需要做些什么才能使项目正确组织?我团队的其他成员也将如何进行?
【问题讨论】:
-
在任何深度忽略名为“build”的目录的语法是
**/build/ -
你是说使用
**/build而不是*/build? -
是的,
**/build/会更好。