⑴ 如何定位android NDK開發中遇到的錯誤
只要你細心的查看,再配合Google 提供的工具,完全可以快速地准確定位出錯的代碼位置,這個工作我們稱之為「符號化」。需要注意的是,如果要對NDK錯誤進行符號化的工作,需要保留編譯過程中產生的包含符號表的so文件,這些文件一般保存在$PROJECT_PATH/obj/local/目錄下。
第一種方法:ndk-stack
這個命令行工具包含在NDK工具的安裝目錄,和ndk-build及其他常用的一些NDK命令放在一起,比如在我的電腦上,其位置是/android-ndk-r9d/ndk-stack。根據Google官方文檔,NDK從r6版本開始提供ndk-stack命令,如果你用的之前的版本,建議還是盡快升級至最新的版本。使用ndk –stack命令也有兩種方式
實時分析日誌
在運行程序的同時,使用adb獲取logcat日誌,並通過管道符輸出給ndk-stack,同時需要指定包含符號表的so文件位置;如果你的程序包含了多種CPU架構,在這里需求根據錯誤發生時的手機CPU類型,選擇不同的CPU架構目錄,如:
當崩潰發生時,會得到如下的信息:
⑵ 如何在Ubuntu下搭建Android NDK開發環境
1 搭建Android SDK開發環境
2 下載NDK開發包
3打開官網: 下載NDK 開發包,當前最新版本是r7b
下載解壓到 ~/bin 目錄下,
3 配置NDK環境參數
打開 ~/.bashrc文件:
⑶ 如何定位Android NDK開發中遇到的錯誤
1,首先,來看看在hello-jni程序的代碼中做了什麼(有關如何創建或導入工程,此處略),下面代碼中:在JNI_OnLoad()的函數中,即so載入時,調用willCrash()函數,而在willCrash()函數中, std::string的這種賦值方法會產生一個空指針錯誤。這樣,在hello-jni程序載入時就會閃退。記一下這兩個行數:在61行調用了willCrash()函數;在69行發生了崩潰。
⑷ android ndk build BUILD_EXECUTABLE 為什麼是這個application/x-sharedlib
android編譯系統的makefile文件Android.mk寫法如下(1)Android.mk文件首先需要指定LOCAL_PATH變數,用於查找源文件。由於一般情況下Android.mk和需要編譯的源文件在同一目錄下,所以定義成如下形式:LOCAL_PATH:=$(call my-dir)上面的語句的意思是將LOCAL_PATH變數定義成本文件所在目錄路徑。(2)Android.mk中可以定義多個編譯模塊,每個編譯模塊都是以include $(CLEAR_VARS)開始以include $(BUILD_XXX)結束。include $(CLEAR_VARS)CLEAR_VARS由編譯系統提供,指定讓GNU MAKEFILE為你清除除LOCAL_PATH以外的所有LOCAL_XXX變數,如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。include $(BUILD_STATIC_LIBRARY)表示編譯成靜態庫include $(BUILD_SHARED_LIBRARY)表示編譯成動態庫。include $(BUILD_EXECUTABLE)表示編譯成可執行程序⑸ ndk-build怎麼在命令行里寫
打開cmd,進入androidndkr9所在的文件夾,執行命令:ndk-build-C[path]就可以了,path是你的工程路徑。這樣就會生成.so文件的
⑹ ndk-build不使用jni文件夾
是。ndk-build文件是AndroidNDKr4中引入的一個shell腳本,ndk-build不使用jni文件夾,位置就在NDK目錄的最上層,其用途是調用正確的NDK構建腳本。
⑺ 如何在Android NDK中調用第三方庫文件
如何在Android NDK中調用第三方庫文件(.so) 1.在project/jni目錄下創建prebuilt子目錄(目錄名可自定義).
2.將第三方.so放到prebuilt中,並創建Android.mk, 內容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_SRC_FILES := libxxx.so
include $(PREBUILT_SHARED_LIBRARY)
3.在project/jni/Android.mk中加入
LOCAL_SHARED_LIBRARIES := xxx
4.在project/jni/android.mk的最後加入
include $(LOCAL_PATH)/prebuilt/Android.mk
5.運行cygwin, 到project目錄下, 運行$NDK/ndk-build
⑻ 如何ndk-build時只需要armeabi
打開cmd,進入androidndkr9所在的文件夾,執行命令:ndk-build-C[path]就可以了,path是你的工程路徑。這樣就會生成.so文件的