很多時候android業務層開發,和sdk開發是分開的,sdk更多與ndk生成so,這期間雙方**不共享,對除錯帶來很大難度,所以把一些方法彙總下:
需要用到工具:
android\sdk\platform-tools\adb
ndkso生成庫中間檔案:obj\local\armeabi-v7a 到這層即可,arm v8 同理
安卓手機肯定不能少了,還有apk 檔案
步驟:1. 啟動adb命令,如下:
adb logcat | ndk-stack -sym d:\workplace\****\obj\local\armeabi-v7a
3.如果ndk崩潰即可在終端列印 堆疊資訊,進行分析即可,如下
********** crash dump: **********
build fingerprint: 'xiaomi/polaris/polaris:10/qkq1.190828.002/v11.0.1.0.qdgcnxm:user/release-keys'
signal 11 (sigse**), code 1 (se**_maperr), fault addr 0x4
stack frame 03-25 19:53:17.721 17063 17063 f debug : #10 pc 000a109b /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (buildid: 21ece86427ccb892a7d044a6b4b4babb)
stack frame 03-25 19:53:17.721 17063 17063 f debug : #11 pc 00058113 /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (buildid: 21ece86427ccb892a7d044a6b4b4babb)
crash dump is completed
4.基於以上堆疊資訊,即可成功定位**段錯誤了。 NDK引用NDK生成的so
1 編譯so庫 假如我們的 需要加密而不被別人知道,這裡可以通過ndk編譯生成so 準備好加密 檔案 encrypt.h encrypt.c 放進jni目錄 編寫mk檔案,放進jni目錄 local path call my dir include clear vars local module e...
Linux生成動態庫 so與生成靜態庫 a
動態庫共享庫 第一步 通過gcc fpic c 編譯生成.o檔案 gcc fpic c a.c 編譯生成.o檔案 fpic與位置無關 gcc fpic c b.c 生成a.o,b.o編譯檔案。第二步 通過上面已經生成的a.o,b.o檔案生成.so檔案 方法1 gcc shared wl o liba...
so動態鏈結庫生成 呼叫
linux下檔案的型別是不依賴於其字尾名的,但一般來講 o,是目標檔案,相當於windows中的.obj檔案 so 為共享庫,是shared object,用於動態連線的,和dll差不多 a為靜態庫,是好多個.o合在一起,用於靜態連線 1 動態庫的編譯 下面通過乙個例子來介紹如何生成乙個動態庫。這裡...