当前位置: 代码迷 >> Android >> 如何在源代码管理下处理Android Gradle文件?
  详细解决方案

如何在源代码管理下处理Android Gradle文件?

热度:51   发布时间:2023-08-04 11:59:07.0

我遇到了源代码控制问题,其中某些项目在与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文件。
  2. 您的.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文件夹中的那个。

  相关解决方案