[java] Android .idea / misc.xml의 languageLevel 태그는 JDK를 계속 변경합니다.

내가 알지 못하는 이유로 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

어떤 식 으로든 계속 유지하려면 어떻게해야합니까?



답변

이것은 잠시 동안 나를 미치게했다. 내 Java 버전을 명시 적으로 설정하여 문제를 해결할 수있었습니다 build.gradle.

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

를 사용중인 경우 VERSION_1_7Android Studio를 콜드로 시작하거나 사용하는 다른 프로젝트로 전환 하면 사용하도록 VERSION_1_8수정 .idea/misc.xml됩니다 JDK_1_8. gradle sync를 수행하면을 다시 사용으로 되돌립니다 JDK_1_7. 를 사용하는 VERSION_1_8경우이 문제가 발생하지 않습니다.

완벽하지는 않지만 지금은 이것으로 충분하다는 것을 알았습니다.


답변

Android Studio 2.2로 업데이트 한 후 Google에서 왔습니다. 이것은 다른 사람들에게 도움이 될 수 있습니다.

Android Studio 2.2부터 JDK가 시스템에 다운로드하여 설치하는 대신 JDK와 함께 번들로 제공되었습니다. 내 프로젝트 JDK는 2.2로 업데이트했을 때 전환을 시작했습니다. 현재 시스템과 임베디드의 두 버전이 혼동되어 있기 때문일 수 있습니다.

파일> 프로젝트 구조 (Mac OS)로 이동하면 SDK 위치 탭에 JDK 위치가 있습니다. 임베디드 JDK를 사용하기위한 새로운 설정이 있습니다. 일단 전환하면 문제가 해결되었습니다.

여기에 이미지 설명을 입력하십시오


답변

파일 을 버전 관리하에 저장해야합니다 . 나는 그것을 git로 유지하라고 제안하지만 모든 로컬 변경 사항은 무시하십시오.

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

분기를 전환 할 때 이러한 파일이 충돌 할 수 있습니다. 그런 다음 다음 imlreset 스크립트를 사용 하여 파일을 재설정 할 수 있습니다.

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

이러한 파일을 자주 무시하는 경우 유사한 스크립트를 작성하십시오.


답변

소스 컨트롤에 .idea 폴더 커밋을 제거하고 중지했을 때이 문제를 해결했습니다.

문제는 이러한 파일 중 일부는 시스템 별 구성이므로 공유하는 것이 문제가 될 수 있다는 것입니다.

그것을 제거하고 다른 문제가되는 파일을 제거하는 것은 두 단계 git 프로세스였습니다.

1)이 .gitignore를 추가하십시오 ( https://stackoverflow.com/a/32942758/869936 ).

#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에 추가되지 않습니다.


답변