Ich bin in einige Probleme mit einer Bibliothek in meinem Projekt enthalten: Am Anfang war es nur ein widersprüchliches Abhängigkeitsproblem, das ich durch Ausschließen gelöst support-v4
Das ist das gemeinsam genutzte Modul.Gradle Ausschließen oder hinzufügen Verweis für JAR-Datei schwer innerhalb der Bibliothek enthalten classes.jar
Das Problem ist, dass eine dieser lbsLib-release
mit einer einfachen .jar
Datei innerhalb des Root-Projekts vor dem Entwickler gebaut worden zu sein scheint.
Durch Ausführen von ./gradlew app:dependencies
habe ich überprüft, dass die Abhängigkeit im Build-Diagramm nicht referenziert wird.
Und ich fand diese support-v4
in die classes.jar
eingebettet befindet an: app/build/intermedites/exploded-aar/MyQaaAndroid/lbsLib-release/unspecified/classes.jar/
wie man auf dem Bild unten sehen können:
Ich kann das Projekt nicht selbst wieder aufzubauen, weil es nicht ist eine Open-Source-lib, so gibt es zwei Probleme:
Wenn ichhinzufügenzu
build.gradle
Einmultiple dex file
Fehler wird zum Zeitpunkt der Erstellung ausgelöst, sodass die Bibliothek zweimal referenziert wird.UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/app/BackStackState; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) at com.android.dx.command.dexer.Main.run(Main.java:246) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)
`
Wenn ich alle Libs entfernen, die
support-v4
es erfordern einen fehlenden Abhängigkeiten Fehler bei der Anwendung Runtime löst.
Also ich würde gerne wissen, ob es möglich ist, diese .jar
Datei aus dem Build ausschließen oder die anderen Libs auf den support-v4
.jar
eingebettet lbsLib-release
abhängig zu machen.
compile (project(':lbsLib-release')) {
exclude module: 'support-v4'
}
compile ('com.sothree.slidinguppanel:library:2.0.4'){
exclude module: 'support-v4'
}
compile('com.google.android.gms:play-services:6.5.87') {
exclude module: 'support-v4'
}
Wenn Sie mit lbsLib-Release über eine 'kompilieren project' Richtlinie dann nicht haben Sie den Quellcode es? –
Nein, es ist eine * .aar-Datei –
Versuchen Sie, das 'exclude module' -Bit in der build.digle des Submoduls, wo Sie die .aar, und nicht in der obersten Ebene, wo Sie das Submodul enthalten. –