问题描述
我遇到了源代码控制问题,其中某些项目在与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:删除清单或整个构建文件夹是否有问题?
这个: 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-a??ar/com.android.support/appcompat-v7/22.2.1/AndroidManifest.xml (No such file or directory)
问题3:如何正确组织项目和团队?
我需要做些什么来正确组织项目? 我团队的其他成员也将如何进行?
1楼
尝试之前备份文件。
你有两个问题。
- 您已在Git存储库中提交/存储了构建文件和* .class文件。
- 您的.gitignore文件可能有问题。
解决问题1:
删除构建文件夹。 它是由等级生成的。
来自git status的行
deleted: app/build/intermediates/classes/debug/android/support/v7/appcompat/R$color.class
表示已在您的工作副本上删除了Git存储库中提交的文件,这很好。 因此,是的,您确实要提交此“删除”。
问题2的解决方案:在执行步骤1之后,不需要的文件将从Git存储库中删除。 Git Status将显示“添加”文件列表。 修改.gitignore文件,使它们不再显示在git status命令中。 如/ build / **之类的,您需要对其进行调整。 通常,/ build中的任何文件都不应提交到Git存储库
根据需要重复
作为任何git add命令之前的一般规则,请考虑该命令是否正确或是否应包含在.gitignore中
清单文件应提交到git存储库。 但不是build文件夹中的那个。