Android NDK開發之引用純C庫檔案

2021-07-26 01:23:19 字數 960 閱讀 2508

安卓的串列埠通訊及涉及到一些底層資料互動時經常會使用ndk開發。假設你正在做的專案中需要引用乙個第三方的c庫檔案(.so動態庫檔案),首先判斷這個c庫是否符合android中規範的jni標準。

1.如果符合jni標準,我們就不需要另外寫jni檔案,而是直接導入庫檔案(建立jnilibs資料夾,建立不同的平台,將庫檔案放入),如下:

然後在應用層載入這個庫並呼叫其中的方法即可,呼叫的方法必須先用native定義,如下:

2.如果你拿到的c庫不是乙個符合jni標準的,那麼就需要再寫乙個jni檔案封裝一層。首先我們要正確引入這個庫檔案(這裡用.so動態庫檔案),在main目錄下建立命名為jni的資料夾,將.so庫檔案放入:

將c庫的標頭檔案放在jni資料夾下,或者建立乙個include資料夾,將標頭檔案放入,兩者的差別是在.mk檔案中配置的路徑不同而已。在jni目錄下建立android.mk檔案,並在該檔案中進行配置:

4、5、6行是第三方庫檔案的檔名稱位置等資訊,11、12行是封裝成jni檔案後生成的庫名稱,13、14行是在封裝過程中涉及到的原始檔,15行為說明引用具體的第三方庫。

在module的build.gradle檔案中android下配置:

externalnativebuild 

}

在defaultconfig中新增生成的庫平台:

ndk

android ndk開發crash崩潰定位

android使用ndk開發crash崩潰定位 1 法一 使用ndk stack輸出呼叫堆疊 cd home hk android develop android ndk r12b 將log.txt放在這個目錄 ndk stack sym home hk project obj local arme...

Android ndk開發C呼叫C 問題

1.c 檔案暴露給c的方法需要在前面加上 extern c char getjsonstr 當然,也可以在宣告的時候指名該方法是c呼叫的方法 extern c char getjsonstr 宣告可以在該檔案頭部宣告,也可以在該原始檔的標頭檔案中宣告,都有也可以 2.c呼叫c 的方法的時候需要宣告所...

Android NDK學習之隱藏敏感資訊

123 45 local path callmy dir include clear vars local module local src files cppinclude build shared library 1 2 34 5 6 78 9 10 public class jniinte c...