2015-04-17 136 views
2

我是一名开发简单移动应用程序的Android程序员(非常类似于常规信使)。
我使用客户端 - 服务器体系结构。服务器使用Java编写,并在Google App Engine上运行。本机Android客户端向服务器发送HTTP请求,服务器向收信人发送GCM消息或向调用者发送JSON对象响应。有SQLite RDBMS用作缓存。
为每个独特的移动平台从头开始编写单独的应用程序非常昂贵。而现在,当应用程序即将准备好时,我开始思考如何轻松将它移植到其他移动平台:iOS和Windows Phone。如果您有任何创建跨平台移动应用程序的经验请指教我开发和维护此类应用程序的最简单方法开发跨平台移动应用程序需要使用什么产品?

我已经找到了几个选项,到目前为止
cross-platform

 
Delphi XE   | Delphi, native compilation | Delphi developers 
Unity3D   | C#, UnityScript, Boo  | Game developers 

我朝j2objcJUniversal,并Appery.io(大致说,PhoneGap包装)。我的问题是以下哪些产品是成熟的?

特别是

  • 我可以使用RetroFitActiveAndroid其中一人在一起吗?
  • 我可以使用任何此类产品接收推送通知(GCM/APN/MPNS)吗?

ps。我拒绝使用Unity3DDelphi XE,因为我认为它们大大增加了应用程序的大小。我拒绝使用Xamarin,因为我不是.Net开发人员。

回答

1

J2objc处于一个很好的状态,它强烈支持谷歌。并且有一个活跃的社区正在努力。

你可以在这里找到大量的文档资料:https://github.com/google/j2objc/wiki

通过J2objc产生的代码中,谷歌的几个高性能应用(例如,邮件)使用。所以这个产品已经准备好了。

与所有其他项目一样,学习曲线陡峭。 J2objc也有示例项目,可以用来了解它的工作原理。

+0

好吧,我会试试! – naXa

+0

我通常给自己一些时间来确认或驳斥答案。尽管如此,我已经改变了问题的措辞以适合你的答案=)所以它现在是接受主要候选人。 – naXa

1

如果你只想用Java开发,RoboVM可能是你最好的选择。它支持完整的JRE API,包括用于RetroFit的安全套接字。 iOS本地类可以被打包以与RoboVM的内存管理一起工作,因此您不必学习其他语言。

j2objc目前还不支持安全套接字,所以移植RetroFit需要为OkHttp创建一个j2objc特定的HTTP处理程序。推送通知需要用Objective-C或Swift编写,应用程序的用户界面也一样。

ActiveAndroid在所有这些选项中都会出现问题,因为它使用Android的SQLite API,它严重依赖Parcels和其他Android序列化支持。

1

那么这里是我的两美分。

Unity3D将提供最好的多平台过渡,尽管它的目的或多或少在于游戏开发。如果你计划好你的代码,它将很容易移植。

Android Studio(https://developer.android.com/sdk/index.html)是Android开发的产品,但您不会从中获得太多的跨平台兼容性。

使用C#的任何东西都是.NET,所以抛出Xamarin出来保持jUniversal是有点奇怪,但我明白,因为你习惯了java。

Xaramin的正式名单MonoDevelop是我认为最成熟的。也是Unity使用的,虽然他们使用稍微修改的GUI。

在一天结束时,每个人都有自己的陷阱和优势。自从你向jUniversal学习之后,我会说。

1

我喜欢Unity3d,因为易于部署到很多平台。但是对于你的任务来说,它可能是一个太大的工具。你的项目听起来太简单了。 Unity3d是免费的(T & Cs适用),所以它吸引人,但科尔多瓦/ PhoneGap听起来更像是工作的工具。

+0

正是我在想什么!谢谢。 – naXa

1

我已经使用PhoneGap/Cordova,Xamarin和Unity 3D,如上所述。我也使用了我发现最有效的混合解决方案。借助混合应用程序,您可以通过外部库和引擎减少大量开销!

根据你想要做什么,你可以把你的应用程序,并使用一个共同的全屏WebView小部件,并将其移植到iOS的UIWebView和Windows'电话'IE小部件。一旦获得了webview小部件的初始框架设置,您就可以插入HTML,JS,CSS数据并将其注入到您的应用程序中。这样,您可以保持相同的主代码库并简单地修改webview源代码。这将复制cordova/phonegap/xamarin的行为,并将节省您的开销。

我也使用Google for iOS/Android的Chromium项目,并使用webRTC以最佳呈现重新显示Web应用程序。

没有所有其他解决方案的开销,您可以自行完成许多可行的选项。此外,您还可以选择分别为iOS和Windows整合本地数据库功能,例如CoreData和EntityFramework。随着数据库本地功能的无数其他好处。

相关问题