iOS / Android 跨平台开发 [关闭]
Posted
技术标签:
【中文标题】iOS / Android 跨平台开发 [关闭]【英文标题】:iOS / Android cross platform development [closed] 【发布时间】:2011-09-04 11:52:41 【问题描述】:我用 Java 开发 android 应用程序已经有一段时间了,并且开始掌握它。但是,如果我想从 ios 版本开始,我需要从头开始编写所有代码 - 这是不可取的。
我想知道有哪些跨平台解决方案可用,以及它们在实践中的效果如何。我一直在考虑 Web 应用程序 - 可能使用 jQuery Mobile 或 Titanium,或 Adobe Flash/Flex/Air。我还没有 Mac,我可能不得不投资。
所以我的问题:
有哪些适用于 iOS/Android(和/或其他设备)的跨平台开发环境?
您对这些工具有何体验? (这是我非常想知道的)
【问题讨论】:
Alister,你肯定不是第一个提出这种问题的人,也不是第一个想要答案的人! :) 不要忘记 PhoneGap,我听到的评价褒贬不一,还有 Red Foundry,它更千篇一律但看起来不错——还没有跨平台。 您也可以使用 PhoneGap。我已经使用了它并建议您继续使用它。有一个规定可以使用在 Android 中的 PhoneGap 上开发的应用程序生成一个 exe 文件(iOS 的 IPA)。 我想对这个问题进行更新,因为现在是 2016 年末,跨平台工具的格局已经改变。我想说这取决于您选择的编程语言以及您的团队在哪里拥有最多的 xp: 1. javascript:Phonegap 在移动设备上的性能很差,因此建议使用带有本机组件的工具,但建议使用 JS 作为应用程序逻辑。选项是 V-Play (v-play.net/apps) 或 React (reactnative.com)。 2. C#:Xamarin 是你的朋友。 3. C++:使用像 Qt 这样的 C++ 框架 (qt.io) 免责声明:我是基于 Qt 的 V-Play 背后的人之一。 答案:Flutter,它是 Google 新的移动 UI 框架,用于在创纪录的时间内在 iOS 和 Android 上制作原生界面。 还有一个很有前途的活跃haxe.org项目。 【参考方案1】:免责声明:我在一家名为 Particle Code 的公司工作,该公司制作了一个跨平台框架。这个领域有很多公司。新的似乎每周都会涌现。好消息:您有很多选择。
这些框架采用不同的方法,其中许多从根本上是为了解决不同的问题而设计的。有些专注于游戏,有些专注于应用程序。我会问以下问题:
你想写什么?企业应用、个人生产力应用、益智游戏、第一人称射击?
你喜欢什么样的开发环境? IDE 还是纯文本编辑器?
你对编程语言有强烈的感情吗?在我熟悉的框架中,您可以选择 ActionScript、C++、C#、Java、Lua 和 Ruby。
我的公司更多地涉足游戏领域,所以我没有像 Titanium、PhoneGap 和 Sencha 那样玩过 JavaScript+CSS 框架。但我可以告诉你一些面向游戏的框架。游戏和富互联网应用程序是跨平台框架可以大放异彩的领域,因为这些应用程序往往更重视视觉上的独特性,而不是与原生 UI 的融合。以下是一些需要寻找的框架:
Unity www.unity3d.com 是一个 3D 游戏引擎。它真的不同于我工作过的任何其他开发环境。您使用 3D 模型构建场景,并通过将脚本附加到对象来定义行为。您可以使用 JavaScript、C# 或 Boo 编写脚本。如果您想编写可在 iOS、Android、Windows、OS X 或控制台上运行的 3D 物理游戏,这可能是适合您的工具。您还可以使用 3D 资源编写 2D 游戏——独立游戏Max and the Magic Marker 就是一个很好的例子,这是一个用 Unity 编写的基于 2D 物理的横向卷轴。如果您不知道,我建议您检查一下(尤其是如果您家中有孩子)。 Max 适用于 PC、Wii、iOS 和 Windows Phone 7(尽管后者是一个端口,因为 Unity 不支持 WinPhone)。 Unity 附带了一些包含 3D 资源和纹理的示例游戏,这确实有助于快速应对可能非常复杂的环境。
Corona www.anscamobile.com/corona 是一个使用 Lua 脚本语言并支持 iOS 和 Android 的 2D 游戏引擎。 Corona 的卖点是能够用几行代码非常快速地编写基于物理的游戏,iOS 应用商店中大量基于 Corona 的游戏就是其成功的证明。环境很简陋,会吸引一些人。它带有一个模拟器和调试器。您添加了您选择的文本编辑器,并且您拥有了一个开发环境。基本 SDK 不包含任何 UI 组件,例如按钮或列表框,但订阅者可以使用 CoronaUI 插件。
Particle SDK www.particlecode.com 是一个更通用的跨平台解决方案,具有游戏背景。您可以使用 MVC 应用程序模型在 Java 或 ActionScript 中编写。它包括一个基于 Eclipse 的 IDE 和一个所见即所得的 UI 编辑器。我们目前支持为 Android、iOS、webOS 和 Windows Phone 7 设备构建。您还可以为 Web 输出 Flash 或 html5。该框架最初是为在线多人社交游戏开发的,例如扑克和西洋双陆棋,适用于逻辑复杂的二维游戏和应用程序。该框架支持 2D 图形并包含 2D 物理引擎。
注意:
今天我们宣布 Particle Code 已被 Titanium 跨平台框架的制造商 Appcelerator 收购。
...
自 2012 年 1 月 1 日起,[Particle Code] 将不再正式支持 [Particle SDK] 平台。
Source
Airplay SDK www.madewithmarmalade.com 是一个 C++ 框架,可让您在 Visual Studio 或 Xcode 中进行开发。它支持 2D 和 3D 图形。 Airplay 以 iOS、Android、Bada、Symbian、webOS 和 Windows Mobile 6 为目标平台。它们还有一个附加组件,用于为 PSP 构建 AirPlay 应用程序。我的 C++ 很生锈,我玩的不多,但看起来很酷。就学习曲线而言,我想说 Unity 的学习曲线(对我而言)最陡峭,Corona 是最简单的,而 Particle 和 Airplay 介于两者之间。
另一个有趣的点是框架如何处理不同的外形尺寸。 Corona 支持动态缩放,这是 Flash 开发人员所熟悉的。这非常易于使用,但意味着当您从 iPhone 等 4:3 屏幕切换到新的 qHD Android 设备等 16:9 屏幕时,最终会浪费屏幕空间。 Particle SDK 的 UI 编辑器让您可以设计灵活的可缩放布局,还可以让您针对各个屏幕尺寸调整布局。这需要更多时间,但可以让您的应用看起来是为每个屏幕定制的。
当然,适合您的方法取决于您的个人品味和工作风格以及您的目标 - 所以我建议您下载其中一些工具并试一试。所有这些工具都可以免费试用。
另外,如果我可以发布一个公共服务公告——这些工具中的大多数都在积极开发中。如果您找到喜欢的框架,请务必发送反馈,让他们知道您喜欢什么、不喜欢什么以及您希望看到的功能。您有真正的机会影响这些工具的下一个版本。
希望这会有所帮助。
【讨论】:
我在考虑更多的企业开发,但您可能启发我研究其中一个 SDK 以获得乐趣。 每个框架的链接都会很有用 更新:Particle Code 被 Titanium 的制造商 Appcelerator 收购,因此 Particle SDK 的命运不确定。 Airplay 莫名其妙地改名为“Marmalade”。【参考方案2】:MonoTouch 和 MonoDroid,但现在 Attachmate 的那部分会发生什么,谁也说不准。当然,即使使用单声道解决方案,您仍在创建非跨平台视图,但其想法是重用业务逻辑。
关注http://www.xamarin.com/,看看他们的想法会很有趣。
【讨论】:
【参考方案3】:我在 PhoneGap+jQuery Mobile 中制作非常简单的东西的经验很好。我能够在 iOS 上快速完成。但是,如果不进行一些更改,它就无法在我的 Android 手机上运行。该项目是一个非常简单的应用程序,用于拍照并将其发布到网站。归根结底,与真正的原生应用相比,它感觉“笨拙”。
我不相信会有简单的跨平台开发。我认为浏览器与您将获得的一样接近。通过选择像 PhoneGap 这样的东西,我认为你只是在用一组痛点换一组不同的痛点。
【讨论】:
【参考方案4】:如果您不想使用成熟的框架进行跨平台开发,可以选择 C++。 iOS 完全支持通过 Objective-C++ 将 C++ 用于您的应用程序逻辑。我不知道 Android 通过 NDK 对 C++ 的支持是否适合在 C++ 中执行您的业务逻辑,而不仅仅是一些性能关键代码 sn-ps,但如果该用例得到很好的支持,您可以给它一个试试看。
这种方法当然只有在您的应用程序逻辑构成项目的最大部分时才有意义,因为必须为每个平台单独编写用户界面。
事实上,C++ 是最广泛支持的单一编程语言(C 除外),因此是大多数大型跨平台应用程序的核心语言。
【讨论】:
顺便说一句,Android 实际上似乎直接支持仅用 C++ 编写的活动:developer.android.com/reference/android/app/NativeActivity.html 有一个警告 - NativeActivity 没有 Java 访问权限(因此没有第 3 方库集成或 SDK 访问权限)。使其不适合多种用途。【参考方案5】:虽然我刚刚开始关注这个开发领域,但我认为这归结为一个基本的区别:一些工具保留原始代码,而一些移植到本机......
例如,PhoneGap 只保留您编写的 HTML/CSS/JS 代码,并将其包装在足够的 iOS 代码中以符合应用程序的条件,而 Appcelerator 为您提供 XCode 项目...所以如果您不熟悉使用 iOS,那么与 PhoneGap 相比,这并不会真正为您带来任何好处,但如果您确实了解一点,这可能会让您在更大的编码之后有更多的能力来调整本机版本努力。
我自己没有使用过 appcelerator,但几周前参与了一个项目,我们的一名团队成员使用它在大约 24 小时内制作了一个完整的 iPad 应用程序。
是的,要真正提交给苹果,你必须有一个 mac,但如果这不是你的主要工作平台,你可以便宜。
【讨论】:
【参考方案6】:Cappuccino 或PhoneGap。
有时虽然试图找到捷径并不能节省您的时间或为您提供类似的最终产品。
【讨论】:
【参考方案7】:还有MoSync Mobile SDK
GPL 和商业许可。他们的方法有一个很好的概述here。
【讨论】:
【参考方案8】:如果您曾经使用过 LUA,不妨试试 Corona SDK 可以创建在 IOS 和 Android 上运行的应用
https://coronalabs.com/
我已经下载了它并弄乱了一些,我发现 LUA 是一种非常容易学习的脚本语言,没有通常的脚本语言的麻烦/限制......
【讨论】:
【参考方案9】:还有 BatteryTech,我们在过去 18 个月中一直在使用它,并从中发布了几款游戏。 http://www.batterypoweredgames.com/batterytech
所有 C++、Android 和 iOS 支持,所有用户获得完整源代码。新的 v2 包含 lua 绑定。
【讨论】:
截至 2012 年 5 月 30 日:5 名或更少开发人员的许可费用为 200 美元。 5 个以上 800 美元。不能用于开源项目。以上是关于iOS / Android 跨平台开发 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
跪求 DES跨(C# Android IOS)三个平台通用的加解密方法
C++实现,支持跨平台(Windows,Android,IOS),支持跨语言(C++,C#,Java)的网络库