繁体   English   中英

Renderscript 被 AndroidX 破坏了?

Renderscript broken with AndroidX?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

由于我已迁移到 androidx,因此无法运行 Renderscript。 我收到以下异常:

2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] JNI 在应用程序中检测到错误:JNI NewGlobalRef 被调用并带有未决异常 java.lang.ClassNotFound在路径上找到类“android.support.v8.renderscript.RenderScript”:DexPathList[[zip file “/data/app/pl.qus.xenoamp2-xHJAddeg9oM-uGSxlvMp7A==/base.apk”],nativeLibraryDirectories=[/data /app/pl.qus.xenoamp2-xHJAddeg9oM-uGSxlvMp7A==/lib/arm64, /data/app/pl.qus.xenoamp2-xHJAddeg9oM-uGSxlvMp7A==/base.apk!/lib/arm64-v8a, /system/ lib64, /system/vendor/lib64]]] 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] 在 java.lang.Class dalexvik.ClassLoader.BaseD .findClass(java.lang.String) (BaseDexClassLoader.java:93) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] 在 java.lang.类 java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote6 4: java_vm_ext.cc:504] 在 java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2018-10-12 16:27:58.328 27195-27195/pl .qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] 在 java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java :-2) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] 在 java.lang.String java.lang.Runtime.doLoad(java.lang) .String, java.lang.ClassLoader) (Runtime.java:1099) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] at void java.lang .Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.String) (Runtime.java:1014) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc :504] at void java.lang.System.loadLibrary(java.lang.String) (System.java:1657) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext .cc:504] 在 androidx.renderscript.RenderScript androidx.renderscript .RenderScript.internalCreate(android.content.Context, int, androidx.renderscript.RenderScript$ContextType, int) (RenderScript.java:1408) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A /zygote64: java_vm_ext.cc:504] 在 androidx.renderscript.RenderScript androidx.renderscript.RenderScript.create(android.content.Context, int, androidx.renderscript.RenderScript$ContextType, int) (RenderScript.java:1599) 2018- 10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] 在 androidx.renderscript.RenderScript androidx.renderscript.RenderScript.create(android.content.Context, androidx.renderscript .RenderScript$ContextType, int) (RenderScript.java:1549) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64: java_vm_ext.cc:504] at androidx.androidxRenderScript。 .renderscript.RenderScript.create(android.content.Context, androidx.renderscript.RenderScript$ContextType) (RenderScript.java:1525) 2018-10-12 16:27:58.328 27195-27195/pl.qus.xenoamp2 A/zygote64 : java_vm_ext.cc:504] 在 androidx.renderscript.RenderScript androidx.renderscript.RenderScript.create(android.content.Context) (RenderScript.java:1512)

我在gradle中有通常的条目:

    renderscriptTargetApi 18
    renderscriptSupportModeEnabled true

还有什么我需要改变的吗?

8 个回复

我遇到了同样的问题,我切换到了非支持版本的渲染脚本

在项目gradle中

renderscriptTargetApi 17
renderscriptSupportModeEnabled false

在使用渲染脚本的类中

import android.renderscript.RenderScript

代替

import androidx.renderscript.RenderScript

它为我完成了工作,但我不喜欢这个解决方案,待完成

构建工具(确切地说是预构建的 librsjni_androidx.so)存在问题,现在已在29.0.2版中修复

我已经通过将 compile sdk 升级到 API 29 并将构建工具升级到 29.0.2 来验证这一点。

编辑:这是我在build.gradle配置的:

    renderscriptTargetApi 18
    renderscriptSupportModeEnabled true

我能够改变的版本来解决这个问题buildToolsVersion29.0.2renderscriptTargetApi29

android {
    // ...
    buildToolsVersion '29.0.2'
    defaultConfig {
        // ...
        renderscriptTargetApi 29
        renderscriptSupportModeEnabled true
    }
    // ...
}

在我的 gradle 模块文件中,我有:

renderscriptTargetApi 19
renderscriptSupportModeEnabled true

而且,在迁移到 AndroidX 之前,我进行了以下导入:

import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.Matrix4f;
import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicBlur;
import android.support.v8.renderscript.ScriptIntrinsicColorMatrix;
import android.support.v8.renderscript.ScriptIntrinsicConvolve3x3;

迁移到AndroidX后,就像文档说的:

我在我的 gradle 模块文件中保留了相同的语句,但我升级到 buildToolsVersion 29.0.2 和我的 compileSdkVersion 到 28

我将以前的导入更改为以下内容,并且一切正常。

import androidx.renderscript.Matrix4f;
import androidx.renderscript.RenderScript;
import androidx.renderscript.Allocation;
import androidx.renderscript.Element;
import androidx.renderscript.ScriptIntrinsicBlur;
import androidx.renderscript.ScriptIntrinsicColorMatrix;
import androidx.renderscript.ScriptIntrinsicConvolve3x3;

标记的答案确实使它起作用,但正如@Zee 所提到的,似乎不支持的常规渲染脚本删除了 64 位兼容性。 现在,当我尝试发布我的应用程序时,我从 Google Play 控制台收到了一条警告消息。 所以我想如果我们还在使用 renderscript,我们将不得不继续使用支持版本,暂时不要迁移到 AndroidX。

我通过添加 proguard 来修复:我从谷歌支持者那里得到了答案

-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}
# RenderScript to be safe on "native callback" side
-keep class androidx.renderscript.** { *; }

我有同样的问题。 唯一对我有用的(在尝试了其中的一些之后)是更新到最新的构建工具版本(29.0.3),我不确定这些问题最初发布时是否存在:

buildToolsVersion '29.0.3'
android {
    //...
    defaultConfig {
        //...

        renderscriptTargetApi 21
        renderscriptSupportModeEnabled true
    }
}
1 RenderScript androidx 不匹配类型

我已经为 android 设备创建了简单的仪器测试来玩渲染脚本。 我有测试类、脚本和 gradle 配置: android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { ...

2 RenderScript 在 macOS Catalina (10.15) 上损坏

我已经更新到 MacOS Catalina。 今天早上,当我在处理我的 Android 项目时,它突然开始给出以下异常:“错误:原因:错误 = 86,可执行文件中的 CPU 类型错误”。 我怀疑是因为我更新到 macOS 10.15 并且因为我试图为我的项目构建 APK(所以它重建了渲染脚本的东西 ...

3 Androidx RenderScript 不运行 android api<19

我使用了带有模糊图像的 androidx,但是当运行 android api&lt;19 崩溃应用程序时。 当我使用 android&gt;19 运行时,我运行正常,而不是崩溃应用程序,如果我使用带有“android.support.v8.renderscript”的 android 正常应用程序, ...

10 异步RenderScript

我不太了解RenderScript的异步行为。 有几个示例: 要么 我不知道与foreach_root()一起使用。 甚至,从调用返回后,结果也同步存在。 但是,文档中到处都提到了异步功能... 如何正确使用内核并行性? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM