close
第七章

一開始是介紹為什麼要有 NDK,接著介紹安裝。首先要先裝 cygwin,然後下載 NDK 的 zip,解開,再去改 PATH。

使用的方法,要先在專案目錄下新增 jni 目錄,然後新增 Android.mk、Application.mk。編譯好的檔案則是放在 libs跟 obj。

一般使用的話,都是要自己打指令,這裡介紹了一個 plug-in:Sequoyah。安裝的方法是 Help > Install new software ,從下拉的地方找到 Indigo ,再選 Mobile and Device Development ,就可以找到「本地代碼開發」(書裡是英文「Native code support」) 並安裝。
安裝好以後,可以在 Preferences > Android 裡找到地方設置 NDK 路徑,我裝的時候發現有中文了(簡體的),名稱是「本機開發」,書裡是英文「Native Development」。
使用的時候,要在左邊 Package explorer 裡的專案上按下滑鼠右鍵,選 Android tools > Add Native support。在編譯的時候,就會自動編譯你的 JNI 代碼,不需要到命令提示字元裡打指令。

javah 可以用來產生 JNI 所需要的 C 的 .h 與 .c ,這邊是在 Run > External tools > External tools configuration 裡新增一個 Program,name 填 javah,location 填 ${system_path:javah},Working directory 填 ${project_loc}, argument 設為 -verbose -jni -classpath "${project_loc}/bin/classes;${android_jar}" -d "${project_loc}/jni" ${java_type_name} (Linux下需要調整路徑的分隔符號為 ;)
設定好以後,先選好 class ,再選 Menu 上的 Run > External tools > javah 來產生。

這邊我卡關了,試不出來?後來才發現要在 Windows > Preferences 的左上打 String Substitution,然後在右邊新增 android_jar 變數,value 選到 android sdk 路徑下的 platform/android-10 (視你所使用的版本而定,書上說找最高那個就行)。設定完以後,選好 class,再選 Menu 上的 Run > External tools > javah 就可以在 jni 目錄下找到 .h 檔案 (如果 package explorer 裡沒看到,在 jni 目錄點滑鼠右鍵選 Refresh)

javap 也是依法施為,但 argument 則要填 -classpath "${project_loc}/bin/classes;${android_jar}" -p -s ${java_type_name}
執行以後,結果是出現在 console 。

接著就是介紹 JNI 的部分,這邊有提到可以使用的資料型態,字串、陣列等怎麼操作,類別成員、方法怎麼調用。這個部分蠻值得一看的,一般書上比較少介紹的這麼詳細,網路上的文章又多半只提到某個特定部分。

在 JNI 要除錯的話,可以用 Android 提供的 Log library、ndk-gdb 與 ndk-stack。Log library 在網路上可以找到不少介紹,ndk-gdb與ndk-stack 的話,都需要額外設定,這邊到時候有用來再回來看。(希望我會記得...)

第八章

這一章就開始拿 NDK 來用了。
舉的例子是一個 MoviePlayer,一個 Player 要能解 AVI 需要 library 來輔助,這裡是用 Transcode 專案裡的 avilib。所以先下載 Transcode,然後把裡面的 avilib 資料夾複製出來,接著寫 Android.mk,編譯出 static library。
接著就是寫 code,這裡的 code 很翔實,我是沒有照著做一次。但完全就是有利用到前面介紹的 javah 與 javap 來輔助。章節末了很紮實的出了作業,一個是加上縮圖,一個是加上控制,因為範例只有播放,沒有暫停、快轉...等控制。

More about Android Apps with Eclipse


arrow
arrow
    文章標籤
    jni ndk android native jar
    全站熱搜

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