2

我是一名 Android 程序员,正在开发一个简单的移动应用程序(非常类似于普通的 Messenger)。
我使用客户端-服务器架构。服务器是用 Java 编写的,并在 Google App Engine 上运行。原生 Android 客户端向服务器发出 HTTP 请求,服务器向收件人发送 GCM 消息或以 JSON 对象响应调用者。有用作缓存的 SQLite RDBMS。
从头开始为每个独特的移动平台编写一个单独的应用程序是昂贵的。而现在,当应用程序几乎准备就绪时,我开始思考如何轻松地将其移植到其他移动平台:iOS 和 Windows Phone。如果您在创建跨平台移动应用程序方面有任何经验,请告诉我开发和维护此类应用程序的最简单方法

到目前为止,我已经找到了几个选择
跨平台

德尔福 XE | Delphi,本机编译 | 德尔福开发人员
Unity3D | C#, UnityScript, 嘘 | 游戏开发商

我着眼于j2objcJUniversalAppery.io(粗略地说,PhoneGap包装器)。我的问题是这些产品中哪些是成熟的?

尤其,

  • 我可以同时使用RetroFitActiveAndroid吗?
  • 我可以使用这些产品接收推送通知(GCM / APN / MPNS)吗?

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

4

5 回答 5

1

I've used PhoneGap/Cordova, Xamarin and Unity 3D as mentioned above. I've also used hybrid solutions which I found the most effective. With hybrid apps you can reduce significant overhead with external libraries and engine!

Depending on what you want to do you could take your app and have it use a common full screen WebView widget and port it over to iOS's UIWebView and Windows' Phones' IE widget. Once you get the initial framework setup for just the webview widgets you can plug the HTML,JS,CSS data and inject it into your app. That way you can keep the same main code base and modify the webview source simply. This will replicate the behavior of cordova/phonegap/xamarin and will save you on overhead.

I've also used the Chromium project from Google for iOS/Android and use webRTC to redisplay the web apps with optimum rendering.

There are many viable options for doing it yourself without the overhead from all the other solutions. Plus you get the option to incorporate native database features such as CoreData and EntityFramework for iOS and Windows respectively. Along with database native features are countless other benefits.

于 2015-04-17T15:34:31.887 回答
1

好吧,这是我的两分钱。

Unity3D 将提供最好的多平台过渡,尽管它或多或少是针对游戏开发的。如果您将代码规划得足够好,它将非常容易移植。

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

使用 C# 的任何东西都是 .NET,所以将 Xamarin 排除在外,保留 jUniversal 有点奇怪,但我明白了,因为你习惯了 java。

在 Xaramin 正式名单中,MonoDevelop 是我认为最成熟的。并且也是 Unity 使用的,尽管它们使用稍微修改的 GUI。

在一天结束时,每个人都会有自己的陷阱和优势。我想说,既然你向 jUniversal 学习,那就顺其自然吧。

于 2015-04-17T14:28:06.413 回答
1

我喜欢 Unity3d,因为它易于部署到许多平台。但是对于您的任务,它可能是一个太大的工具。你的项目听起来太简单了。Unity3d 是免费的(适用条款和条件),因此它很有吸引力,但 Cordova/PhoneGap 听起来更像是完成这项工作的工具。

于 2015-04-17T14:33:57.233 回答
1

J2objc 状态很好,得到了 google 的大力支持。并有一个活跃的社区致力于此。

你可以在这里找到很多文档:https ://github.com/google/j2objc/wiki

J2objc 生成的代码用于google 的几个高性能应用程序(例如Mail)。因此,该产品绝对可以生产。

与所有其他项目一样,学习曲线也很陡峭。J2objc 也有示例项目,您可以使用它来了解它是如何工作的。

于 2015-04-17T13:41:02.933 回答
1

如果你只想用 Java 开发,RoboVM 可能是你最好的选择。它支持完整的 JRE API,包括 RetroFit 的安全套接字。iOS 原生类可以被封装以与 RoboVM 的内存管理一起使用,因此您不必学习另一种语言。

j2objc 还不支持安全套接字,因此移植 RetroFit 需要为 OkHttp 创建一个 j2objc 特定的 HTTP 处理程序。推送通知需要用 Objective-C 或 Swift 编写,应用程序的 UI 也是如此。

ActiveAndroid 看起来与所有这些选项都有问题,因为它使用 Android 的 SQLite API,该 API 严重依赖 Parcels 和其他 Android 序列化支持。

于 2015-04-17T14:16:06.933 回答