robot
最新文章(10)
MadButterfly 和 Javascript 合體的威力
Adapt C code for Javascript
OpenVG for Linux/FreeBSD with X
回收 Linux cached memory
公告: 更換 domain name
關於 GCC nested function
GLUT 作為 Embedded System 的 UI 平台
別被 kernel 嚇到了
SVG 加 Gecko 完全攻略
在 OSDC 展示的 Plurk client
首頁
新編
最新留言
Entries RSS
重要關鍵字(10)
coding (120)
Python (93)
FreeBSD (71)
WEB (61)
URL (48)
hardware (46)
雜記 (45)
javascript (36)
Linux (31)
blog (30)
所有關鍵字
新增 URL
Android Native code 不用 NDK
by thinker
2 Columns
關鍵字:
Android
自從 Google 發佈 $Android$ NDK,為更高計算效能的要求,灑下第一道曙光。依一般的作法,我們只需 download NDK,安裝之後,使用 NDK 的 build system 一切就沒問題了。但是,小弟在 $FreeBSD$ 上工作,不想另外準備 toolchain ,也不想使用 NDK 的 build system 。於是,花了些時間$研究$,如何在不使用 NDK 的情況下,直接把編好的 shared object 放到 apk 裡。 apk 對 Native code 有幾個要求。 * 檔名必需為 libxxx.so * 檔案會被壓縮到 lib/xxxx/ 目錄下 * xxxx 是 architecture 名稱,如 armeabi * 安裝時, device 會依據 architecture 到對映目錄下,使用對映的檔案 * Native code 使 JNI 的方式使用 * Function name 為 Java_to_branda_foo_boo() * 以 Java 開頭,to_branda_foo_boo 對應到 class to.branda.foo 的 method boo * class 或 method name 裡有 "_" 符號,轉成 "_1" * inner class name 前面加上 "_00024" * to.branda.foo 裡的 inner class bar 裡的 method take_me 對映到 function * Java_to_branda_foo_00024bar_take_1me() 如果你是用 $Android$ SDK 編你的 Java code, 請將 native code 放在 * libs/xxxx/ 目錄下,"xxxx" 是 architecture 名稱; 如 armeabi。 ant 在包裝 Java App 時,會自動將 "libs" 目錄下的東西,壓到 apk 的 lib/ 目錄下。(ant 是 $Android$ SDK 所使用的 build system,如果您是使用 Eclipse 環境, Eclipse 將自行呼叫 ant) 以上方式,是針對你已經有 toolchain ,可能也已裝了 $Android$ source tree ,編好完整的 $Android$ 。這時,你可能不想再裝 NDK 。另外,你可能拿到別人編好的 binary ,想直接放進來使用。以上情況,你都可以將檔案放到適當的位置,由 ant 或 aapt 幫忙包裝到你的 apk 裡。
最後更新時間: 2009-11-18 16:52:36 CST |
引用
查詢:
COMMENTS: