Android 安卓可以';t在api中加载SupportV8 RenderScript<;17

Android 安卓可以';t在api中加载SupportV8 RenderScript<;17,android,crash,android-support-library,renderscript,Android,Crash,Android Support Library,Renderscript,我只想在我的应用程序中使用RenderScript的ScriptIntrinsicBlur,我添加了RenderScript.v8.jar(在android support lib v8中)以支持17个api,但它在这一行崩溃(在api中,您需要告诉Eclipse或android Studio使用RenderScript支持模式) 在Eclipse中,编辑project.properties文件并添加: renderscript.target=18 renderscript.support.m

我只想在我的应用程序中使用RenderScript的ScriptIntrinsicBlur,我添加了RenderScript.v8.jar(在android support lib v8中)以支持17个api,但它在这一行崩溃(在api中,您需要告诉Eclipse或android Studio使用RenderScript支持模式)

在Eclipse中,编辑
project.properties
文件并添加:


renderscript.target=18
renderscript.support.mode=true

在Android Studio中,编辑应用程序模块中的
build.gradle
文件,并将其添加到
defaultConfig
附件中(有关详细信息,请参阅):


renderscriptTargetApi 18
renderscriptSupportModeEnabled true


那里的目标API级别需要是您可以使用的最大值。如果您的最小SDK级别更高,则会忽略此值,而使用最小SDK值。

有趣的是,即使是Android Renderscript示例也无法在模拟器中工作,比方说使用API 10。(通过Android Studio进行测试,最近的更新,创建示例,使用API 10的模拟器->崩溃)。这令人惊讶。 在我的项目中,我确实尝试/捕获了Renderscript,并采取了一种退后措施,至少不会使应用程序崩溃,如果使用Renderscript生成的单一愚蠢的模糊效果不可用的话。 所以我们知道,设备上缺少共享库。这就是为什么有些人将Renderscript库复制到他们的项目中,通常构建工具也会这样做。通过查看apk/zip文件,可以很容易地检查这一点。
我认为这里提供了一个很好的教程:

添加jar是不够的。在Eclipse上使用renderscript.support.mode=true。也许现在Android Studio也有类似的标志-使用哪些安装所需的本机库。您可以添加更多关于您的解决方案的详细信息吗?只有对链接的引用不会被使用l如果它变得无效,我的解决方案只是一些退路,因为Renderscript只是用于一种奇特的效果。我找到了有关模拟器问题的更多信息:“Renderscript库只包括用于armeabi-v7a的JNI库,2.x模拟器仅适用于armeabi,这似乎是问题所在。”请查看您的apk(以zip文件打开)。应该有库“lib/[armeabi-v7a | mips | x86]/[librsjni.so | libRSSupport.so]”。如果是这种情况,您就无法改善结果,因为谷歌已经解决了这一问题。看起来它回答了关于获取armv7模拟器的问题。我们不支持armeabi,也不打算支持armeabi,因为绝大多数传统ARM设备(即几乎所有设备)都支持armeabi是armv7而不是armeabi。您需要更具体地了解您看到的问题。解决我问题的方法是切换到构建工具22.0.1。缺少一个库,无法在较新的构建工具上打包。您可能认为google会事先进行测试?可能需要更新工具。Renderscript API值不为go与Android API版本或工具版本同步。有时内核“形式”您的使用也会受到影响。这可能会让人感到困惑。谷歌在发布之前会进行测试,但几乎不可能对所有可能的设备进行测试,因此事情可能会从裂缝中溜走。工具更新和重建通常会解决类似的问题。另外,请确保您实际导入的是
android.support.v8.renderscript
类,而不是原生的
android.renderscript
classes。对于我来说,使用原生类只是显示了我第一次忽略的警告。
        RenderScript rs = RenderScript.create(getApplicationContext());
 java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:299)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
        at java.lang.Thread.run(Thread.java:856)
 Caused by: android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load RSSupport: findLibrary returned null
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:945)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:982)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:968)