Android.idea/misc.xml languageLevel тег продолжает изменять JDKs

Ключ 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">

Это мой gitignore, если это имеет значение.

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

Как я могу продолжить, чтобы он оставался так или иначе?

Ответ 1

Пришел от Google после обновления до AS 2.2. Это может быть полезно для других.

С Android Studio 2.2 JDK был связан с ним. Вместо того, чтобы загрузить его, установите его в свою систему. Мой проект JDK начал переключение при обновлении до версии 2.2, возможно, из-за путаницы между двумя версиями, доступными сейчас. Система и встроенный.

Если вы перейдете в "Файл" > "Структура проекта" (Mac OS), на вкладке "Расположение SDK" появится местоположение JDK. Там теперь новый параметр для использования встроенного JDK, как только я переключился на него, он решил мою проблему.

введите описание изображения здесь

Ответ 2

Это немного помолодело. Я смог исправить это, явно установив java-версию в свой build.gradle:

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. Выполнение синхронизации gradle вернет его обратно к использованию JDK_1_7. Если вы используете VERSION_1_8, у вас не будет этой проблемы.

Это не идеально, но я обнаружил, что сейчас это достаточно хорошо.

Ответ 3

Кажется, файл должен храниться в разделе управления версиями. Я бы предложил сохранить его в git, но игнорировать все локальные изменения:

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

При переключении ветвей в этих файлах может возникнуть конфликт. Затем вы можете использовать следующие imlreset script to reset файлы:

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

Создайте аналогичный script для игнорирования этих файлов, если вы это делаете часто.

Ответ 4

Я решил эту проблему, когда удалил и остановил фиксацию папки .idea для управления исходным кодом.

Проблема в том, что некоторые из этих файлов являются конфигурациями, специфичными для машины, поэтому их совместное использование может быть проблемой.

Удаление его и других файлов-нарушителей было двухэтапным процессом git:

1) Добавьте .gitignore (из fooobar.com/info/51015/...):

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