看板 AndroidDev 關於我們 聯絡資訊
幫朋友請教: 我朋友接手已離開公司工程師的專案壓縮檔, 他解完壓縮, 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://www.ptt.cc/bbs/AndroidDev/M.1511761438.A.B57.html ※ 編輯: ruthertw (1.200.202.146), 11/27/2017 14:03:57
ssccg: JNI要有java端的介面(有關鍵字native的method),跟so裡面的 11/27 14:18
ssccg: JNI function有對應正確就可以用,不用.h或其他library 11/27 14:18
ssccg: so檔直接放在jniLibs裡,執行時就能用System.loadLibrary 11/27 14:20
ssccg: 至於你說的load so library到Android Studio專案不知道是指 11/27 14:21
ssccg: 什麼,source當然是看不到的 11/27 14:22
ruthertw: 幫朋友問,如何調用so裡面的非jni funcitons? 11/27 14:36
lnmlee: 應該是用別人編譯完的so檔開發的 所以沒有原始碼很正常。 11/27 14:36
lnmlee: 接手應該只是要沿用so lib檔而已 11/27 14:36
ruthertw: 譬如原so裡有一個int abc(),怎麼在Android studio調用? 11/27 14:54
ruthertw: 全部都要手動一個一個轉換成jni形式?沒有source codes.. 11/27 15:06
ssccg: 非jni function不能從java直接呼叫,要寫個jni function去 11/27 18:26
ssccg: 呼叫,然後這個jni function的native code要有.h才能build 11/27 18:27
ssccg: 不用是原始的,知道有int abc()就自己寫個.h寫進去啊 11/27 18:28
ssccg: 不過這大概就算是你所謂的手動轉換吧 11/27 18:28
y3k: 是可以用obj dump的方式知道so裡面有什麼函式下去跑 但是很難 11/27 19:10
y3k: XD 11/27 19:10
ruthertw: 感覺很痛苦,只要一個型態對錯就整個大亂! 11/27 19:25
ruthertw: 請問有沒有更完善的方法,對岸強人是說數量太多,乾脆放棄 11/27 19:26
now99: NDK 11/27 20:31
zop: 我第一個想法是,這公司對員工應該很差 XDDD 11/28 17:44
ruthertw: build system 可以為你處理許多細節,例如:你不許要在 11/30 13:51
ruthertw: Android.mk 文件中列出頭文件或者其他的依賴關係 11/30 14:08
ruthertw: blog.csdn.net/doublefi123/article/details/38925083 11/30 14:09
ruthertw: 這是對岸說的,但不知道怎麼能不用"頭文件"? 11/30 14:10
ruthertw: 目前是連"C和C++源文件的列表"也都沒有呀... @_@~ 11/30 14:36
james732: objdump只能解symbol name但應該無法得知參數與回傳值? 11/30 18:24