作者ruthertw (督人无数就是我)
看板AndroidDev
标题[问题] 请问如何调用没有.h的.so library?
时间Mon Nov 27 13:43:55 2017
帮朋友请教:
我朋友接手已离开公司工程师的专案压缩档,
他解完压缩,
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吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.200.202.146
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1511761438.A.B57.html
※ 编辑: ruthertw (1.200.202.146), 11/27/2017 14:03:57
1F:→ ssccg: JNI要有java端的介面(有关键字native的method),跟so里面的 11/27 14:18
2F:→ ssccg: JNI function有对应正确就可以用,不用.h或其他library 11/27 14:18
3F:→ ssccg: so档直接放在jniLibs里,执行时就能用System.loadLibrary 11/27 14:20
4F:→ ssccg: 至於你说的load so library到Android Studio专案不知道是指 11/27 14:21
5F:→ ssccg: 什麽,source当然是看不到的 11/27 14:22
6F:→ ruthertw: 帮朋友问,如何调用so里面的非jni funcitons? 11/27 14:36
7F:推 lnmlee: 应该是用别人编译完的so档开发的 所以没有原始码很正常。 11/27 14:36
8F:→ lnmlee: 接手应该只是要沿用so lib档而已 11/27 14:36
9F:→ ruthertw: 譬如原so里有一个int abc(),怎麽在Android studio调用? 11/27 14:54
10F:→ ruthertw: 全部都要手动一个一个转换成jni形式?没有source codes.. 11/27 15:06
11F:→ ssccg: 非jni function不能从java直接呼叫,要写个jni function去 11/27 18:26
12F:→ ssccg: 呼叫,然後这个jni function的native code要有.h才能build 11/27 18:27
13F:→ ssccg: 不用是原始的,知道有int abc()就自己写个.h写进去啊 11/27 18:28
14F:→ ssccg: 不过这大概就算是你所谓的手动转换吧 11/27 18:28
15F:→ y3k: 是可以用obj dump的方式知道so里面有什麽函式下去跑 但是很难 11/27 19:10
16F:→ y3k: XD 11/27 19:10
17F:→ ruthertw: 感觉很痛苦,只要一个型态对错就整个大乱! 11/27 19:25
18F:→ ruthertw: 请问有没有更完善的方法,对岸强人是说数量太多,乾脆放弃 11/27 19:26
19F:推 now99: NDK 11/27 20:31
20F:推 zop: 我第一个想法是,这公司对员工应该很差 XDDD 11/28 17:44
21F:→ ruthertw: build system 可以为你处理许多细节,例如:你不许要在 11/30 13:51
22F:→ ruthertw: Android.mk 文件中列出头文件或者其他的依赖关系 11/30 14:08
23F:→ ruthertw: blog.csdn.net/doublefi123/article/details/38925083 11/30 14:09
24F:→ ruthertw: 这是对岸说的,但不知道怎麽能不用"头文件"? 11/30 14:10
25F:→ ruthertw: 目前是连"C和C++源文件的列表"也都没有呀... @_@~ 11/30 14:36
26F:→ james732: objdump只能解symbol name但应该无法得知参数与回传值? 11/30 18:24