2010-11-08 80 views
3

我們希望將一個龐大複雜的本地程序遷移到Android系統,並將其作爲後臺服務接受Java程序使用JNI和IPC一起發送的命令。但是,Android NDK狀態的關鍵字如下:只能在Android上運行的本地代碼作爲獨立應用程序

請注意,NDK不支持您開發純本機應用程序。 Android的主運行庫仍然是Dalvik虛擬機。

這是否意味着我們無法在Android上運行獨立的純本機應用程序作爲後臺服務?本機代碼只能以通過JNI加載到虛擬機的庫的形式存在?

回答

4

NDK本身僅用於創建庫,但如果您進行一些網絡搜索,您會發現至少有兩套包裝腳本或指令用於(ab)使用其工具鏈將獨立可執行文件鏈接到android的仿生libc(你不會從非Android手臂工具鏈中獲得的東西)。

谷歌人不鼓勵人們這樣做。不幸的是,他們對android的看法僅包括Java應用程序,並且支持可選的本地庫 - 它不包含任何「穩定」的安裝或啓動本機可執行文件的方式,因爲它們警告您今天可能使用的方法可能無法繼續在新版本中運行。這實在太糟糕了,因爲它意味着放棄了該設備的許多通用計算機潛力。

+3

那麼,使用當前的NDK,它也可以構建「純本機」應用程序,儘管這僅僅意味着*你的代碼只是本地的(不需要Java包裝器),系統將提供Java包裝器(NativeActivity)。您仍將在虛擬機內運行。 – tml 2011-11-09 14:55:35

0

嗯,可以這樣做。但說實話我從來沒有嘗試過使用NDK,但我已經設法使用android源代碼提供的工具鏈創建本地應用程序。

你的手機(開始談論手機)應該紮根。

+1

對於獨立的本地應用程序來說,啓動手機並不是必需的,但它確實爲設備上可以存儲可執行文件的位置(許多顯而易見的選項被掛載noexec)打開了可能性。 – 2010-11-08 06:09:23

相關問題