Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ClassLookupException:如果使用不带proguard的shrinker,则类引用无效_Android_Android Gradle Plugin_Android Proguard_Jexl - Fatal编程技术网

Android ClassLookupException:如果使用不带proguard的shrinker,则类引用无效

Android ClassLookupException:如果使用不带proguard的shrinker,则类引用无效,android,android-gradle-plugin,android-proguard,jexl,Android,Android Gradle Plugin,Android Proguard,Jexl,我在我的应用程序中使用了JEXL库,而新的Android类shrinker似乎无法处理它 这是我的依赖: compile 'org.apache.commons:commons-jexl:2.1.1' 我的生成类型定义如下: debug { versionNameSuffix "-dev" minifyEnabled true useProguard false proguardFiles getDefaultProgua

我在我的应用程序中使用了JEXL库,而新的Android类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选项或同时将minifyEnableduseProguard设置为false,则生成时不会出现任何问题

我知道JEXL内部使用的javax.script在Android上是不可用的,但是我使用的部分工作得很好,所以我使用这个库没有问题,除了这个。Lint也因此引发了InvalidPackage类型的错误,但它很容易被禁用,并且不会影响构建过程


有没有可能让新的shrinker忽略它,然后像Lint那样继续下一步呢?

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

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

我在不同的图书馆面临同样的问题。你找到解决办法了吗?我在不同的图书馆面临同样的问题。你找到解决办法了吗?