2016-03-25 38 views
1

olmadan daraltma kullanıyorsanız geçersiz sınıf referansı Uygulamamda JEXL kitaplığını kullanıyorum ve yeni Android sınıfı küçültücü bunu işlemek için başarısız gibi görünüyor.ClassLookupException: proguard

debug { 
     versionNameSuffix "-dev" 
     minifyEnabled true 
     useProguard false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 

Ve bunu inşa etmeye çalışırken bu hatayı alıyorum:

My yapı tipi olarak tanımlanır
compile 'org.apache.commons:commons-jexl:2.1.1' 

aşağıdaki gibidir:

What went wrong: Execution failed for task ':app:transformClassesWithNewClassShrinkerForDebug'. 
com.android.build.gradle.shrinker.ClassLookupException: Invalid class reference: javax/script/AbstractScriptEngine 

İşte

benim bağımlılık olduğunu useProguard seçeneğini etkinleştirirseniz sorun yaşamadan oluşturulmasına rağmen iyon veya set hem minifyEnabled ve ben bu yüzden kullanarak sorunumuz yok JEXL kullandığı javax.script içten Android ama esere oldukça iyi kullanan bölümler kullanılamaz farkındayım yanlış

için useProguard bu kütüphane bunun dışında. Lint ayrıca, bu nedenle InvalidPackage hata türünü de yükseltir, ancak kolayca devre dışı bırakılabilir ve oluşturma işlemine zarar veremez.

Yeni bir küçültücü yapmaktan kaçınıyor mu ve Lint'in yaptığı gibi sonraki aşamalara geçmek mümkün mü?

+0

Farklı kütüphanelerle aynı sorunu yaşıyorum. Bir geçici çözüm buldunuz mu? – JFreeman

cevap

0

JEXL kitaplığı javax.script.AbstractScriptEngine ve Android çalışma zamanının (android.jar) bir parçası olmayan diğer birçok sınıfı ifade eder, bu nedenle ProGuard bir şeyin bozuk olabileceği konusunda uyarır. Eğer zaten senin aplikasyon çalışmaları, sen ProGuard-android.txt Şimdi

-dontwarn javax.script.** 
-dontwarn org.apache.commons.logging.** 
-dontwarn java.beans.** 
aşağıda çizgileri belirtebilirsiniz eminseniz, uyarılar çoğu gitmişti, ama aramaların bir sürü sonra hala hiçbir fikrim yok Son uyarının düzeltilmesi:

[proguard] Warning: org.apache.commons.jexl3.scripting.JexlScriptEngine: can't find referenced field 'javax.script.ScriptContext context' in class org.apache.commons.jexl3.scripting.JexlScriptEngine