我想使用SupportLibrary中的RenderScript来创建模糊效果。
为此,我从这里找到了解决方案 https://stackoverflow.com/a/14988991/408780
final RenderScript rs;
rs = RenderScript.create( myAndroidContext );
final Allocation input = Allocation.createFromBitmap( rs, photo, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT );
final Allocation output = Allocation.createTyped( rs, input.getType() );
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create( rs, Element.U8_4( rs ) );
script.setRadius( myBlurRadius /* e.g. 3.f */ );
script.setInput( input );
script.forEach( output );
output.copyTo( photo );
问题是,rs = RenderScript.create(myAndroidContext)导致java.lang.NoClassDefFoundError,我不知道,出了什么问题。
根据https://developer.android.com/reference/android/support/v8/renderscript/ScriptIntrinsicBlur.html在版本23中添加了ScriptIntrinsicBlur。
所以我刚刚添加到应用程序gradle后面的行:
android {
...
defaultConfig {
...
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
}
...
}
我也尝试使用renderscriptTargetApi 21,如下所述 https://github.com/react-native-community/react-native-blur/issues/110#issuecomment-272956182
但仍然没有成功。有什么建议吗?
可能还有一些额外的信息:
minSdk = 14,targetSdk = 19,compileSdk = 25
提前谢谢。
答案 0 :(得分:0)
您使用的构建工具版本和gradle-plugin版本是什么?其他错误消息会有所帮助。
代码看起来很好。问题可能与proguard配置有关。你能添加以下内容:
-dontwarn android.support.v8.renderscript.*
-keepclassmembers class android.support.v8.renderscript.RenderScript {
native *** rsn*(...);
native *** n*(...);
}