我是一名Android程序员,正在开发一个简单的移动应用程序(非常类似于常规信使) 我使用客户端 - 服务器架构。服务器是用Java编写的,可以在Google App Engine上运行。原生Android客户端向服务器发出HTTP请求,服务器向收件人发送GCM消息或使用JSON对象响应调用者。 SQLite RDBMS用作缓存 从头开始为每个独特的移动平台编写单独的应用程序是昂贵的。现在,当应用程序几乎准备就绪时,我开始思考如何轻松将其移植到其他移动平台:iOS和Windows Phone。如果您有创建跨平台移动应用程序的经验,请建议我开发和维护此类应用程序的最简单方法。
到目前为止,我找到了几个选项
Delphi XE | Delphi, native compilation | Delphi developers Unity3D | C#, UnityScript, Boo | Game developers
我期待j2objc,JUniversal和Appery.io(粗略地说,PhoneGap包装)。我的问题是哪些产品成熟?
特别是,
PS 即可。我拒绝使用Unity3D和Delphi XE,因为我认为它们会大大增加应用程序的大小。我拒绝使用Xamarin,因为我不是.Net开发人员。
答案 0 :(得分:1)
J2objc状态良好,谷歌强烈支持。并有一个活跃的社区致力于它。
您可以在此处找到大量文档:https://github.com/google/j2objc/wiki
J2objc生成的代码用于谷歌的几个高性能应用程序(例如Mail)。因此,该产品已准备就绪。
与所有其他项目一样,学习曲线陡峭。 J2objc还有一些示例项目,您可以使用它们来了解它的工作原理。
答案 1 :(得分:1)
如果你只想用Java开发,RoboVM可能是你最好的选择。它支持完整的JRE API,包括RetroFit的安全套接字。 iOS本机类可以与RoboVM的内存管理一起使用,因此您不必学习其他语言。
j2objc还不支持安全套接字,因此移植RetroFit需要为OkHttp创建一个特定于j2objc的HTTP处理程序。推送通知需要使用Objective-C或Swift编写,就像应用程序的UI一样。
ActiveAndroid在所有这些选项中看起来都有问题,因为它使用的是Android的SQLite API,它在很大程度上依赖于Parcel和其他Android序列化支持。
答案 2 :(得分:1)
这是我的两分钱。
Unity3D将提供最佳的多平台过渡,尽管它或多或少地针对游戏开发。如果你计划好你的代码,它将很容易移植。
Android Studio(https://developer.android.com/sdk/index.html)是针对Android开发的,但您不会从中获得太多的跨平台兼容性。
任何使用C#的东西都是.NET,所以抛出Xamarin保持jUniversal有点奇怪,但我得到它因为你习惯了java。
在Xaramin正式名单中MonoDevelop是我认为最成熟的。也是Unity使用的,尽管他们使用略微修改的GUI。
在一天结束时,每个人都会有自己的陷阱和优势。我会说,因为你向jUniversal学习,就去吧。
答案 3 :(得分:1)
我喜欢Unity3d,因为它易于部署到许多平台。但对于你的任务来说,它可能是一个太大的工具。你的项目听起来太简单了。 Unity3d是免费的(T& Cs适用)因此它吸引人,但Cordova / PhoneGap听起来更像是工作的工具。
答案 4 :(得分: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以最佳渲染方式重新显示网络应用。
在没有所有其他解决方案的开销的情况下,有许多可行的选择可以自己完成。此外,您还可以选择合并iOS和Windows的原生数据库功能,如CoreData和EntityFramework。除了数据库原生功能外,还有其他许多好处。