Android & iOS:如何同时开发?
Posted
技术标签:
【中文标题】Android & iOS:如何同时开发?【英文标题】:Android & iOS: How to develop for both? 【发布时间】:2011-05-05 07:09:10 【问题描述】:我想为 android 和 ios 设备开发一个应用程序。有没有办法开发一次应用程序并在两者上部署?还是必须为每个平台单独开发?
【问题讨论】:
另见***.com/questions/6171128/…,它提出了同样的问题,但由于要求 IDE/框架建议而被关闭。 iOS / Android cross platform development的可能重复 【参考方案1】:如果您想要提供原生体验的应用程序,那么您将不得不编写单独的应用程序。
我认为最好的起点是为移动浏览器优化的非常好的网络版本。我认为最好的网络应用比很多原生应用要好,但它们与更好的原生应用相比没有竞争力。
还有一些选项,例如 Titanium 或 PhoneGap,它们是一种混合网络/本地系统,它们使用网络技术来构建本地应用程序。
【讨论】:
【参考方案2】:你有http://monotouch.net 和http://monodroid.net。这样您就可以拥有通用的业务逻辑,而只需重新开发您的 UI。
【讨论】:
很多移动应用只是呈现信息,业务逻辑很少。 除了@mikerobi 所说的,如果您的应用程序只是呈现信息,那么大部分(如果不是全部)业务逻辑都在服务器端 中实现。【参考方案3】:这完全取决于您要开发的应用程序类型。如果是游戏,我建议您将其大部分编写为本机代码,并利用两个平台都本机支持 OpenGL ES 2.0 的事实。显然,您的所有 Java 代码都不能在 iOS 上重用,因此任何可以作为可移植本机库的东西都有助于减少不可重用代码的数量。
【讨论】:
【参考方案4】:使用 Qt,它是一个用于跨平台开发的 C++ 框架,具有 LGPL 和商业许可证,您可以针对这两个平台进行开发,并且只需从同一源重新编译您的应用程序。作为奖励,您还可以针对 Windows、Linux 和 Mac。
但请记住,Qt 呈现自己的控件,因此小部件在 Android 或 iOS 上看起来都不是原生的。此外,与所有跨平台框架一样,它将在功能方面为您提供最低的公分母。
来自their official blog:
使用 Qt,您可以开发可在桌面、嵌入式和移动平台上运行的真正跨平台应用程序。 Qt 5.2 引入了对 Android 和 iOS 平台的全面支持,因此可以创建跨平台的移动应用程序,这些应用程序可以从一个代码库打包并部署到 Google Play 和 App Store。无需使用两种不同的技术编写相同代码的两个版本,您可以使用 Qt 编写一次!
Apple App Store 可能不接受使用 dylibs 的应用程序,但是对于闭源应用程序可能force you to use the commercial license:
在 iOS 上,可以使用 Qt 库的动态链接版本,并将它们与应用程序捆绑在一起。这允许应用程序使用 Qt 的 LGPL 许可证,同时允许应用程序本身是闭源的。 Apple 是否会接受将 dylib 捆绑到 iOS App Store 中的应用程序还有待观察。如果 Apple 不接受使用捆绑 dylib 的应用程序进入 App Store,则有必要将 Qt 静态链接到应用程序。由于 iOS 版 Qt 使用 Qt 的 LGPL 版本,因此与 LGPL 静态链接的规则将生效 - 这对于闭源应用程序来说可能是一个问题。
最后,由于 Qt 是一个 C++ 框架,您将需要使用 C++ 来开发您的应用程序。
【讨论】:
【参考方案5】:有很多选择。这取决于您是想要原生体验还是想要在 web 视图中显示。有了原生经验,您可能需要进行一些原生编码,但这仍然比开发 2 个单独的原生应用程序要好得多。
以下是我的一些经验。
本地体验
Nativescript + Angular(免费) Xamarin(价格取决于你在做什么) React Native(免费)网络视图
Cordova + Angular(免费)【讨论】:
【参考方案6】:Codename One 是另一个,用于两个平台上的 Java 开发。不过没有经验。
【讨论】:
【参考方案7】:如果它是一个游戏或主要是图形应用程序,BatteryTech Engine 会做你想做的事。你仍然需要为 iOS 构建 XCode,但除此之外,它是两个平台的单一主要代码库。
【讨论】:
【参考方案8】:我开始使用NativeScript,它看起来很有希望。
NativeScript 是您构建跨平台、原生 iOS 和 Android 应用程序而无需 Web 视图的方式。使用 Angular、TypeScript 或现代 javascript 获得真正的原生 UI 和性能,同时与网络共享技能和代码。通过 JavaScript 和重用 NPM、CocoaPods 和 Gradle 的包,获得 100% 的原生 API 访问权限。开源并由 Telerik 提供支持。
【讨论】:
【参考方案9】:在过去的几年里,我使用了很多跨平台,从我的角度来看,Xamarin 是最好的,因为最后你可以判断应用程序是否是跨平台的。但是使用 Xamarin 它可以编译为本机,因此它们在 UI 方面没有明显区别。 你可以从这里开始:https://www.xamarin.com
【讨论】:
以上是关于Android & iOS:如何同时开发?的主要内容,如果未能解决你的问题,请参考以下文章
如何同时在 Android 和 IOS 模拟器中查看我的颤振应用程序输出?
混合开发之DSBridge(同时支持Android和iOS)