Domanda Proguard Android con jar esterno


Ho aggiunto un file jar esterno alla cartella libs del progetto mt e lo ho configurato nel percorso di build. Quando provo a "Esporta pacchetto Android", ricevo un messaggio di errore Proguard per molte classi di riferimento che non sono state trovate, ad esempio: Avviso: com.itextpdf.text.BaseColor: impossibile trovare la classe di riferimento java.awt.Color

Quando ho provato a eseguire il debug, la classe BaseColor ha funzionato correttamente, quindi non riesco a capire perché mi avvisa.

Qualsiasi aiuto sarà apprezzato,

Grazie


16
2017-07-29 08:52


origine


risposte:


Ho provato per giorni a far funzionare correttamente i barattoli esterni. C'erano suggerimenti per fare cose come scaricare i JAR di riferimento o definire correttamente libjars. Nessuno di questi ha funzionato per me.
Ciò che ha funzionato è stato inserire questo genere di cose per i JARS che hanno errato:

-dontwarn javax.management.**
-dontwarn java.lang.management.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.slf4j.**
-dontwarn org.json.*

e questo:

-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }

(Ovviamente è necessario regolarlo per abbinare i messaggi di errore)

In bocca al lupo.


42
2017-07-29 08:58



com.itextpdf.text.BaseColor è incluso nel barattolo che hai aggiunto, immagino. Si estende java.awt.Color che non è incluso in esso ma nella distribuzione di Java che stai utilizzando in Eclipse.

Quando si esporta il file, il processo di esportazione è inceppato come java.awt.color  non esiste nel framework di base Android. Non penso che questo sia collegato a Proguard: questo deve accadere anche se disabiliti l'offuscamento.


0
2017-07-29 09:02