2015-03-31 79 views
1

我正尝试使用SDK Build Tools 22.0.0中的v8 Renderscript支持库。使用Android Renderscript v8支持库会导致与其他共享库的链接错误

我使用gradle这个建立的,我已经包括了线

defaultConfig { 
    renderscriptTargetApi 21 
    renderscriptSupportModeEnabled true 
} 

导入和使用库似乎罚款,但是当我跑我的应用程序,它扼流圈试图加载另一个共享库,给出一个UnsatisfiedLinkError。如果我除了删除renderscript的东西,没有其他的变化,没有联系问题。

反正有这个吗?我使用SDK工具22.0.0,gradle 2.2.1,Android Gradle插件1.1.0和Android Studio 1.1.0。

+0

你能否提供您所看到的错误的logcat的转储? – 2015-04-02 02:05:03

+0

我真的不能,因为它包含专有信息。但要点是,我正在建立一个包含.so文件的AAR库的依赖关系。 通常情况下,没有问题,但启用了Renderscript支持模式后,当应用程序尝试加载.so时,我得到一个UnsatisfiedLinkError。 未启用Renderscript支持模式(甚至使用Renderscript,但不支持支持库版本),.so加载正常。 – Dapp 2015-04-02 19:44:05

+0

检查它正在抱怨哪个符号(它会在日志中说出)。听起来像是你的AAR包含的东西和RS支持库在本机级别使用的东西之间可能会有一些重叠。 – 2015-04-02 20:59:18

回答

2

发生在我身上的是,当我在64位设备上运行时,PathClassLoader在64位版本中找到了renderscript库,因此试图加载包含在项目中的所有其他库的64位版本。你不能运行混合64位和32位。但是由于一些库在64位版本中不存在,PathClassLoader找不到它们,因此UnsatisfiedLinkError。我工作的解决方案是排除renderscript库的64位版本。

看到这个伟大的文章,看看它是如何完成的。 Mixing 32- and 64-bit Dependencies in Android

Stackoverflow post表明一个有点简单的解决方案