Sean's Note: 3月 2014

2014年3月27日 星期四

Running C/C++ on Android with NDK

需要準備的環境

  1. Eclipse + Android SDK: 基本的 Android 開發環境
  2. Android NDK: 讓 Android 能透過 JNI 去執行 C/C++ 語言的必要套件
  3. Eclipse NDK: Eclipse 的 plugin 套件,方便管理與建立 NDK 的專案
    Work with: https://dl-ssl.google.com/android/eclipse/
    安裝好之後要設定 Android NDK 的路徑:
    Window -> Preferences -> Android -> NDK -> NDK Location:
  4. Eclipse CDT: Eclipse 的 plugin 套件,可以在 Eclipse 上管理與開發 C/C++ 專案
    Work with: http://download.eclipse.org/tools/cdt/releases/juno (For Juno)
    Work with: http://download.eclipse.org/tools/cdt/releases/kepler (For Kepler)
  5. Cygwin: 用來編譯 C/C++
    Ref: http://blog.csdn.net/javatiger427/article/details/6115693
註1: NDK(Native Development Kit)
註2: CDT(C/C++ Development Tooling)

新建一個專案


步驟可參考下列網址:
http://www.pupuliao.info/2013/05/%E5%9C%A8eclipse%E9%80%8F%E9%81%8Ejni-%E8%B7%91cc-for-android-hello_world%E7%AF%87/

文中設定 Builder 的部分可略過,只是為了存檔的同時也能重新自動建置。

而且遇到有空白字元的路徑更為麻煩,可將文中 Arguments 的部分換成如下:

--login -c "cd /cygdrive/d/sample &&  rm -r obj && /cygdrive/c/Progra~1/Android/android-ndk-r9d/ndk-build"

另外,我們也可以透過按下小鎚子的圖示來手動建置。

除錯


除錯時要將 Project -> Properties -> C/C++ Build -> Builder Settings -> Build Command:

加上 ndk-build NDK_DEBUG=1,建置時才會產生除錯所需要的檔案。

在這之後可能會遇到兩個問題:
  1. 無法在 .c 或 .cpp 檔上設置中斷點?
    Run -> Breakpoint Types  -> C/C++ Breakpoints
  2. 設完中斷點後,卻沒有停在中斷點上?
    No symbol table is loaded. Use the "file" command.
    由於 GDB debugger 需要一點時間運算,而 GDB 可能還沒載入 Library 的 Symbol,
    如果中斷點設得太早可能會被忽略,
    解決的辦法請參考:
    http://www.codeproject.com/Articles/493043/Why-your-Android-NDK-breakpoints-might-fail-and-ho

2014年3月26日 星期三

Develop C/C++ with Eclipse CDT

Setup

連結中的網址講的還蠻詳細的:
http://www3.ntu.edu.sg/home/ehchua/programming/howto/eclipsecpp_howto.html

唯一要補充的是,如果沒有加上 C:\cygwin\bin 或 C:\cygwin64\bin 到系統的環境變數中,

會引發下列錯誤:
  1. 在 include 的地方會有 "Unresolved Inclusion Error"。
  2. 用 Eclipse 的 Run 去執行時,會跑不起來。
  3. 直接跑  exe 執行檔,會跳出找不到 cygwin1.dll 的錯誤視窗。
如果想避免新加的環境變數影響到其他程式,替代的方法是

在 Window -> Preferences -> C/C++ -> Make -> New Make Projects 時指定 PATH 的路徑: 

Debug

想在 CDT 的環境下 debug,需要對  Window -> Preferences -> C/C++ ->
Debug -> Common Source Lookup 做一些設定:


2014年3月12日 星期三

[隨身硬碟] TOSHIBA Canvio Slim II 500G USB 3.0

在 Y 購物上買的 ,價格還算平易近人 NT.1899,

跑完 CrystalDiskMark 的結果令人相當滿意!

TOSHIBA Canvio Slim II USB3.0

USB2.0 的評測結果

USB3.0 的評測結果

[隨身硬碟] The Performance of Transcend StoreJet USB2.0 320G (TS320GSJ25M)

這顆硬碟應該是五六年前買的吧,現在還跑得好好的,

因為買了新的 USB 3.0 硬碟,順便測看看這顆的速度。

Transcend  TS320GSJ25M
評測結果

2014年3月5日 星期三

Toast's layout path

系統的 Toast Layout 定義檔存放在:

{SDKBASEDIR}/platforms/{API VERSION}/data/res/layout/transient_notification.xml

以 android-17 為例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="?android:attr/toastFrameBackground"> 

    <TextView
        android:id="@android:id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center_horizontal"
        android:textAppearance="@style/TextAppearance.Small"
        android:textColor="@color/bright_foreground_dark"
        android:shadowColor="#BB000000"
        android:shadowRadius="2.75"
        />

</LinearLayout>