Java RSIllegalArgumentException:Android 17上未移植的元素类型

Java RSIllegalArgumentException:Android 17上未移植的元素类型,java,android,renderscript,Java,Android,Renderscript,我最近在Google Play上发布了我的应用程序。我正在检查Firebase的崩溃情况,异常数量最多的集群之一是致命异常,堆栈跟踪如下: Caused by android.renderscript.RSIllegalArgumentException: Unsuported element type. android.renderscript.ScriptIntrinsicBlur.create (ScriptIntrinsicBlur.java:50) com.kayimapps.auto

我最近在Google Play上发布了我的应用程序。我正在检查Firebase的崩溃情况,异常数量最多的集群之一是致命异常,堆栈跟踪如下:

Caused by android.renderscript.RSIllegalArgumentException: Unsuported element type.
android.renderscript.ScriptIntrinsicBlur.create (ScriptIntrinsicBlur.java:50)
com.kayimapps.autocolorsplash_android.Util.getBlurredBitmap (Util.java:234)
com.kayimapps.autocolorsplash_android.activities.IntroActivity.onCreate (IntroActivity.java:83)
android.app.Activity.performCreate (Activity.java:5283)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1097)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2209)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2299)
android.app.ActivityThread.access$700 (ActivityThread.java:150)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1280)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:137)
android.app.ActivityThread.main (ActivityThread.java:5283)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1102)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:869)
dalvik.system.NativeStart.main (NativeStart.java)
可以在堆栈跟踪中看到的getBlurredBitmap方法也如下所示:

public static Bitmap getBlurredBitmap(Bitmap input, Context context)
{
    Bitmap result = null;
    try {
        RenderScript rsScript = RenderScript.create(context);
        Allocation alloc = Allocation.createFromBitmap(rsScript, input);

        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rsScript, alloc.getElement());
        blur.setRadius(25);
        blur.setInput(alloc);

        result = Bitmap.createBitmap(input.getWidth(), input.getHeight(), input.getConfig());
        Allocation outAlloc = Allocation.createFromBitmap(rsScript, result);
        blur.forEach(outAlloc);
        outAlloc.copyTo(result);

        rsScript.destroy();
    }
    catch (RSIllegalArgumentException e)
    {
        FirebaseCrash.report(e);
    }
    return result;
}
我到处寻找这个异常,看看它的原因,但到目前为止,我什么也没找到。有趣的是,这个例外只在安卓17(4.2)的设备上出现,而我测试应用程序的唯一设备是安卓17的三星Galaxy S3,在同一个地方没有例外

我猜由于RenderScript在GPU上运行,可能有些设备因为硬件原因根本不支持它。但是,引起这个例外的设备都是各种品牌的设备,所以我不能真的把责任推到一个制造商身上

有没有人知道为什么会发生这种情况,或者有没有人知道应该在哪里寻找解决方案


编辑:原来我是个白痴,我使用的手机操作系统版本是18,而不是17。不过,Android 17设备上的问题仍然存在。

您使用的是哪种元素类型?能否提供
ScriptIntrinsicBlur.create()
调用的一段代码?@Pavlus我添加了代码段。这个问题似乎也是由分配类引起的。在简要查看分配的
createFromBitmap()
方法之后,很明显,不同的参数用于为targetSdkVersion>=18创建分配对象。我不知道这背后的原理。你用的是哪种元素类型?能否提供
ScriptIntrinsicBlur.create()
调用的一段代码?@Pavlus我添加了代码段。这个问题似乎也是由分配类引起的。在简要查看分配的
createFromBitmap()
方法之后,很明显,不同的参数用于为targetSdkVersion>=18创建分配对象。不过,我不知道这背后的理由。