[問題] 請問如何調用沒有.h以及lib的so library?

看板AndroidDev作者 (督人無數就是我)時間7年前 (2017/11/27 13:43), 7年前編輯推噓3(3023)
留言26則, 7人參與, 7年前最新討論串1/1
幫朋友請教: 我朋友接手已離開公司工程師的專案壓縮檔, 他解完壓縮, 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

11/27 14:18, 7年前 , 1F
JNI要有java端的介面(有關鍵字native的method),跟so裡面的
11/27 14:18, 1F

11/27 14:18, 7年前 , 2F
JNI function有對應正確就可以用,不用.h或其他library
11/27 14:18, 2F

11/27 14:20, 7年前 , 3F
so檔直接放在jniLibs裡,執行時就能用System.loadLibrary
11/27 14:20, 3F

11/27 14:21, 7年前 , 4F
至於你說的load so library到Android Studio專案不知道是指
11/27 14:21, 4F

11/27 14:22, 7年前 , 5F
什麼,source當然是看不到的
11/27 14:22, 5F

11/27 14:36, 7年前 , 6F
幫朋友問,如何調用so裡面的非jni funcitons?
11/27 14:36, 6F

11/27 14:36, 7年前 , 7F
應該是用別人編譯完的so檔開發的 所以沒有原始碼很正常。
11/27 14:36, 7F

11/27 14:36, 7年前 , 8F
接手應該只是要沿用so lib檔而已
11/27 14:36, 8F

11/27 14:54, 7年前 , 9F
譬如原so裡有一個int abc(),怎麼在Android studio調用?
11/27 14:54, 9F

11/27 15:06, 7年前 , 10F
全部都要手動一個一個轉換成jni形式?沒有source codes..
11/27 15:06, 10F

11/27 18:26, 7年前 , 11F
非jni function不能從java直接呼叫,要寫個jni function去
11/27 18:26, 11F

11/27 18:27, 7年前 , 12F
呼叫,然後這個jni function的native code要有.h才能build
11/27 18:27, 12F

11/27 18:28, 7年前 , 13F
不用是原始的,知道有int abc()就自己寫個.h寫進去啊
11/27 18:28, 13F

11/27 18:28, 7年前 , 14F
不過這大概就算是你所謂的手動轉換吧
11/27 18:28, 14F

11/27 19:10, 7年前 , 15F
是可以用obj dump的方式知道so裡面有什麼函式下去跑 但是很難
11/27 19:10, 15F

11/27 19:10, 7年前 , 16F
XD
11/27 19:10, 16F

11/27 19:25, 7年前 , 17F
感覺很痛苦,只要一個型態對錯就整個大亂!
11/27 19:25, 17F

11/27 19:26, 7年前 , 18F
請問有沒有更完善的方法,對岸強人是說數量太多,乾脆放棄
11/27 19:26, 18F

11/27 20:31, 7年前 , 19F
NDK
11/27 20:31, 19F

11/28 17:44, 7年前 , 20F
我第一個想法是,這公司對員工應該很差 XDDD
11/28 17:44, 20F

11/30 13:51, 7年前 , 21F
build system 可以為你處理許多細節,例如:你不許要在
11/30 13:51, 21F

11/30 14:08, 7年前 , 22F
Android.mk 文件中列出頭文件或者其他的依賴關係
11/30 14:08, 22F

11/30 14:09, 7年前 , 23F
blog.csdn.net/doublefi123/article/details/38925083
11/30 14:09, 23F

11/30 14:10, 7年前 , 24F
這是對岸說的,但不知道怎麼能不用"頭文件"?
11/30 14:10, 24F

11/30 14:36, 7年前 , 25F
目前是連"C和C++源文件的列表"也都沒有呀... @_@~
11/30 14:36, 25F

11/30 18:24, 7年前 , 26F
objdump只能解symbol name但應該無法得知參數與回傳值?
11/30 18:24, 26F
文章代碼(AID): #1Q6wOUjN (AndroidDev)
文章代碼(AID): #1Q6wOUjN (AndroidDev)