Android和iOS:如何同时开发?

21

我想要开发一款适用于Android和iOS设备的应用程序。是否有一种方法可以统一开发应用程序然后同时部署到两个平台上?还是必须分别为每个平台进行开发?


请参见https://dev59.com/RG025IYBdhLWcg3wLipX,该问题与此相同,但被关闭,因为它要求IDE /框架建议。 - sashoalm
可能是 iOS / Android 跨平台开发 的重复问题。 - user9645477
10个回答

7

如果您想要提供本地体验的应用程序,那么您就需要编写单独的应用程序。

我认为最好的起点是一个非常好的针对移动浏览器进行优化的Web版本。我认为最好的Web应用程序比许多本机应用程序更好,但它们与更好的本机应用程序没有竞争力。

还有一些选项,例如TitaniumPhoneGap, 这些都是混合的Web/本地系统,它们使用Web技术来构建本地应用程序。


5

1
许多移动应用程序仅呈现信息,并且具有非常少的业务逻辑。 - mikerobi
除了@mikerobi所说的,如果您的应用程序只是呈现信息,则大多数(如果不是全部)业务逻辑都在服务器端实现。 - Eido95

2

这完全取决于你想要开发的应用程序类型。如果是游戏,建议大部分使用原生代码,并利用OpenGL ES 2.0在两个平台上本地支持的优势。显然,所有Java代码都不能在iOS上重复使用,因此任何可以制作为可移植本地库的内容都有助于减少不可重复使用的代码量。


1

使用Qt可以进行跨平台开发的C++框架,它具有LGPL和商业许可证,您可以为两个平台开发应用程序,并从同一源代码简单地重新编译您的应用程序。此外,您还可以将其目标设置为Windows、Linux和Mac。

但请记住,Qt渲染自己的控件,因此在Android和iOS上的小部件将不会具有本机外观。此外,与所有跨平台框架一样,它会提供具有最低公共特性的功能。

来自他们的官方博客

使用Qt,您可以开发真正跨平台的应用程序,这些应用程序将在桌面、嵌入式和移动平台上运行。Qt 5.2引入了对Android和iOS平台的全面支持,从而使得可以从一个代码库创建打包并部署到Google Play和App Store的跨平台移动应用程序。您只需要使用Qt编写一次,而不需要使用两种不同的技术编写相同的代码版本!

苹果应用商店可能不接受使用dylibs的应用程序,这可能迫使您使用商业许可证来为闭源应用程序服务:

在iOS上,可以使用Qt库的动态链接版本,并将其捆绑到应用程序中。这允许应用程序使用LGPL许可证来使用Qt,同时允许应用程序本身是闭源的。尚不清楚苹果是否会接受将dylibs捆绑到iOS应用商店中的应用程序。如果苹果不接受使用捆绑dylibs的应用程序,则需要将Qt静态链接到应用程序中。由于Qt for iOS端口使用Qt的LGPL版本,因此静态链接LGPL的规则将生效-这可能对闭源应用程序构成问题。

最后,由于Qt是一个C ++框架,因此您需要使用C ++来开发应用程序。


1
以下是需要翻译的内容:

有很多选择。这取决于您想要原生体验还是希望在 Webview 中进行操作。使用原生体验可能需要进行一些本地编码,但仍然比开发两个单独的本地应用程序要好得多。

以下是我有经验的一些选择。

原生体验

Webview


0
如果是游戏或主要是图形应用程序,BatteryTech Engine 将满足您的需求。您仍然需要 XCode 来构建 iOS 版本,但除此之外,它是一个适用于两个平台的单一主要代码库。

0

我开始使用NativeScript,它看起来很有前途。

NativeScript是一种构建跨平台本地iOS和Android应用程序的方式,而无需使用Web视图。使用Angular、TypeScript或现代JavaScript,可以获得真正的本地UI和性能,同时与Web共享技能和代码。通过JavaScript获得对本地API的100%访问权限,并重复使用来自NPM、CocoaPods和Gradle的软件包。这是一个开源项目,由Telerik支持。


0
在过去的几年中,我使用了许多跨平台工具,从我的角度来看,Xamarin是最好的选择,因为最终你可以看出应用程序是否是跨平台的。但是,使用Xamarin编译成本地代码,因此在UI方面它们之间没有明显的区别。 你可以从这里开始:https://www.xamarin.com

0

Codename One 是另一个适用于两个平台的 Java 开发工具。虽然我没有使用过它。


0

现在,您可以使用FlutterReactNative从单一代码库构建适用于不同操作系统的应用程序。它们都有优点和缺点。

但是,在我看来,最好的选择是使用本地语言编写本地代码,并使用本地IDE。这并不是一项复杂的任务,特别是高级语言使用相同的原则(Java、Kotlin、Swift)。您将能够操作本地组件和策略,这些组件和策略得到支持,具有最新的更新和教程。无论如何,如果您有高性能任务,可以使用C++来共享核心代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接