2015-10-01 29 views
125

私が気付かないうちにlanguageLevelキーがJDK_1_8からJDK_1_7に変更されました。Android .idea/misc.xmlのlanguageLevelタグがJDKを変更し続ける

何が起こっている可能性がありますか?

これは、プロジェクトで作業している他の開発者の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

私は同じ問題があります。 –

+0

これはあなたを助けるかもしれません:http://stackoverflow.com/questions/32941733/android-studio-sdk-location-changes-for-same-project-using-mac-osx-and-window/32942758#32942758 – kraftydevil

+0

回避策を見つけるか、それが言語レベルを変更する理由を考えましたか? – Falydoor

答えて

3

私が削除して.ideaフォルダをソース管理にコミットするのをやめたとき、私はこの問題を解決しました。

これらのファイルの一部はマシン固有の構成であるため、それらを共有することが問題になる可能性があります。 、

#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の行ごとに実行します。

1)https://stackoverflow.com/a/32942758/869936から(この.gitignoreを追加):それを削除する

およびその他怒らファイルは、2段階のgitのプロセスでしたコマンドラインからgit rm lineを入力します。

例:

$ git rm *.iws 
$ git rm *.iml 
$ git rm .idea 
$ git rm .gradle 
$ git rm build/ 
$ git rm */build/ 

今、あなたは、Android Studioのプロジェクトを開いたときにこれらのファイルが生成され、彼らはgitのには追加されません変更を追加してコミットします。

+16

https://intellij-support.jetbrains.com/hc/en-us/articles/206827587-How-to-バージョン管理システムの下で、 '.idea'フォルダの大部分をコミットするはずです。なぜなら、それらは' workspace.xml'と 'tasks.xml'を除いてマシン固有ではないからです。つまり、これらの問題のために、バージョン管理の面ではあまりよく考えられていません。私は彼らが最終的に混乱を並べ替えるだろうと思う。 –

+0

矛盾があります。同時に、私はdevチームがこの.gitignoreを使用することに問題がないことを認識していません。私がもっと知っていれば、私はさらに助言することができましたが、これが今私たちのために働いています。問題が発生した場合、私は自分の答えを変えます。 – kraftydevil

+20

はい、gitにこのファイルを無視させる方法はわかっています。しかし、本当の問題は、それがJDK_1_8からJDK_1_7に変わっていく(そして時にはまた戻ってくる)ということです。 –

7

ファイルshould be stored under version controlのようです。

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

ブランチを切り替えると、これらのファイルに競合が発生する可能性があります。あなたは、多くの場合、それを行う場合は、これらのファイルを無視するようなスクリプトを作成します

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

:次に、ファイルをリセットするには、以下のimlresetスクリプトを使用することができます。

+0

IDEを変更した場合、ファイルを変更するには、別のブランチをチェックアウトする前に、何らかの方法で削除してください。 – ergosys

+0

@ergosys、コメントありがとう。そのような場合に使用するスクリプトを追加しました。 –

22

AS 2.2にアップデートしてGoogleからここに来ました。これは他人に役立つかもしれません。

Android Studio 2.2以降、JDKはバンドルされています。ダウンロードする代わりに、システムにインストールしてください。私のプロジェクトJDKは、2.2にアップデートしたときに切り替わりました。おそらく、現在入手可能な2つのバージョンの混乱のためです。システムと埋め込み。

[ファイル]> [プロジェクト構造](Mac OS)を選択すると、[SDKの場所]タブにJDKの場所が表示されます。埋め込まれたJDKを使用する新しい設定がありました。変更したら、私の問題を解決しました。

enter image description here

+5

私はこれを(Win10でも)実行しましたが、問題が続くことに気づいたらすぐに( – CesarPim

+2

)これは問題を解決するために働きます。@ CesarPimには、ビルドが同期していないときに再浮上しています。 – gnB

+2

@gnBとはどういう意味ですか?私とは1.7と1.8の間を行き来し続けています...私はそうではありませんでした。 – CesarPim

16

これは、しばらくの間、私にナットを運転していました。私は明示的に私のbuild.gradleでJavaのバージョンを設定することで、それを修正することができました:

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

注意あなたがAndroidのメーカーを起動したり、VERSION_1_8を使用して別のプロジェクトに切り替えコールドVERSION_1_7を、使用している場合、それは修正すること.idea/misc.xmlJDK_1_8を使用してください。階調同期を行うと、JDK_1_7を使用して元の状態に戻ります。 VERSION_1_8を使用している場合は、この問題は発生しません。

これは完璧ではありませんが、これは今のところ十分であることがわかりました。

+1

現在、http://stackoverflow.com/a/40083824/1815624で提案されているように、埋め込みJDKを使用したり使用したりしないでください。 https://code.google.com/p/android/issues/detail?id=172115 – CrandellWS

+0

これをプロジェクトに含めるべきかモジュールファイルに入れるべきですか? – rraallvv

+0

@rraallvvモジュール – Noel

関連する問題