Idea/misc.xml 的 language-Level 标记不断地更改 JDK

由于我不知道的原因,language-Level 键从 JDK _ 1 _ 8更改为 JDK _ 1 _ 7。

到底发生了什么?

这是否与从事该项目的其他开发人员的 IDE 有关?也许他们有其他的 Android 工作室设置?

下面是我注意到源代码管理下的文件发生变化后弹出的内容:

$ git diff
diff --git a/.idea/misc.xml b/.idea/misc.xml
index fbb6828..5d19981 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

这是我的宝贝,以防万一。

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

我该如何继续下去,以便它只是停留在一种方式或其他?

22906 次浏览

我解决了这个问题,当我删除和停止提交的.idea 文件夹到源代码管理。

问题是,其中一些文件是机器特定的配置,因此共享它们可能是一个问题。

删除它和其他违规文件需要两个步骤:

1)加上这个. gitignore (来自 https://stackoverflow.com/a/32942758/869936) :

#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/

2)对于.gitignore 的每一行,从命令行运行 git rm line

例如:

$ git rm *.iws
$ git rm *.iml
$ git rm .idea
$ git rm .gradle
$ git rm build/
$ git rm */build/

添加并提交更改

现在,这些文件将在打开 Android Studio 项目时生成,并且不会添加到 git 中。

似乎是 应该存储在版本控制下文件。我建议将它保存在 git 中,但忽略所有本地更改:

git update-index --assume-unchanged .idea/misc.xml

在切换分支时,这些文件中可能存在冲突。然后您可以使用以下 重置脚本来重置文件:

#!/bin/bash
while read f
do
[ -f $f ] && git checkout $f
done <<!
app/app.iml
wear/wear.iml
!

如果经常这样做,创建类似的脚本来忽略这些文件。

升级到 Android Studio 2.2后从谷歌来到这里。这可能对其他人有帮助。

自 Android Studio 2.2以来,JDK 已经与之捆绑在一起,而不需要下载并安装到系统上。我的项目 JDK 在我升级到2.2时开始切换,可能是因为现在可用的两个版本——系统和嵌入式之间的混淆。

如果进入 File > Project Architecture (Mac OS) ,在 SDK Location 选项卡上有 JDK Location。现在有了一个使用嵌入式 JDK 的新设置。一旦我切换到它,它就解决了我的问题。

enter image description here

有段时间我都快疯了。我可以通过在我的 build.gradle中显式设置 java 版本来解决这个问题:

android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}

请注意,如果您正在使用 VERSION_1_7,当您冷启动 Android Studio 或切换到另一个使用 VERSION_1_8的项目时,它将修改 .idea/misc.xml以使用 JDK_1_8。做一个渐变同步将恢复到使用 JDK_1_7。如果使用 VERSION_1_8,就不会出现这个问题。

虽然不是很完美,但是我觉得这个现在已经足够好了。