制作系统应用时无法加载.so库文件

5

我创建了一个应用程序,将成为一个系统应用程序。 当我正常安装应用程序时(而不是作为系统应用程序),".so"文件会被加载。但是当我将其放入/system/app/中使其成为系统应用程序时,我遇到了以下错误:

01-09 00:20:26.889: E/AndroidRuntime(2101): java.lang.UnsatisfiedLinkError: Couldn't load iconv from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/com.google.android.maps.jar", zip file "/system/app/My.apk"],nativeLibraryDirectories= [/vendor/lib, /system/lib]]]: findLibrary returned null

我对此进行了研究 -

看起来 ".o" 和 ".so" 文件位于 /system/lib/ 和 /vendor/lib/。

即使将文件添加到相应的目录中,仍然无法加载库。

任何帮助都将不胜感激。


你尝试过将.so文件推送到/system/lib/后重新启动目标吗? - ozbek
是的,我试过了。但是还是出现了同样的错误。这个路径返回了null。有没有办法可以将路径设置为环境变量,这样我就可以完成这件事了吗?我还在应用程序的“libs/armeabi”、“libs/armeabi-v71”和“x86”目录中有.so文件。 - mn0102
@shoerat,问题已解决。 - mn0102
1个回答

8

在我的情况下,问题与权限有关。将“.SO”文件放入相应的目录后,我将默认分配的权限600修改为755。这样就可以正常工作。


3
虽然问题是真实存在的,但您的设置不正确。您缺少执行位,因此这在强制执行该项的ARM系统上无法运行。在Android上,正常的.so文件权限是755。 - Chris Stratton
@ChrisStratton 感谢您的纠正。我没有提到,但是在我的实验室的某个安卓设备上,我使用了755,默认值为600。 - mn0102
在哪里更改这些权限? - TaRan LaYal
@TaRanLaYal $ su

cp /some/path/on/your/device/your.so /system/lib/

chmod 755 /system/lib/your.so

reboot

- mn0102
在终端输入以下命令后--- su # cp /home/taran/TaRanSinGH/MyApplication/libs/armeabi libcws_ps_4_0_3.so//system/lib/ # chmod 755 /system/lib/LIBCWS_PS_4_0_3.SO.so我收到了su:身份验证失败的消息。 - TaRan LaYal
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接