java tools Il tag languageLevel di Android.idea/misc.xml continua a modificare i JDK




sdk (4)

È venuto qui da Google dopo l'aggiornamento ad Android Studio 2.2. Questo potrebbe essere utile per gli altri.

Da Android Studio 2.2, il JDK è stato fornito in bundle con esso, invece di doverlo scaricare e installare sul tuo sistema. Il mio progetto JDK ha iniziato a cambiare quando ho aggiornato a 2.2, probabilmente a causa della confusione tra le due versioni disponibili ora - sistema e incorporato.

Se vai in File> Struttura del progetto (Mac OS), nella scheda Posizione SDK, c'è la posizione JDK. Ora c'è una nuova impostazione per usare il JDK incorporato. Una volta passato a questo, ha risolto il mio problema.

La chiave languageLevel viene modificata da JDK_1_8 a JDK_1_7 per motivi che non conosco.

Cosa potrebbe succedere?

Questo ha qualcosa a che fare con l'IDE di altri sviluppatori che lavorano al progetto? Forse hanno un'altra impostazione di Android Studio?

Ecco cosa viene visualizzato dopo aver notato che i file sotto il controllo del codice sorgente sono cambiati:

$ 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">

Questo è il mio gitignore nel caso abbia importanza.

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

Come procedo in modo che rimanga in un modo o nell'altro?


Sembra che il file debba essere memorizzato sotto il controllo della versione . Vorrei proporre di tenerlo in git, ma ignorare tutte le modifiche locali:

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

Quando si cambia succursale, potrebbero esserci dei conflitti in questi file. Quindi è possibile utilizzare il seguente script imlreset per ripristinare i file:

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

Crea uno script simile per ignorare questi file se lo fai spesso.


Ho risolto questo problema quando ho rimosso e interrotto il commit della cartella .idea al controllo del codice sorgente.

Il problema è che alcuni di questi file sono configurazioni specifiche della macchina, quindi condividerli potrebbe essere un problema.

Rimozione di esso e altri file incriminati era un processo di due passi git:

1) Aggiungi questo .gitignore (da https://.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) Per ogni riga di .gitignore, lancia git rm line dalla git rm line di comando.

Esempio:

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

Aggiungi e conferma le modifiche

Ora questi file verranno generati quando aprirai il progetto Android Studio e non verranno aggiunti a git.


Questo mi stava facendo impazzire per un po '. Sono stato in grado di risolverlo impostando esplicitamente la versione java nel mio build.gradle :

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

Tieni presente che se utilizzi VERSION_1_7 , quando VERSION_1_7 a freddo Android Studio o passi a un altro progetto che utilizza VERSION_1_8 , modificherà .idea/misc.xml per utilizzare JDK_1_8 . Se esegui una sincronizzazione gradle, tornerai a utilizzare JDK_1_7 . Se utilizzi VERSION_1_8 , non avrai questo problema.

Non è perfetto, ma ho trovato questo per essere abbastanza buono per ora.





android-studio