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.