gpt4 book ai didi

Android - Renderscript 支持库 - 加载 RS jni 库时出错

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:49 25 4
gpt4 key购买 nike

我正在尝试将 Renderscript 支持库包含到我的项目中。我收到以下错误。

android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load rsjni: findLibrary returned null

我没有使用任何 Renderscript jar 文件,我试图通过 Gradle 使用它。

这是我的 Gradle.build 文件

顶级

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}

ext {
compileSdkVersion="Google Inc.:Google APIs:22"
buildToolsVersion="23.0.1"
playStoreMinSdkVersion=16
amazonStoreMinSdkVersion=8
targetSdkVersion=22
versionCode=20
versionName="3.3.0"
runProguard=true
zipAlign=true
proguardConfiguration='../proguard.config'
}

allprojects {
repositories {
jcenter()
}
}

具体应用

defaultConfig {
applicationId "**REMOVED**"
//noinspection GroovyAssignabilityCheck
targetSdkVersion rootProject.ext.targetSdkVersion
//noinspection GroovyAssignabilityCheck
versionCode rootProject.ext.versionCode
//noinspection GroovyAssignabilityCheck
versionName rootProject.ext.versionName

renderscriptTargetApi 23
renderscriptSupportModeEnabled true
}

我在 stackoverflow 上尝试并找到的所有可能的解决方案都不起作用。我的 proguard 配置中也包含了这个

#RenderScript
-keepclasseswithmembernames class * {
native <methods>;
}
-keep class android.support.v8.renderscript.** { *; }

编辑:这是我实际使用 renderscript 的实现,也是它导致我的应用程序在调用时崩溃的地方。

public static BitmapDrawable Blur ( View view ){

Bitmap image = GetScreenshot( view );

int width = Math.round( image.getWidth() * DEFAULT_BITMAP_SCALE );
int height = Math.round( image.getHeight() * DEFAULT_BITMAP_SCALE );

Bitmap inputBitmap = Bitmap.createScaledBitmap( image, width, height, false );

Bitmap outputBitmap = Bitmap.createBitmap( inputBitmap );

RenderScript rs = RenderScript.create( view.getContext() );
ScriptIntrinsicBlur intrinsicBlur = ScriptIntrinsicBlur.create( rs, Element.U8_4(rs) );

Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap( rs, outputBitmap );

intrinsicBlur.setRadius( DEFAULT_BLUR_RADIUS );
intrinsicBlur.setInput( tmpIn );
intrinsicBlur.forEach( tmpOut );

tmpOut.copyTo( outputBitmap );

inputBitmap.recycle();
rs.destroy();

return new BitmapDrawable( outputBitmap );
}

这是准确的线

RenderScript rs = RenderScript.create( view.getContext() );

最佳答案

不幸的是,Renderscript 不适用于 armeabi 架构。好的一面是,您可以在运行时检查设备的架构,而不是在这些设备上运行 Renderscript 代码:

System.getProperty("os.arch");

android bug tracker 上还有一个 Unresolved 问题,他们指出:

We only ship the support library for armeabi-v7a. This is a known limitation.

https://code.google.com/p/android/issues/detail?id=68520

编辑:如果你想在 armeabi 设备上实现不带 Renderscript 的模糊,你可以简单地使用 Bitmap.createScaledBitmap 设置 filtertrue

关于Android - Renderscript 支持库 - 加载 RS jni 库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com