Android .idea/misc.xml的languageLevel标记不断更改JDK

kra*_*vil 175 java android android-studio

由于我不知道的原因,languageLevel键从JDK_1_8更改为JDK_1_7.

会发生什么事?

这是否与其他从事该项目的开发人员的IDE有关?也许他们有另一个Android Studio设置?

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

$ 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">
Run Code Online (Sandbox Code Playgroud)

如果重要的话,这是我的gitignore.

.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
Run Code Online (Sandbox Code Playgroud)

我该如何进行以便它只是保持这种或那种方式?

Noe*_*oel 41

这让我疯了一会儿.我能够通过在我的显式设置java版本来修复它build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您正在使用VERSION_1_7,当您冷启动Android Studio或切换到另一个使用的项目时,VERSION_1_8它将修改.idea/misc.xml使用JDK_1_8.执行gradle sync会将其恢复为使用状态JDK_1_7.如果您正在使用VERSION_1_8,则不会出现此问题.

它并不完美,但我发现现在已经足够好了.

  • 目前,不要使用也不想使用嵌入式JDK,如http://stackoverflow.com/a/40083824/1815624中所建议的,使用gradle选项确实可以防止更改问题.可能需要注意这一点,请访问https://code.google.com/p/android/issues/detail?id=172115 (2认同)

RED*_*ED_ 25

更新到Android Studio 2.2后,来自Google.这可能对其他人有所帮助.

从Android Studio 2.2开始,JDK已与它捆绑在一起,而不必在系统上下载和安装它.当我更新到2.2时,我的项目JDK开始切换,可能是因为现在可用的两个版本之间的混淆 - 系统和嵌入式.

如果您进入文件>项目结构(Mac OS),在SDK位置选项卡上,有JDK位置.现在有一个新的设置来使用嵌入式JDK.一旦我切换到它,它解决了我的问题.

在此输入图像描述

  • 仍然在Android Studio 3.0中发生,这个建议没有解决它.我已经选择了"嵌入式JDK",但它仍然在从1_7变为1_8并且没有明显原因返回. (14认同)
  • 我这样做了(虽然在Win10中)但是一旦我重新启动AS我发现问题仍在继续:( (7认同)
  • 你是什​​么意思@gnB?和我一起在1.7和1.8之间来回徘徊......我无法找到稳定的解决方案.是吗? (5认同)
  • @gnB是的,和我一样,但是我仍然困扰我,每次发动AS都会发生...它不应该发生 (3认同)
  • 这有助于解决此问题.正如@CesarPim所提到的,当构建不同步时,我发现它会重新出现.运行gradle sync然后清除更改.总体而言,这是一个很好的清洁解决方案,比以前好多了 - 谢谢! (2认同)

Paw*_*ski 9

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

git update-index --assume-unchanged .idea/misc.xml
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash                                                                     
while read f                                                                    
do                                                                              
  [ -f $f ] && git checkout $f                                                    
done <<!                                                                        
app/app.iml                                                           
wear/wear.iml                                                                   
!
Run Code Online (Sandbox Code Playgroud)

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


kra*_*vil 1

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

问题是其中一些文件是特定于计算机的配置,因此共享它们可能会成为问题。

删除它和其他有问题的文件是一个两步的 git 过程:

1)添加这个.gitignore(来自/sf/answers/2305993091/):

#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/
Run Code Online (Sandbox Code Playgroud)

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

例子:

$ git rm *.iws
$ git rm *.iml
$ git rm .idea
$ git rm .gradle
$ git rm build/
$ git rm */build/
Run Code Online (Sandbox Code Playgroud)

添加并提交更改

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

  • 是的,我们都知道如何强制 git 忽略这个文件。但真正的问题是_为什么_它不断从 JDK_1_8 更改为 JDK_1_7(有时又变回来)? (31认同)
  • 根据 https://intellij-support.jetbrains.com/hc/en-us/articles/206827587-How-to-manage-projects-under-Version-Control-Systems 你应该提交大部分`. idea` 文件夹,因为它们不是特定于机器的,除了 `workspace.xml` 和 `tasks.xml` 之外。话虽如此,由于诸如此类的问题,在版本控制方面还没有经过深思熟虑。我想他们最终会解决这个烂摊子。 (23认同)
  • 这根本没有回答问题。这很奇怪,因为你问了。这就是如何忽略这个问题,我想这对你来说可能没问题,我想知道为什么它不断变化以及如何阻止它这样做。 (3认同)

归档时间:

查看次数:

16597 次

最近记录:

7 年,6 月 前