作者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/m.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