我在考慮使用PlayN來管理Java中的「通用代碼」,並使用PlayN生成通用代碼的iOS,Android和HTML本地版本。PlayN - 管理通用代碼/本地代碼
我想我可以使用playn生成的本機代碼並鏈接到實際的平臺特定代碼(如UI)。
換句話說,
通用代碼庫在基於Java> PlayN - >本地Commond代碼利布斯 - >與原生應用
路段是針對上述工作流/管道使用扮演的合適?任何挑戰?
感謝你...
我在考慮使用PlayN來管理Java中的「通用代碼」,並使用PlayN生成通用代碼的iOS,Android和HTML本地版本。PlayN - 管理通用代碼/本地代碼
我想我可以使用playn生成的本機代碼並鏈接到實際的平臺特定代碼(如UI)。
換句話說,
通用代碼庫在基於Java> PlayN - >本地Commond代碼利布斯 - >與原生應用
路段是針對上述工作流/管道使用扮演的合適?任何挑戰?
感謝你...
首先,你必須指定由不同平臺「原生」的代碼是什麼意思。
在Android上,您的java文件專門爲dalvik編譯/準備。所以他們已經是一個時尚的「本土」,沒有工作需要在這裏完成。如果您想使用NDK獲取適用於Android的C/C++本地代碼,那麼您運氣不好。 PlayN並沒有這樣做,這是一個難題(從Java到C++)
如果你看看PlayN是如何使用的Maven模塊化佈局,那麼定義通用代碼中的工廠接口,併爲每個模塊傳遞平臺特定的實現。以這種方式支持Android特定功能並沒有什麼大不了的。
對於HTML版本,您可以使用HTML庫,但使用JNI並沒有問題,儘管真正獲得了我認爲與PlayN已經暴露的相比有限的瀏覽器的特定功能。有用的一點是文本/鍵盤輸入,儘管我建議使用triplePlay https://github.com/threerings/tripleplay UI庫,因爲他們解決了這個問題,並且它是一個活動項目。
對於iOS來說,這可能會更復雜一些,因爲iOS模塊有點麻煩,編譯後的Java類通過JVM運行時爲.net(IKVM)運行,然後使用Monotouch工具編譯整個對iOS的本地代碼的東西。請參閱https://github.com/samskivert/ikvm-monotouch
因此,對於iOS,您將無法將代碼綁定到任何形式的本機版本,並且您通過工具鏈方法訪問的內容很大程度上取決於Monotouch針對iOS提供的服務我想象中的很多),以及IKVM-Monotouch支持的內容(我想像得到PlayN工作的最低限度)。
我對Flash管道不夠熟悉,給你一個評價,雖然我認爲它很靈活。
上面的答案是假設你的應用程序實際上是一個遊戲。如果不是,並且您打算將大量標準小部件庫用於各種平臺,則應該有可能。選擇一個好的MVP框架在這裏會很好,並且根據它在不同主機環境中所做的假設,將決定整個事情會變得多麼容易。
我建議你閱讀和比較https://developers.google.com/web-toolkit/articles/mvp-architecture也許看問題,如What is your favorite GWT MVP Framework?
...雖然很多這些框架的可能是GWT具體,並沒有真正迎合了在其他平臺上被重用。