为什么 Android Studio 不断切换 `languageLevel`?

Ted*_*nry 5 android android-studio

很多时候,当我查看git diff使用 Android Studio 构建的 Android 应用程序的输出时,我会看到以下内容。有时它languageLevelJDK_1_7变为JDK_1_8。其他时候它languageLevelJDK_1_8变为JDK_1_7。怎么这么优柔寡断??

--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -24,7 +24,7 @@
       </value>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
Run Code Online (Sandbox Code Playgroud)

Mat*_*Pag 4

1) 将其添加到您的应用程序中build.gradle(在android元素内)

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

2).idea从 Git 中排除该文件夹,并将其添加到您的项目级别.gitignore

# Ignore idea folder
.idea/
Run Code Online (Sandbox Code Playgroud)

那么您需要按照如下方式刷新版本控制文件

对文件夹进行版本控制.idea仅在与您的团队共享某些 AS 设置时有用,如果您单独工作或没有共享编码策略,则可以将其删除。

  • 添加“compileOptions”不会阻止“misc.xml”切换“languageLevel”。排除“.idea”文件夹只会通过使版本控制忽略“misc.xml”来隐藏问题,并且还会阻止与您的团队共享 AS 设置(正如您已经提到的)。这个答案既没有解释为什么“misc.xml”不断切换,也没有提供防止“misc.xml”切换的解决方案。 (4认同)