2016-03-25 19 views
1

私のアプリケーションでJEXLライブラリを使用しています。新しいAndroidクラスシュレッダーで処理できないようです。ここでClassLookupException:プロガードなしでshrinkerを使用している場合、無効なクラスリファレンス

は私の依存関係です:

compile 'org.apache.commons:commons-jexl:2.1.1' 

私のビルドタイプは次のように定義されています

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

そして、私はそれを構築しようとしたとき、私はこのエラーを取得:

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

有効にしても問題なく構築されますが、useProguard optイオンまたは私はJEXLで使用javax.scriptでは内部のAndroid上で利用可能でないことを承知していますが、私はかなり良い仕事を使用する部品は、私が使用してで問題がない偽

にuseProguardとをminifyEnabled両方を設定このライブラリを除いて。 Lintはまた、その理由でInvalidPackageタイプのエラーを発生させますが、簡単に無効にすることができ、ビルドプロセスを傷つけることはありません。

新しいシュレンダーではそれを無視して、Lintのような次のステップに進むことはできますか?

+0

私は別のライブラリで同じ問題に直面しています。回避策を見つけることができましたか? – JFreeman

答えて

0

JEXLライブラリは、javax.script.AbstractScriptEngineと、Androidランタイム(android.jar)の一部ではない他の多くのクラスを指します。そのため、ProGuardは何かが壊れている可能性があることを警告します。とにかく、あなたのアプリケーションの作品は、あなたがProGuardの-android.txt今

-dontwarn javax.script.** 
-dontwarn org.apache.commons.logging.** 
-dontwarn java.beans.** 
に以下の行を指定することができることを確信している場合は、警告のほとんどがなくなっていたが、検索の多くの後、私はまだ上の見当がつかない最後の警告を修正する方法:

[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 
関連する問題