首页
社区
课程
招聘
[求助]关于java载入so用绝对路径出错!System.Load("xx"),报错
发表于: 2016-6-12 19:09 9376

[求助]关于java载入so用绝对路径出错!System.Load("xx"),报错

2016-6-12 19:09
9376
写了一个demo,想用绝对路径来载入自己的so,可是报错提示找不到这个library文件怎么办呢!
代码如下
System.Load("/data/data/com.example.test/cache/libmytest.so");

报错信息
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.IllegalArgumentException: Unable to find native library: mytest
Caused by: java.lang.IllegalArgumentException: Unable to find native library: mytest

已经把libmytest.so push到/data/data/com.example.test/cache/目录了,怎么还提示找不到呢!最后不想把so,丢到libs目录下面,想换别的路径

麻烦路过的大哥指点一下!!!!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
郁闷拿个简单的demo就可以,随便找个游戏然后反编译,插入我的smali,把游戏原来的so随便丢个目录,就不行,难道一定要丢到lib下面吗
2016-6-12 21:23
0
雪    币: 764
活跃值: (1149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
adb push之后修改so的权限
2016-6-13 12:22
0
雪    币: 267
活跃值: (779)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
System.Load("/data/data/com.example.test/cache/mytest.so");
2016-6-13 14:46
0
雪    币: 53
活跃值: (270)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
详细logcat日志方便看问题
1. 机器是否支持64位,系统为你的app选择的ABI是?arm64-v8a/armeabi-v7a/armeabi。。。
   adb shell dumpsys package com.your.demo
   查看ABI
   如果primaryABI是64位,你的so是32位,加载不会成功,反之亦然

2. ls -lZ /data/data/com.xxx/cache/yyy.so ,看看你的so权限、SELINUX上下文,你的app进程身份是否可以读取

3. 你的so是否依赖其他so,依赖的so是否完整,是否都在LD_LIBRARY_PATH中;依赖的so中是否存在未定义的函数,。。。

以上1、3导致的加载失败,logcat会打印出具体错误。
2016-6-13 18:20
0
雪    币: 260
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
确保load时你的so是存在的,且路径是对的,且具有相应的读取权限。
2016-6-13 20:35
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
谢谢帮助,我去试试
2016-6-14 09:32
0
游客
登录 | 注册 方可回帖
返回
//