为啥 Android Studio 不断切换“语言级别”?

Posted

技术标签:

【中文标题】为啥 Android Studio 不断切换“语言级别”?【英文标题】:Why does Android Studio keep toggling `languageLevel`?为什么 Android Studio 不断切换“语言级别”? 【发布时间】:2018-12-04 12:44:10 【问题描述】:

很多时候,当我查看使用 android Studio 构建的 Android 应用的 git diff 输出时,我会看到以下内容。有时它会将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">

【问题讨论】:

Android .idea/misc.xml's languageLevel tag keeps changing JDKs的可能重复 【参考方案1】:

1) 将此添加到您的应用 build.gradle(在 android 元素内)

compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8

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

# Ignore idea folder
.idea/

那么您需要按照this 之类的内容刷新版本化文件

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

【讨论】:

添加compileOptions 不会阻止misc.xml 切换languageLevel。排除 .idea 文件夹只会通过使版本控制忽略 misc.xml 来隐藏问题,并且还会阻止与您的团队共享 AS 设置(正如您已经提到的)。这个答案既没有解释为什么 misc.xml 保持切换,也没有提供防止misc.xml 切换的解决方案。 当时我认为这是一个 AS 或 Intellij 错误,现在在 AS 3.4 中它不会发生在我身上(而且我使用的是默认的 gitignore,其中 misc.xml 是版本化的)。我提到的是几乎每个人都使用的解决方法

以上是关于为啥 Android Studio 不断切换“语言级别”?的主要内容,如果未能解决你的问题,请参考以下文章

代码不断崩溃(android studio、java语言)

android 语言切换问题

Android studio多个项目之间怎么实现快速切换?

Android Studio中自动更改编程输入语言是可视化窗口

为啥我的命名空间引用在 Visual Studio 中不断中断?

android studio 新建的工程为啥直接报红??