我實際上正在做這個過程。我已經在Android設備上成功安裝了Apache Felix,並運行了簡單的Java程序。我跟着你的第二個鏈接。該網頁已被打破,但我使用網絡檔案來查看它。如果上面的一個不起作用,這裏是一個link。如果你遵循這個教程,你至少會得到Felix的安裝。只需下載最新的Felix,並找到最新的Felix Shell和Felix Shell-TUI。您需要按照本教程中的描述分解所有三個瓶子。
我在Android設備/ data/osgi /下創建了一個文件夾,並將felix /目錄複製到那裏。兩個外殼罐應該進入bundle /目錄,並且felix罐可以留在bin /目錄中。然後我會在felix /創建一個腳本運行以下命令:
/system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar \
-classpath bin/felix.jar org.apache.felix.main.Main
這將啓動Felix shell。您可以鍵入命令「ps」來查看已安裝的捆綁軟件。
就這麼說,我開始使用第三方庫時遇到了問題。在安裝它們之前,您需要dex所有捆綁包。這將所有類文件轉換爲Dalvik可執行文件(dex)。問題在於某些庫不是DVM本地的。我遇到的第一個是javax.xml.validation。這是由核心Java庫提供的。那麼,Android不會運行核心Java庫。 那麼你會怎麼做?我能夠通過添加一些配置來獲得一些,但不是所有問題。我用this one替換了conf/config.properties文件。這個配置文件的重要部分是Dalvik包的定義。通常,這是將JRE軟件包導出到Felix的地方,因此可以將它們定義爲系統軟件包。由於沒有JRE包,我們需要定義Dalvik運行時和導出包。
您可能還需要更改一些第三方庫的Manifest文件。偶爾我會得到一個抱怨osgi.ee版本的庫。當發生這種情況時,我打開罐子並從Manifest中刪除要求。我會誠實地說,我不知道這是否是正確的做法,但它解決了這個問題。這應該讓你深入兔子洞。我仍然遇到第三方庫在與Felix進行DEX之後與Felix很好地玩的問題。特別解析庫,如Apache Blueprint和Jackson。我將在本週末嘗試Knopflerfish,看看它是否是一個更流暢的過程。
你的回答帶來了問題。但對我來說這不是可行的解決方案。我想要部署的軟件包含數百個軟件包,需要數週的時間才能使其全部使用此方法。沒有考慮到如果我重新構建捆綁包,我必須重新開始。無論如何,我感謝你的答案。 –