[问题] 请问如何调用没有.h以及lib的so library?

楼主: ruthertw (小叶老大)   2017-11-27 13:43:55
帮朋友请教:
我朋友接手已离开公司工程师的专案压缩档,
他解完压缩,
Android Studio打不开这个专案,
libs里面有几个so档案,
但是里面完全没有任何.h以及C/C++ library的source codes.
他打电话给这位离职工程师,
离职工程师说他离职时已经删掉所有公司的档案,
且so里面混杂着native和jni的functions,
离职工程师表示他重建不了这些source codes.
我朋友查过这三年内的网上所有有关load so library教学文章,
发现没有一篇是可以不加.h以及相关library,
就可以直接load so library到Android Studio专案里...
但是android studio改版这么多次,
我朋友怀抱着希望,
想请问有什么方式可以让android studio可以直接add so library吗?
作者: ssccg (23)   2017-11-27 14:18:00
JNI要有java端的接口(有关键字native的method),跟so里面的JNI function有对应正确就可以用,不用.h或其他libraryso档直接放在jniLibs里,执行时就能用System.loadLibrary至于你说的load so library到Android Studio专案不知道是指什么,source当然是看不到的
楼主: ruthertw (小叶老大)   2017-11-27 14:36:00
帮朋友问,如何调用so里面的非jni funcitons?
作者: lnmlee   2017-11-27 14:36:00
应该是用别人编译完的so档开发的 所以没有原始码很正常。接手应该只是要沿用so lib档而已
楼主: ruthertw (小叶老大)   2017-11-27 14:54:00
譬如原so里有一个int abc(),怎么在Android studio调用?全部都要手动一个一个转换成jni形式?没有source codes..
作者: ssccg (23)   2017-11-27 18:26:00
非jni function不能从java直接呼叫,要写个jni function去呼叫,然后这个jni function的native code要有.h才能build不用是原始的,知道有int abc()就自己写个.h写进去啊不过这大概就算是你所谓的手动转换吧
作者: y3k (激流を制するは静水)   2017-11-27 19:10:00
是可以用obj dump的方式知道so里面有什么函式下去跑 但是很难XD
楼主: ruthertw (小叶老大)   2017-11-27 19:25:00
感觉很痛苦,只要一个型态对错就整个大乱!请问有没有更完善的方法,对岸强人是说数量太多,干脆放弃
作者: now99 (陈在天)   2017-11-27 20:31:00
NDK
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2017-11-28 17:44:00
我第一个想法是,这公司对员工应该很差 XDDD
楼主: ruthertw (小叶老大)   2017-11-30 13:51:00
build system 可以为你处理许多细节,例如:你不许要在Android.mk 文件中列出头文件或者其他的依赖关系blog.csdn.net/doublefi123/article/details/38925083这是对岸说的,但不知道怎么能不用"头文件"?目前是连"C和C++源文件的列表"也都没有呀... @[email protected]~
作者: james732 (好人超)   2017-11-30 18:24:00
objdump只能解symbol name但应该无法得知参数与回传值?

Links booklink

Contact Us: admin [ a t ] ucptt.com