撰寫程式, 不論是為了除錯, 或是了解程式運作的狀態, 需要在程式代碼中 加進一些 log.
一旦加入 log, 當然也需要一個開啟和關閉 log 的機制. 而且必須是一個方便使用的開關機制.
一般來說, 我們可能會使用 以下的方式在程式代碼中加入 log
#define MY_DEBUG
.......
#ifdef MY_DEBUG
printf("This is a log.\n");
#endif
.......
使用 MY_DEBUG 控制 log 機制的開啟和關閉.
這種做法的缺點是 加入 log 的同時也必須跟著加入 #ifdef 和 #endif. 撰寫上不方便 且程式代碼會看起來比較凌亂.
2013年8月23日 星期五
2013年8月15日 星期四
Linux PID 何時會被重複使用
2012年11月15日 星期四
skia 性能優化 - part 2
Android 在 3.0 版之前, 包括Android 2.2, 原生UI 的效能一直讓使用者有所微詞. 部分的原因在於UI 上的所有圖形, 都使用 CPU rendering. 要提高 UI
rendering 的效能, 除了改以特定硬體加速, 例如 GPU 或是 2D engine, 另外一個方法就是針對程式代碼進行優化, 包括針對效能
瓶頸部分, 改用處理器所提供更有效率的指令完成. 當然, 繪圖的加速只是一部分, 另外像是
瓶頸部分, 改用處理器所提供更有效率的指令完成. 當然, 繪圖的加速只是一部分, 另外像是
2012年10月9日 星期二
skia 性能優化
Skia是一個 Android 中的一個 open source
向量圖型庫,
在 Android 2.2 中 skia 幾乎無所不在, 提供了 draw text, draw
rectangle, draw bitmap 等等的功能. 許多 apk 的UI, 其具體實現就是用skia, 例如, launcher. 而 skia 在 Android 的原生代碼中, 提供了 skia 以及 skiaGL
(OpenGL加速的版本). 在 skia 的版本中, skia 的運算仰賴 CPU, 雖然有提供了 fixed point 以及 floating
point 兩套版本, 但筆者實際上透過 #define 調整時, 編譯上會產生錯誤. 有部分的代碼需要修改調整.(是否有其他同好有調試過這部分的代碼?)
2012年9月1日 星期六
Android 建立 surface 的過程
Android 的圖形系統是 Client-Server 架構, Server 是 SurfaceFlinger, Client 則是應用程式.
應用程式第一次執行時, Window
Management Service (WMS) 會開啟一個 session,
openSession()函式會被調用. openSession()函式在BSP的位置和程式代碼如下:
2012年8月14日 星期二
探討 Android gralloc HAL – part2
gralloc HAL有幾個比較重要的函式, 分別是 gralloc_alloc, gralloc_alloc_buffer, init_pmem_area, gralloc_free, 另外, 還有一個class :
SimpleBestFitAllocator.
這些函式的程式代碼在
2012年8月2日 星期四
探討 Android gralloc HAL – part 1
整個 Android 2.2的圖型模組, 不論是 2D, 3D應用程式運行, 只要是圖形相關的應用, 都需要配置 graphic buffer, 在 Android 中負責這工作的模組就是 gralloc HAL(gralloc 硬體抽象層).
Gralloc HAL 的程式碼在 /hardware/libhardware/modules/gralloc/Gralloc.cpp
動態連結庫 gralloc.default.so 位置在系統路徑 /system/lib/hw/
2012年8月1日 星期三
Android – screen compatibility mode
工程師的工作不外乎要 debug, 最近又遇到一個 issue.
在 WVGA(width=800,
height=480) 的平台上, 執行應用程式, 該應用程式卻 allocate(width=533, height=320)的 graphic buffer. 造成畫面內容顯示不正確.
2012年7月29日 星期日
Android 系統語系設定
最近因為要解一個 Android 平台的 issue 而接觸到了 Android 系統的語系, Android 的語系設定主要有兩個部分
系統初設(default) 的語系設定
透過 settings 改變語系設定.
系統 初設的語系設定
訂閱:
文章 (Atom)