【问题标题】:What product to use in order to develop a cross-platform mobile application?使用什么产品来开发跨平台的移动应用程序?
【发布时间】:2015-04-17 11:51:35
【问题描述】:

我是一名 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) 吗?

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

【问题讨论】:

    标签: mobile push-notification cross-platform j2objc


    【解决方案1】:

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

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

    J2objc 生成的代码用于谷歌的几个高性能应用程序(例如邮件)。因此,该产品绝对可以投入生产。

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

    【讨论】:

    • 我通常会给自己一些时间来确认或反驳答案。尽管如此,我已经更改了问题的措辞以适合您的答案 =) 所以它是现在接受的主要候选人。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 正是我的想法!谢谢。
      【解决方案4】:

      如上所述,我使用过 PhoneGap/Cordova、Xamarin 和 Unity 3D。我还使用了我认为最有效的混合解决方案。借助混合应用,您可以显着减少使用外部库和引擎的开销!

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

      我还使用了适用于 iOS/Android 的 Google 的 Chromium 项目,并使用 webRTC 重新显示具有最佳渲染效果的网络应用程序。

      有许多可行的选择可以自己做,而不会产生所有其他解决方案的开销。此外,您还可以选择合并原生数据库功能,例如分别适用于 iOS 和 Windows 的 CoreData 和 EntityFramework。除了数据库原生功能之外,还有无数其他好处。

      【讨论】:

        【解决方案5】:

        这是我的两分钱。

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

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

        使用 C# 的任何东西都是 .NET,因此将 Xamarin 扔出去保留 jUniversal 有点奇怪,但我明白了,因为您习惯了 java。

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

        归根结底,每个人都会有自己的缺陷和优势。我想说,既然你向 jUniversal 学习,那就去吧。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-21
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 2019-07-31
          • 1970-01-01
          • 2012-05-12
          • 1970-01-01
          相关资源
          最近更新 更多