首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PlayN -管理通用代码/本机代码

PlayN -管理通用代码/本机代码
EN

Stack Overflow用户
提问于 2012-05-07 08:04:28
回答 1查看 175关注 0票数 2

我正在考虑使用PlayN来管理Java语言中的“公共代码”,并使用PlayN来生成公共代码的iOS、Android和HTML本机版本。

我想我可以使用playn生成的本机代码,并链接到实际的特定于平台的代码(例如UI)。

换句话说,

Java中的通用代码库-> PlayN ->本地通用代码库->与本地应用程序的链接

在上述工作流程/管道中使用Play是否合适?有什么挑战吗?

谢谢..。

EN

回答 1

Stack Overflow用户

发布于 2013-01-18 00:13:23

首先,你必须为不同的平台指定你所说的“原生”代码是什么意思。

在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模块有点复杂,编译后的.net类通过JVM运行时(IKVM)运行,然后使用Monotouch工具将整个代码编译成iOS的本机代码。请参阅https://github.com/samskivert/ikvm-monotouch

所以对于iOS来说,你不能将代码绑定到任何形式的本机版本,并且你通过工具链方法可以访问的内容在很大程度上取决于Monotouch为iOS提供的服务(我想有很多),以及IKVM Monotouch支持的内容(我想这是让PlayN正常工作的最低要求)。

我对Flash管道还不够熟悉,无法给你一个评价,尽管我认为它相当灵活。

上面的答案是假设你的应用程序实际上是一款游戏。如果不是这样,并且您打算在mass上的各种平台上使用标准小部件库,那么它应该是可能的。在这里选择一个好的MVP框架会很好,取决于它在不同主机环境上所做的假设,这将决定整个事情有多容易。

我推荐阅读和比较https://developers.google.com/web-toolkit/articles/mvp-architecture,也许可以看看像What is your favorite GWT MVP Framework?这样的问题

...although许多框架可能是GWT特定的,并没有真正迎合在其他平台上重用的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10475340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档