请问关于在Android程序中调用外部动态链接库的问题

toy2206757 2010-11-24 04:42:20
大家好!
我现在做一个项目,是需要使用到外部链接库的.so文件的
现在问题是,那个.so文件不是我做的,是从别的软件反编译提取到的
我想知道怎么在自己的程序中调用到它,来实现我需要的功能。
反编译的代码我也看了,关于这儿库的本地静态方法也就三个,非常简单。
但问题就是出现在连接上,有关于使用到那个库的方法就跑不动了……

求高人指点!
首先,调用别人生成的.so库可不可行?
如果这个想法可行,那么就是怎么才能使用到?
...全文
1015 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
RxRead 2013-04-21
  • 打赏
  • 举报
回复
引用 楼主 toy2206757 的回复:
大家好! 我现在做一个项目,是需要使用到外部链接库的.so文件的 现在问题是,那个.so文件不是我做的,是从别的软件反编译提取到的 我想知道怎么在自己的程序中调用到它,来实现我需要的功能。 反编译的代码我也看了,关于这儿库的本地静态方法也就三个,非常简单。 但问题就是出现在连接上,有关于使用到那个库的方法就跑不动了…… 求高人指点! 首先,调用别人生成的……
首先,把so文件拷贝到android项目的libs\armeabi。 然后,编写Java文件调用so文件中的函数。System.loadLibrary("**");进行引用,然后编写相应的native函数。 此处必须使用生成so文件时,你所引用的第三方so文件所创建时的包名是什么,你在你调用的项目包名也必须相同。 由于我自己需要调用别人一个项目中的so文件,我自己试了,完全没有问题,希望能帮到你
  • 打赏
  • 举报
回复
楼主解决了没?
rlini 2012-06-29
  • 打赏
  • 举报
回复
请问楼主这个问题解决了吗?我现在也碰到调用外部动态链接库的问题了
qiujingwuli 2011-12-22
  • 打赏
  • 举报
回复
请问楼主这个问题解决了吗?我现在也碰到调用外部动态链接库的问题了
麒麟菜籽 2011-12-05
  • 打赏
  • 举报
回复
首先要搞清楚,动态链接库是执行时候链接的。
所以你应该将库文件name改为与Android.mk文件中LOCAL_JNI_SHARED_LIBRARIES的名字对应起来
第二,通常情况下,你要将xxx.so文件放入对应的/data/data/com.xxx.xxx/lib 目录下就可以调用了
hello_kitty8888 2011-12-01
  • 打赏
  • 举报
回复
行不行不好说。有的可行有的不可行。
还有与系统的一些文件有关,再就是如果是arm架构,在/build/core/下有一个prelink-map-arm.map的文件,里面有各个库对应的加载地址也有看一下。
还有生成so文件时,做了那些优化。
jeky_zhang2013 2011-08-31
  • 打赏
  • 举报
回复
学习了~~~
小边3310903 2011-08-31
  • 打赏
  • 举报
回复
学习下,没弄过~~
domonate 2011-08-31
  • 打赏
  • 举报
回复
学习一下!
开源螺丝钉 2011-08-30
  • 打赏
  • 举报
回复
路过帮顶。
yanjiashang 2011-08-30
  • 打赏
  • 举报
回复
直接调用的方法不可行,在Android中调用动态库有两种方法,一种通过ndk这个主要利用了java中的jni机制,一种是android中特有的方法,可以参看android中的源代码,该方法主要对jni中调用函数速度做了优化。
跟据你以上所述,据我了解是不可行的,主要存在以下几个问题。
1。你的so文件可能不是用交叉编译工具生成的,生成主要针对arm的代码。
2。也是主要的不符合jni规范,导致在java和so之间调用失败。
解决办法,看明白so反编译后的代码,弄懂jni,学会ndk,重写.
demo_ 2011-08-24
  • 打赏
  • 举报
回复
leiguang1108 2010-12-08
  • 打赏
  • 举报
回复
下载一个ndk,里面有samples
toy2206757 2010-11-28
  • 打赏
  • 举报
回复
运行到相关函数的时候就页面跳回去,跑不过去
logcat里面也没什么特殊报错
AndroidRuntime ERROR:thread attach failed
是哪出错了哦
toy2206757 2010-11-28
  • 打赏
  • 举报
回复
因为之前生成.so的相关文件,有提到包名类名什么的
多种途径失败后,现在怀疑是不是有唯一性啊,别的工程用不了?
有没有人试过成功的呢??
toy2206757 2010-11-27
  • 打赏
  • 举报
回复
有没有人试过成功的呢?求分享经验
freshui 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 toy2206757 的回复:]
引用 20 楼 killpoer3 的回复:
SO文件的调用涉及到package以及及类名什么的一大堆,除非你定义的类名和文件名和他的一样。

试过一模一样的,失败啊……还有没什么遗忘了?
[/Quote]

怎么个失败法你得给个log看一下啊。
java端包和类名什么的都要一样, 函数接口,参数及返回值要一摸一样,如果人家库中的jni反调java的函数或使用java类中的数据成员,要将自己的类中定义同样的东西。

总之,要想保证能用成功,一定要看过人家的源代码。
toy2206757 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 killpoer3 的回复:]
SO文件的调用涉及到package以及及类名什么的一大堆,除非你定义的类名和文件名和他的一样。
[/Quote]
试过一模一样的,失败啊……还有没什么遗忘了?
killpoer3 2010-11-26
  • 打赏
  • 举报
回复
SO文件的调用涉及到package以及及类名什么的一大堆,除非你定义的类名和文件名和他的一样。
toy2206757 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 freshui 的回复:]
木有办法呀, android的动态库和linux的不兼容,估计你要拿源代码到android平台上重新编译。

通常linux上用的是glibc,android上是自己的bionic,差别很大的,连so文件格式及解析方法都不一样,根本没法兼容。
[/Quote]

那个.so库是从Android软件中提取出来的都不行???
加载更多回复(18)

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧