Android: Dex ne peut pas analyser la version 52 octets de code
Je viens de passé à Android Studio 2.1 et cette erreur a montré jusqu'lorsque vous essayez de compiler une application précédemment travail:
Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code. This is caused by library dependencies that have been compiled using Java 8 or above. If you are using the 'java' gradle plugin in a library submodule add targetCompatibility = '1.7' sourceCompatibility = '1.7' to that submodule's build.gradle file.
J'avais déjà mis à jour le principal du projet gradle.build fichier à force de Java 1.7 génération de code:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
J'avais aussi mis à jour le module de gradle.construire comme suit pour définir la version de java:
android {
compileSdkVersion 19
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.abc.def"
minSdkVersion 19
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
Le sous-module construit à l'aide de Maven. Dans le pom.xml fichier j'ai également essayé de force de 1,7 génération de code.
Je comprends que je suis en utilisant un assemblage artefact, qui intègre les actions subalternes à des modules, mais je n'ai pas modifié les subalternes des modules et de la .fichier jar pour le module fonctionnait bien la dernière fois j'ai compilé.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <!-- maven-compiler-plugin -->
<version>2.6</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ma question:
1) Est-ce un Android Studio 2.1 problème? D'autres ont-ils vu?
2) en Supposant que c'est mon erreur et depuis le message d'erreur ne donne pas d'aide dans la recherche de la mauvaise module, existe-il des recommandations sur la recherche de la V52 code? Je ne peux pas omettre les bibliothèques sans casser une grande quantité de code. Peut-on inspecter un .le fichier jar à trouver la révision du code?
Merci à l'avance.
-Héphaïstos
- Je suis actuellement confronté à cette erreur maintenant. Un peu de chance pour trouver des solutions?
- Moi aussi mise à jour Android Studio 2.1. Depuis lors, je suis confronté à ce problème. Avez-vous obtenu une solution?
- Une version antérieure du message d'erreur (qui a depuis disparu) suggère que la pubnub fichier jar est une partie du problème. Donc, nous avons commenté à toute référence à pubnub et à présent, il compile et s'exécute. Je crois que le message d'erreur a disparu lorsque nous avons ajouté les directives du compilateur (illustré ci-dessus) pour forcer le code "1.7", cependant, il semble que certains de 1,8 code était toujours en fuite à travers.
- Voici une autre SORTE de discussion qui se rapporte: stackoverflow.com/questions/36968728/.... Mais qui ne répond pas à la question, autre que de dire "commencer avec un simple projet de test".
- La seule chose que nous avons fait a été de sortir de la PubNub de la bibliothèque et de la remplacer par une ancienne verison. Qui semblait le fixer. Mais dans ce cas, nous avons testé en commentant la bibliothèque d'importation et de ses appels de méthode et de déterminer qu'il était en faute. Mais le PubNub de la bibliothèque a été lâchement intégré et nous avons pu nous en commentaire assez facilement. Si nous avions de nombreuses bibliothèques grâce à l'intégration étroite, il serait douloureux.
Vous devez vous connecter pour publier un commentaire.
suffit d'utiliser java 1.8 avec Android Studio 3.0+ et définir suivant fonctionne pour moi:
il semble que le besoin de la dernière version des outils de
et
android.dexOptions.incremental
propriété est obsolète et il n'a pas d'effet sur le processus de construction."jack is deprecated
maintenant et ne doit pas être utiliséSi vous avez un module avec une bibliothèque java qui est pas Android,, cela devrait fonctionner:
apply plugin:'java'
Le mettre en haut de la construction.gradle fichier, puis reconstruire.
Si vous utilisez
org.jetbrains:annotation:15
et retrolambda plugin puis supprimer la lignecompile org.jetbrains:annotations:15.0
de votrebuild.gradle
et l'erreur disparaît. Il fonctionne pour moi.Peut-être, certains de vos dépendances a été compilé avec Java 8, pas pour Android en particulier. Essayez de passer que les dépendances de l'ancienne version. Je ne sais pas exactement quel bibliothèque, vous devez rétrograder, parce que vous n'avez pas joint une liste des dépendances de votre module principal.
Par exemple: j'ai eu le même problème. Après des heures de recherche, j'ai trouvé que la bibliothèque
org.codehaus.httpcache4j.uribuilder:2.0.0
nécessite Java 8, comme de github. Donc, quand je l'ai passé à1.1.0
, le projet a été avec succès construit et déployé.Essayez d'ajouter à la version principale.gradle dans la section allprojects
ou ajouter ceci dans le dépendances
dans tous les modules manuellement
J'ai été en mesure de résoudre ce problème en ajoutant les lignes suivantes:
à
defaultConfig
dansbuild.gradle
fichier.Vous pouvez suivre les lignes directrices pour Java 8 sur le lien -
https://developer.android.com/guide/platform/j8-jack.html
J'ai eu le même problème avec le greendao-générateur de dépendance. J'ai malencontreusement ajouté que la dépendance dans mon construire.gradle (
compile 'org.greenrobot:greendao-generator:3.1.0'
) et AndroidStudio m'a montré le même message d'erreur.Probablement que c'est parce que le module a été compilé avec Java 8.
J'ai donc enlevé que la dépendance de mon build.gradle et le tout est compilé heureusement 🙂
J'ai résolu ce problème en tant que belowed :
Coupure Instantanée Exécuter dans Android Studio 2.2 avec Gradle plugin 2.2.2 fixe pour moi. Afin de revenir à une ancienne version du plugin Gradle (comme 2.2.0) a également fixé, mais c'est moins souhaitable, à mon humble avis.
Ce qui m'est arrivé avec Android Studio 2.3.3. La solution que j'ai trouvé a été de supprimer le dossier de création puis Projet de Reconstruction de. C'était aussi simple que cela.
J'ai également fait face à la même erreur dans
Android 2.3.3
, après l'ajout de quelques JAR depencies. Le problème était dû à la depenecyio.netty:netty-all:4.1.16.Final
. Cette 4.1.16 version JAR a été compilé avec Java 1.8 et tous les autres a été générée avec Java 1.7.Cela s'est résolu, à la suite notamment de l'ancienne version de
netty
(qui a été généré avec Java 1.7) dans monbuild.gradle
fichier.compile 'io.netty:netty-all:4.1.5.Final'
J'ai rencontré ce problème lors de la tentative de mise à niveau automatique de la valeur v de 1,5 dans Android Studio v 2.3.3. Auto-valeur de 1,5 va sans doute être compatible avec les 3 (Il faut une mise à jour java compilateur)
Pour l'instant auto-valeur 1.4.1 œuvres.
Je suis face au même problème avec les Réactif Emplacement de l'Api de la Bibliothèque pour Android et RxJava 2.Juste version de mise à jour.gradle pour 3.0.1 et de réduire la Réactif Emplacement de l'Api de la Bibliothèque pour Android et RxJava 2 version de bibliothèque à partir de 1.0.4 à 1.0.3
Il fonctionne très bien dans mon cas.
J'ai rencontré ce problème lorsque vous essayez d'importer un pot compilé par jdk 1.8 Android Studio 3.0. J'ai essayé toutes les solutions ci-dessus, mais aucun travail. donc, j'ai demandé au développeur de ce pot à re-compiler avec jdk 1.7, et puis cela fonctionne bien, pas rencontré ce problème à nouveau.
Si possible pour vous:
Cela devrait prendre soin de la question.
Référence: https://developer.android.com/studio/write/java8-support