2015-04-24 11 views
7

Ich habe mehrere Projekte, die ich erstelle, um ein .aar zu erstellen. Ich importiere dann diese .aar in Android Studio unter/libs. Die build.gradle-Datei für diese Abhängigkeit sieht wie folgt aus:Verwendung von .aar NoClassDefFoundError Aber Klasse existiert und ist Dexed

repositories{ 
    flatDir{ 
     dirs 'libs' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.0.0' 
    compile 'com.google.android.gms:play-services:7.0.0' 
    compile 'com.android.support:multidex:+' 
    compile(name: 'customApi-debug', ext:'aar') 
} 

Da die Bibliothek recht groß ist, ich habe eingestellt multiDexEnabled = true. Android Studio findet die Bibliothek und die Autovervollständigung funktioniert. Gebäude funktioniert auch gut, aber läuft die App gibt den folgenden Fehler:

java.lang.NoClassDefFoundError: com.companyx.android.api.ui.vision.metaio.MetaIoView 
      at com.companyx.android.api.ui.vision.metaio.MetaIoView$$InjectAdapter.<init>(MetaIoView$$InjectAdapter.java:29) 

ich unkomprimiert und zerlegt die .aar und dex-Dateien sind, und überprüft, dass die Klassen ihre über tatsächlich beschwert existieren. Ich habe bereits bestehende Ansätze ausprobiert, um mit diesem Problem umzugehen, aber keiner von ihnen hat funktioniert.

Hat das jemand anderes erlebt? Danke im Voraus.

+0

Es könnte eine Überprüfung sein Fehler bei der Klasse. Sehen Sie sich die Logs in logcat an, nachdem Sie die Anwendung installiert haben, während sie gerade dekodiert werden, und prüfen Sie, ob für diese Klasse Überprüfungsfehler vorliegen. – JesusFreke

+0

Es scheint keine Fehler während der Installation zu geben. Was ich bemerkte, ist, dass, wenn ich auf die Aktivität klicke, die diese Quelle verwendet, I/art: Re-init auf der zuvor fehlgeschlagenen Klasse java.lang.Class mehrmals direkt bevor ich meine Ausnahme bekomme. –

+0

Ja, das bedeutet, dass bei der Installation einige Überprüfungsfehler aufgetreten sind. Werfen Sie einen weiteren Blick auf Logcat während der Installation :) – JesusFreke

Antwort

4

Ich laufe auf das gleiche Problem. Die Lösung besteht darin, die AAR-Datei zunächst in einem lokalen Maven zu deployen (ich habe das Plugin unter verwendet). Dann bezog ich mich auf den lokalen maven wie beschrieben unter https://stackoverflow.com/a/23045791/2563009. Und schließlich erklärte ich die Abhängigkeiten mit einer transitiven Option, wie folgt:

dependencies { 
    compile('com.myapp.awesomelib:awesomelib:[email protected]') { 
    transitive = true 
    } 
} 

Der Fehler wäre dann weg. FYI

+0

nett, es funktioniert gut. rettete meine Zeit viel –

+0

Haben Sie eine Erklärung auf * warum * das funktioniert? – tir38

+0

@ thuy-trinh Ja bin ich auch warum neugierig – draksia

0

Just, können Sie eine einfachere Syntax verwenden, die gültig ist auch

compile 'com.myapp.awesomelib:awesomelib:0.0.1' 

Vergessen Sie nicht, die @aar Sache am Ende des Bibliotheksnamen wegzulassen

Verwandte Themen