今天嘗試對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
是 Silent的意思
S
更多資訊可看 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/
- Jan 22 Sat 2011 23:03
android ndk 筆記
close
全站熱搜
留言列表
發表留言