close

今天嘗試對share library(.so) 裡面的include的static(.a)去呼叫log
發現沒有問題

只要有定義過debug資訊,且在static library那個資料的.mk有include log的library,就可以成功呼叫log

今天意外發現(其實早該發現的)
ndk c的log是對應到sdk java的,所以除了.c檔要
#include
#  define  D(x...)  __android_log_print(ANDROID_LOG_INFO,"open_svc_decoder",x)外

在java必須要開一個窗口讓ndk將log資訊丟出來

public native String  stringFromJNI();
public static final String TAG = null; 

 static {
        System.loadLibrary("xxx");
        Log.d(TAG, "loadLibrary");
    }   


然後ndk的cpufeatures和 $(TARGET_ARCH_ABI),armeabi-v7a是分開的東西
$(TARGET_ARCH_ABI),armeabi-v7a只要看的是 Application.mk裡的APP_ABI:= armeabi-v7a 的這個定義

而cpufeatures會再要include它的程式裡面compile成一個static library

如在mk裡會有設定

LOCAL_C_INCLUDES := $(LOCAL_PATH)/ $(NDK_ROOT)/sources/cpufeatures \

LOCAL_STATIC_LIBRARIES := cpufeatures

include $(NDK_ROOT)/sources/cpufeatures/Android.mk


cpufeatures是一個獨立的library會有function去載入cpu的feature存成變數,但是這與TARGET_ARCH_ABI的判斷是不相關的



(注意: .mk的寫法要比較嚴謹,有時候位置放錯或是分開放,都會讓compilier無法順利執行,所以有時候compile時,系統顯示undefined xxx function時,有時候問題是出在.mk格式寫錯)


============2/8===================
今天在debug
因為neon跑出來的圖和c不同
明顯圖片有雜訊

應該是位置有寫錯,因為我採IBBB(GOPsize4)的架構
第一張frame效果還不錯
但是解到第三章時雜訊超大
很明顯就是有飄移的情形

所以可能要從第一章frame開始debug起
不過一開始真的是耍笨啊
我沒發現logcat有容量限制
沒發現容量早爆了,難怪ref和解後值一直對不起來

對於撈出logcat的資訊的方式
我是在sdk 的adb.exe資料夾下用cmd的window下指令

adb logcat helloneon3:D open_svc_decoder:D  *:S >>C:\trace_neon.txt


詳細範例如下

Log.d("TAG_A",method name()); 其中TAG_A依不同程式TAG替換掉,而method_name()則依不同的method name替換掉。而adb logcat改下:
adb logcat TAG_A:D TAG_B:D TAG_C:D TAG_D:D TAG_E:D *:S >> log_file
S
是 Silent的意思

更多資訊可看 http://developer.android.com/intl/de/guide/developing/tools/adb.html

------------------------4/13---------------
http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 angledark0123 的頭像
    angledark0123

    CONY的世界

    angledark0123 發表在 痞客邦 留言(0) 人氣()