在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 調(diào)試
安裝 NDK
application.mk
調(diào)試
Android.mk 文件
Hello JNI 示例
概述
Box2D 的 Android NDK 實現(xiàn)
TwoLibs 示例

調(diào)試

開發(fā)應(yīng)用一個關(guān)鍵的步驟是調(diào)試,對於 NDK 的 C 代碼調(diào)試有很多種方法,

  • 對於和 Android 平臺相關(guān)性不大的部分代碼,可以單獨(dú)創(chuàng)建一個 C/C++項目,編寫測試代碼,測試完成後,再編譯成 NDK 動態(tài)庫或靜態(tài)庫模塊。
  • 使用 NDK-GDB,NDK-GDB 的命令行調(diào)試方法和 GDB 類似,網(wǎng)路有很多關(guān)於 GDB 的教程
  • 使用 Eclipse+CDT+GDB 調(diào)試 android NDK 程序 實時調(diào)試,不過這種方法設(shè)置起來不是十分方便,調(diào)試起來需要在 GDB 和 Eclipse 之間來回切換,適合於有經(jīng)驗的程序員。
  • 這裡介紹一個開發(fā)嵌入式系統(tǒng)調(diào)試的「終極工具:-)」-printf. 開發(fā)嵌入式系統(tǒng)調(diào)試常用的也是最簡單的方法,是使用 printf 列印調(diào)試信息。

修改一下 two-lib 的例子 ,使用 first.c 中的 first 函數(shù)實現(xiàn)一個加法計算器

http://wiki.jikexueyuan.com/project/android-ndk-development-tutorial/images/7.1.jpg" alt="picture7.1" />

這裡我們想在調(diào)用 first(int x,int y) 顯示出傳入的 x ,y 值。Android NDK 中提供了一個 Log 庫,其頭文件為 android/log.h ,可以提供 Androd Java 代碼中的 Log 功能,也是可以在 LogCat 中列印信息。

具體方法如下:

1.修改 first.c ,添加合適的列印語句

    #include "first.h"
    #include <android/log.h>

    int  first(int  x, int  y)
    {
     __android_log_print(ANDROID_LOG_INFO, "MYPROG", "x = %d, y =%d", x,y);
     return x + y;
    }

2.修改 android.mk 文件,添加需要鏈接的 Log 庫

    LOCAL_PATH:= $(call my-dir)

    # first lib, which will be built statically
    #
    include $(CLEAR_VARS)

    LOCAL_MODULE:= libtwolib-first
    LOCAL_SRC_FILES := first.c

    include $(BUILD_STATIC_LIBRARY)

    # second lib, which will depend on and include the first one
    #
    include $(CLEAR_VARS)

    LOCAL_MODULE:= libtwolib-second
    LOCAL_SRC_FILES := second.c
    LOCAL_LDLIBS := -llog
    LOCAL_STATIC_LIBRARIES := libtwolib-first

    include $(BUILD_SHARED_LIBRARY)

然後就可以編譯 Native C 代碼,運(yùn)行這個例子,可以在 LogCat 看到列印的信息:

http://wiki.jikexueyuan.com/project/android-ndk-development-tutorial/images/7.2.jpg" alt="picture7.2" />

本例下載