【问题标题】:Error Rendercript Android Studio 2.0错误渲染脚本 Android Studio 2.0
【发布时间】:2016-04-08 04:44:23
【问题描述】:

今天,我收到了来自 Android Studio 的 2.0 版更新。更新完成后,我构建应用程序,但在构建 gradle 中遇到错误消息

Error:Renderscript support mode is not currently supported with renderscript target 21+

我正在搜索并通过替换找到解决方案

renderscriptTargetApi 21
renderscriptSupportModeEnabled true

renderscriptTargetApi 20
renderscriptSupportModeEnabled true

构建成功,但是当我运行应用程序时,应用程序崩溃显示 logcat :

E/AndroidRuntime: FATAL EXCEPTION: main
android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: unknown failure Support lib API: 2301
at android.support.v8.renderscript.RenderScript.internalCreate(RenderScript.java:1358)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1529)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1479)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1455)
at android.support.v8.renderscript.RenderScript.create(RenderScript.java:1442)
at com.tadev.musicplayer.utils.design.blurry.BlurImageUtils.blurRenderScript(BlurImageUtils.java:25)
at com.tadev.musicplayer.ui.activities.fragments.MainMusicPlayFragment$5.onResourceReady(MainMusicPlayFragment.java:313)
at com.tadev.musicplayer.ui.activities.fragments.MainMusicPlayFragment$5.onResourceReady(MainMusicPlayFragment.java:310)
at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:525)
at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:507)
at com.bumptech.glide.load.engine.EngineJob.handleResultOnMainThread(EngineJob.java:158)
at com.bumptech.glide.load.engine.EngineJob.access$100(EngineJob.java:22)
at com.bumptech.glide.load.engine.EngineJob$MainThreadCallback.handleMessage(EngineJob.java:202)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

代码过程模糊:

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicBlur;

/**
 * Created by Iris Louis on 04/04/2016.
 */
public class BlurImageUtils {
    public static Bitmap blurRenderScript(Context context, Bitmap smallBitmap, int radius) {

        try {
            smallBitmap = RGB565toARGB888(smallBitmap);
        } catch (Exception e) {
            e.printStackTrace();
        }
        Bitmap bitmap = Bitmap.createBitmap(
                smallBitmap.getWidth(), smallBitmap.getHeight(),
                Bitmap.Config.ARGB_8888);

        RenderScript renderScript = RenderScript.create(context);

        Allocation blurInput = Allocation.createFromBitmap(renderScript, smallBitmap);
        Allocation blurOutput = Allocation.createFromBitmap(renderScript, bitmap);

        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(renderScript,
                Element.U8_4(renderScript));
        blur.setInput(blurInput);
        blur.setRadius(radius); // radius must be 0 < r <= 25
        blur.forEach(blurOutput);

        blurOutput.copyTo(bitmap);
//        renderScript.destroy();

        return bitmap;

    }

    private static Bitmap RGB565toARGB888(Bitmap img) throws Exception {
        int numPixels = img.getWidth() * img.getHeight();
        int[] pixels = new int[numPixels];

        //Get JPEG pixels.  Each int is the color values for one pixel.
        img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight());

        //Create a Bitmap of the appropriate format.
        Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888);

        //Set RGB pixels.
        result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
        return result;
    }
}

当我将 IDE 更新到 2.0 时出乎意料!

请给我一些解决方案。谢谢大家!!!

【问题讨论】:

    标签: android android-studio-2.0 android-renderscript


    【解决方案1】:

    renderscriptTargetApi 相关的错误已在 gradle-plugin 2.1.0 和 Build-Tools 23.0.3 中修复。 请尝试一下:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.0'
        }
    }
    
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"
        ...
    }
    

    “未知故障”似乎很奇怪。你有关于它的日志吗?

    【讨论】:

    • 首先,感谢您的回复!但是在构建版本 2.0.0 中,您可以使用 #renderscript -keep class android.support.v8.renderscript.** { *; } 在文件 proguard-rules.pro 中使用 renderscriptTargetApi 20
    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多