0

本日、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 にアップデートすると、予期せぬ事態が発生しました。

Plz、解決策を教えてください。皆さんありがとう !!!

4

1 に答える 1

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"
    ...
}

しかし、「未知の失敗」は奇妙に思えます。それについてのlogcatはありますか?

于 2016-04-12T22:55:04.370 に答える