跨平台开发_跨平台开发工具 - CSDN
精华内容
参与话题
  • 为什么移动端跨平台开发不靠谱?

    万次阅读 热门讨论 2018-03-11 19:10:22
    随着智能手机的发明,许多开发人员都提出了同样的问题:如何为多个移动平台构建和发布应用程序? 包括最初的iPhone和BlackBerries,Android,以及Windows Phone和Web。 每个平台单独发布应用程序是很昂贵的。我们...

    前言

    翻墙偶然读到一篇不错的文章,随手翻译,作者是jielse发表于androidHub。

    台风过后的城市

    随着智能手机的发明,许多开发人员都提出了同样的问题:如何为多个移动平台构建和发布应用程序? 包括最初的iPhone和BlackBerries,Android,以及Windows Phone和Web。 每个平台单独发布应用程序是很昂贵的。我们最初的想法: 肯定有一个解决方案可以降低开发多个应用的成本。但是事实是不是这样的呢?

    在Pixplicity,超过六年来,我们一直在开发应用,并且企图解决这个问题。结局并没有什么不同:虽然我们在提供全方位解决方案之前,就开始专门用本地开发人员开发Android。多年来,我们尝试并测试了许多跨平台解决方案,如PhoneGap,Xamarin和React。 最后,我们决定采用Android和iOS的本地解决方案。 具体的原因会在下文解释。

    那么这个跨平台又是什么呢?

    iOS应用程序传统上用Objective-C或Swift编写; Android应用程序用Java或Kotlin。 这些都是原生语言。 这意味着如果你想为两个平台制作应用程序,则需要至少知道两种编程语言。 将web添加到组合中,你将需要用于UI的HTML + CSS + JavaScript,以及用于业务逻辑的PHP或Ruby类。 那将是很大的工作量。

    跨平台解决方案旨在通过为多个平台使用单一编程语言来简化(部分)此问题。

    这些解决方案可以分为两类:

    1.使用所有平台支持的Web技术的。 这些解决方案基本上加载了应用程序中的移动浏览器,并在该浏览器中执行所有逻辑,同时提供传统网站技术没有的附加功能,例如推送通知或访问文件存储。 这个类别包括PhoneGap(或Cordova),Sencha和Ionic(一个构建在PhoneGap之上的框架),并使用JavaScript作为主要的编程语言。

    2.另一类通常被称为“本地跨平台”,因为程序员编写的代码由程序自动转换为本地代码。 这具有以下优点:所产生的应用程序可以实现近乎原生的性能,而基于Web的解决方案则具有在浏览器中运行未编译的代码的开销。 这个类别包括React Native和(可能)最流行的一个:Xamarin。

    这些本地跨平台解决方案可以进一步分为

    两个类别:

    1.共享UI代码(应用程序的可视部分)和不具有这些子类别的子类别。例如,常规的老Xamarin在平台之间共享业务逻辑代码,但UI代码(和其他特定于平台的代码)是专门为每个平台编写的。 即使作为开发人员,你正在使用单一语言(在这种情况下为C#),你仍然在iOS和Android上为UI编写单独的代码。

    2.Xamarin还提供了一个名为Xamarin.Forms的API,可以共享UI代码。 不用编写单独的UI代码,而是使用Xamarin.Form自己的标记格式来编写它,然后将其转换为本机控件。 React也属于这一类; 而不是编写本机视图,将会写出“React”视图。

    只用编写一次UI代码,React代码

    优点

    所有这些技术都相当漂亮。共享代码意味着更少的工作和更少的学习,让我们来看看使用上述选项之一的好处:

    1.共享业务逻辑 - 将业务逻辑写入一次,在任何平台上运行。 Google通过使用自己的Java对Objective-C转换器J2ObjC,在Android,iOS和Web应用程序中重新使用其70%的代码。这大大减少了构建应用程序所需的工作量,降低了成本,并缩短了发布时间。
    2.维护 - 共享代码不仅降低了初始构建期间的成本,而且对你的应用程序的使用寿命也将是有益的。
    3.学习一门语言 - 如果你是一名寻求多个平台的开发人员,那么学习单一语言(或一组语言(通常是一种编程语言,构建脚本语言和用户界面的标记语言)比两套更容易。
    4.同一个团队在两个应用程序上工作 - 这是一个很大的工作。一个团队经费更便宜,使项目管理更容易,更高效地工作。知识在团队中更容易分享。 Android团队的成员可以帮助iOS团队,反之亦然,因为没有Android团队,没有iOS团队。只有一个团队
    共享单元测试 - 如果你有单元测试,跨平台代码库还可以共享单元测试。这意味着在写测试时花费的时间更少。
    5.与网络一起使用 - 当使用基于Web的解决方案(或支持网络的本机)解决方案时,所有上述规则也适用于Web平台。 Xamarin只能在iOS和Android上共享代码的地方,基于网络的工具在你的应用程序的网页版本之前提供了所有的优点。

    显然,无论你是单一的开发人员,跨多个开发团队的跨国公司,还是学习构建你的第一个应用程序的学生,都可以从这些优势中获益很多。 “写一次,无处不在”它经常被引用,虽然我不会认为它有时是项目的完美解决方案,但这听起来太好了。

    ——by谷歌高级软件工程师Chet Haase

    多年来,Pixplicity的团队和我使用了几个平台(不同程度的成功),我们可能不会再停止尝试新的平台。一路上,我们遇到了一些重大的陷阱,我认为在提交跨平台工具之前应该仔细考虑。

    缺点

    所有的大公司都是跨平台的吗? Google创建并使用(很多)J2ObjC。 Facebook创建并积极维护React。微软收购并非常积极地维护Xamarin。

    1.不同的平台是不同的

    你无法为一个平台构建应用程序,并希望在将其复制粘贴到另一个平台上时获得良好的评分。我知道你想要,虽然你技术上可以,但你不应该这样做。 Android和iOS是不同的,Android和iOS用户是不同的,他们应该接近不同。每个平台都有自己的设计指南和规则来开发,用户会知道你什么时候破坏他们。

    正如谷歌所说:

    J2ObjC不提供任何类型的平台无关的UI工具包,也没有计划在未来这样做。 我们认为iOS UI代码需要使用Apple的iOS SDK(使用Android API的Android用户界面,使用GWT的网络应用程序UI等)Objective-C,Objective-C ++或Swift中编写。

    Facebook,在React的官网上写道:

    值得注意的是,我们没有追求“一次写作,在任何地方运行”。不同的平台具有不同的外观,感觉和功能,因此我们仍然应该为每个平台开发离散应用程序,但是同样的工程师应该能够为任何选择的平台构建应用程序,而无需为每个平台学习一套不同的技术。 我们称之为“学习一次,写在任何地方”。

    所以这意味着当你想要针对每个平台优化UI时,共享UI平台(如Xamarin.Forms)已经在窗口之外。这反过来意味着近100%的代码共享成为一个无法达到的目标。根据你的应用程序的性质,假定在平台上共享60%的代码。

    网络再次与移动平台完全不同,至少是在笔记本电脑或桌面上使用时。屏幕大小很重要,键盘的存在也是如此,使用鼠标与触摸屏时的交互也是如此。一旦了解了性能,你将看到基于Web的解决方案的好处并不多,除非你在网络技术方面非常有经验,绝对不想学习新的语言。
    请注意,平台的差异不仅限于你的应用程序的可视化方面。它包括在每个操作系统上存在,丢失或不同的所有功能。 Android开发人员可以使用大量功能,这些功能在iOS上是不可能的。想想Android的丰富的通知,开放蓝牙接入,NFC和USB通信,永远在线视图,即时应用程序,启动屏幕小部件,或许更多。 iOS反之亦然:智能应用横幅,专用加密硬件,3D触摸。其他的不同之处在于跨平台的包装器是统一的:画中画,ARKit与ARCore,播放音乐的机制,以及应用在后台执行任务的时间和时间,何时以及如何请求权限,访问外部存储…

    感谢Google的高级软件工程师Romain Guy解决了我们的部分担忧。

    2.性能

    比本地程序更快是不可能的。 本地跨平台代码被翻译成字节码或本地机器码,因此理论上可以实现原生性能,但是经常会有各种各样的局限。 例如,Xamarin向每个应用程序发送一个导致一些开销的功能库,这对于动画的平滑性或对用户交互的响应可能并不重要,但它在启动时间,内存使用和应用程序大小方面都很重要。 Xamarin内置的一个简单的“hello world”应用程序可以占用惊人的16Mb(比Instant App的最大尺寸大4倍)。

    以毫秒为单位加载和保存图片; 越低越好。 从2017年8月统计

    以毫秒为单位加载和保存图片; 越低越好。 统计从2017年8月

    基于网络的方法的性能甚至没有降低太多。传统上在移动浏览器或网络视图中运行的网站对于性能来说是不利的,但是在多年来已经有了很大的改进,响应能力的差异不仅是可测量的,而且也非常显着。一个简单而精心制作的基于Web的应用程序可能会欺骗用户认为它是本地的,但是无论如何,动画像其UI组件一样平滑,屏幕转换或设备旋转都会让你失望。这是Facebook发明了React的主要原因。

    “不幸的是,由于所有渲染都是使用Web技术完成的,所以我们无法产生真正的本地用户体验。”
    -by Facebook

    3.易于扩展性

    对于我来说,这是一个个人的抱负,因为我在创建Xamarin应用程序时遇到了很多麻烦。这些工具一直很麻烦,开发过程很麻烦,所以我必须尽力保持不要对Xamarin造成不利影响。

    4.错误

    Android和iOS是坚实的平台,但即使存在一些bug。在操作系统,开发工具和使用的库中存在错误或意外或未记录的行为。在开发过程中添加另一层软件,你将添加更多错误。在Xamarin的中,这个列表是很长的。在我们的办公室有一个名为“Xamarin Sh * t的大清单”的共享文件。它不仅仅处理更多的问题,而且还增加了工具链的复杂性,从而导致了更复杂的调试过程。

    5.工具的不成熟

    跨平台工具链比本机平台不成熟的事实并不仅仅是导致更多的错误发生。这也意味着它们不完整。想想XCode和Android Lint执行的自动化代码检查,它会在开发过程中警告错误和安全问题。想想IDE的帮助和加快编写代码,有助于跟踪错误,跟踪性能问题(内存,CPU,gpu,电池使用情况等)。虽然其他平台当然也会发布自己的类似工具,但本地平台已经存在了多年。

    高级Java IDE

    6.新平台功能的缓慢整合

    XCode和Android Studio(基于IntelliJ)经过测试,始终是第一个发布新功能的,并保证可以访问开发人员可用的100%的平台功能。由于固有性质,跨平台工具将始终在每一次更新的曲线后面。可以肯定的是,Xamarin一直很快采用,他们甚至大胆地声称要花几个小时来包括新的操作系统功能,但问题是很多的。有时候,Appstore强制应用程序为64位CPU构建,而Xamarin尚不稳定。

    7.编程语言

    哪些编程语言被认为是“好”,哪些是“坏”的。每种语言都有自己的优点和缺点。但是,尽管如此,个人意见在这个讨论中起着重要的作用,但一些语言本身比其他语言更安全。无论你的codestyle-check还是IDE有多好,只能使用一种语言而不是另一种语言避免某些错误。 Javascript(由React使用)允许你使用解释器无法打印的拼写错误,导致运行时错误,而不是拼写检查器类似的警告。

    javascript

    8.库的可用性

    流行的跨平台解决方案通常有一个良好的包管理器,可以提供各种各样的插件或库。例如,Xamarin的NuGet存储库具有惊人的大量插件,并且包括许多流行的本机库。这些存储库中没有一个与可用于本地平台的库的数量进行比较。你经常可以移植现有的本机库,不好的事情是你经常需要这样做。而对于某些跨平台技术,这意味着你将需要了解本机编程语言,这是你在选择跨平台语言时所要避免的。

    9.缓慢的编码和运行周期

    诚然,这个论点有两个方面。有基于Web和本地的跨平台选项,可以很快地显示代码更改,还有一些平台,每次你做一个小的改进时候,都需要部署到设备或模拟器上更改。

    10.白标签

    当你为不同的客户端部署不同品牌的应用程序时,这一点很重要。 Android上的“构建版本”或iOS上的“目标” - 这些平台具有简单的系统来支持这一点。我所知道的跨平台方法并不支持这一点,所以你将在构建过程中最终编写自己的解决方案并使每个部署更加复杂。

    11.专业知识

    个人擅长是一个主观的事情。如果你在Ruby中有丰富经验,那么你可能最喜欢在Rhomobile中创建移动应用。如果你在过去30年里一直在Basic编程,你可以坚持你所知道和使用B4X。 Pixplicity的开发人员拥有多年的本地技术经验,我们长期以来一直在高水平编程,并经常在我们的Android学院和世界各地的会议上教授我们的知识。这会影响你在选择技术开发应用程序时的选择,但应该如何?

    12.学习一种新语言

    但这是简单的吗?如果你想编写一个高质量的应用程序,你需要知道你正在定位的平台。你需要知道平台可以做什么和不能做什么,他们的SDK提供什么,甚至你需要考虑哪些错误或特性。对于每个平台通常甚至每个平台的每个版本。很容易估计你仍然需要学习的知识数量,远超已经知道的知识。如果你是有经验的C#开发人员,那么关于.Net和GDI的所有知识都是无用的。实际上,学习编程语言是应用程序开发的容易部分。这是从C#到Java或从Swift到Kotlin的一小步。如果你理解这个概念,语法是微不足道的。

    13.多年的经验

    当然,像Ruby,C#或JavaScript这样的跨平台语言已经存在了,但这些平台还没有。 React Native于2015年3月发布。在撰写本文时,根本无法找到超过2.5年经验的React Native开发人员。

    14.文档

    任何体面的跨平台解决方案都有很好的记录。本土发展记录更好。他们有一个更大的在线社区。他们有更多的会议和更多的本地会议。在Stack Overflow上,Android + Java上有191,918个积极的问题,iOS + Swift上的103,641个,React的59,355个,Cordova的54,126个,Xamarin的25,976个。当然这表明社区规模和参与度,而不是本地程序设计是难于使用的。

    15.业务依赖性

    所以现在你知道我非常不喜欢跨平台的开发,希望现在也可以这样做。但到目前为止,我甚至只涵盖了应用程序开发的实践方面。我们来看看未来,看看它会如何影响你的业务。
    苹果和谷歌有巨大的团队建立他们的平台,只要这些平台存在,他们就会有这样的一面。这是你可以获得的最佳保证,即对他们提供的工具的长期支持,以及其积极的持续发展。本地平台的普及也为社区周围的社区提供了更大的支持,并且有更多稳定的经验丰富的程序员供应。
    然而,跨平台工具完全依赖于为其资助的公司的议程。他们都没有对支持和未来计划提供任何保证。没有保证他们将与下一次更新的Android或iOS兼容,不能保证他们下个月甚至会存在。如果发生这种情况,你只能希望这项技术将被移交给社区,并将继续作为开源,毫无疑问,发展速度将会慢得多。
    “该公司没有提供任何保证,它不会拉插入项目 。”

    Ariel Elkon关于React Native的评论。
    如果过去是未来的任何迹象,那么当今流行的跨平台解决方案将在大约两年的时间内被取代。 Titanium,PhoneGap和Adobe AIR都被视为跨平台开发中的下一个重要任务。现在是React和Xamarin代替;先进的Web应用程序可能在未来接替他们。

    注意

    那么什么时候应该使用一些跨平台的工具包呢? 有两个很大的例外:

    游戏 -

    游戏通常不依赖于本机组件。 他们正在使用自定义UI组件,这些UI组件旨在适应游戏的外观和风格,因此无需编写本机布局。 无论是2D还是3D,游戏通常都是建立在OpenGL之上的,其中性能非常好,视觉逻辑构成了应用程序的很大一部分,可以跨平台共享。 如果你正在做一个游戏,那么是的,你应该使用像Unity或Unreal这样的东西。

    快速原型

    如果你很快想要测试一个想法并将其部署到一组测试人员,那么你可能对应用程序的交互方式更感兴趣,而不是它是否具有良好的性能。 根据你的专业知识,跨平台工具集可以非常适合以快速简便的方式创建原型。

    TL; DR

    你承诺了60%至90%的共享代码,从而实现更快的开发和更少的维护。但由于工具不足,开发过程已经放缓,开发人员不高兴,由于缺少库,手工制作更多的组件,每一个软件更新都会开始破解。部署时间更长。测试不足,所以有更多的错误。现在,你将开发成本削减了20%,而不是预期的60-90%,除此之外,你的用户还会留下不良评级。
    我们已经看到它发生了,我们会继续看到它发生。没有人说这也会发生在你身上,但是在选择平台时请考虑这篇文章。客户通过一个跨平台的应用程序来找我们,要求使用本地技术重建它。没有一次是相反的。

    国内某高校图书馆

    关于作者

    Mathijs Lagerberg在建立了几个Android应用程序后,于2012年初共同创立了Pixplicity。 Android OS在这些时代还很年轻,只有很小的市场份额。在无数的语言中编程好几年的生活,将这个新技术潜入头脑,加入一个专注于构建移动应用的初创企业是有道理的。随着时间的推移,Pixplicity已经发展成为一个有创意的技术机构,有幸玩过所有有趣的双字母缩写:A.R.,V.R.和A.I ..仍然在构建应用程序,但不是跨平台的。

    展开全文
  • 谁都希望一次开发,所有移动平台都可以运行,无论手机平板如何碎片化也不怕。...成本低、周期短,易于上手,不用重新设计,种种好处让跨平台开发风头无量,也让诸多跨平台开发工具趁势崛起。在本文中...

    谁都希望一次开发,所有移动平台都可以运行,无论手机平板如何碎片化也不怕。

    在本文中,我们盘点最受开发者喜爱的跨平台应用及游戏开发工具,尤以HTML/JS/CSS为众,却也包含使用其他语言进行开发的工具,比如Xamarin,使用C#,就能开发出运行于各大主流移动平台上的原生App。

    成本低、周期短,易于上手,不用重新设计,种种好处让跨平台开发风头无量,也让诸多跨平台开发工具趁势崛起。在本文中,我们盘点了过去的一年里,最受开发者喜爱的跨平台移动应用开发工具,尤以HTML/JS/CSS开发为众,比如PhoneGap、Sencha Touch等,却也包含使用其他语言进行开发的工具,比如Xamarin,使用C#,就可以开发出能运行于各大主流移动平台之上的原生App。

    HTML/JavaScript/CSS篇

     

    1.PhoneGap

    说到跨平台开发工具,很多人首先会想到PhoneGap。这样一款能够让开发者使用HTML、JS、CSS来开发跨平台移动App的开源免费框架,一直以来都深受开发者喜爱,从iOS、Android、BB10、Windows Phone到Amazon Fire OS、Tizen等,各大主流移动平台一应俱全,还能让开发者充分利用地理位置、加速器、联系人、声音等手机核心功能。

     

    此前,在Native与Web谁主未来的大论毫无消停之时,许多人认为,类PhoneGap的应用开发框架天然优势在于支持跨平台,后期可扩展性较强,开发周期很短,熟悉Web技术的开发者可轻松上手,缺点在于性能上的确不如Native,后期还需针对各个版本分别优化开发等。如今,Hybrid App已然当家做主,PhoneGap在性能与平台特性支持上也有着极大的提高和改善,大有赶超Native之势。

     

    2.Sencha Touch

    Sencha Touch是一款基于HTML5、CSS3和JavaScript的移动Web应用开发框架,内置MVC系统,能够让开发者的HTML5应用看起来就像原生应用一样,全面兼容iOS、Android、BlackBerry、Windows Phone、Tizen等主流移动平台。除了常见的触摸手势之外,Sencha Touch还专为iOS、Android设备提供了单击、双击、滑动、滚动和双指缩放手势。

     

    HTML5应用开发的大热让众多跨平台开发框架逐渐风行,而Sencha Touch就是其中之一。能够让开发者以非常友好的方式从HTML5/CSS3/JS提取最多内容,并为其提供丰富而又易于使用的特性。Sencha Touch对于iOS平台的兼容性非常好,画面切换效果亦是相当流畅。

     

    3.Titanium

    Titanium是Appcelerator公司旗下的一款开源的跨平台开发框架,和PhoneGap及Sencha Touch一样,都是让开发者使用HTML/CSS/JS来开发出原生的桌面及移动应用,还支持Python、Ruby和PHP。Titanium最大的特点就是,由于是基于硬件的开发,开发过程中所创建的应用可选择存储在设备或云端之上。

     

    Titanium主要特性:

    通过其单一的JavaScript SDK开发原生iOS、Android、Hybrid及移动Web应用。

    通过其基于Eclipse的Titanium Studio,可以极大地简化开发流程。

    拥有高效代码块,让开发者编写更少的代码,创建出可扩展的应用程序。

    集成了MBaaS和Appcelerator Open Mobile Marketplace。

     

    4.Intel XDK

    Intel XDK的前身是AppMobi XDK,是一款帮助开发者使用HTML5开发移动及Web应用的跨平台开发工具。XDK包括了一个HTML5开发环境和一组支持创建混合iOS及Android应用的云服务,这些应用能够直接提交到不同的应用商店之中。除此之外,XDK还提供了调试工具,可以进行屏幕仿真调试、设备实际调试和遥控调试,不包括Ad-Hoc模式和安全特性。

     

    和其他工具相比,XDK兼容PhoneGap的HTML5多平台开发项目,能够极大地减少开发时间,不依赖于Java或任何特定的浏览器特性,还能访问设备自带功能,例如GPS、加速计、摄像头、触摸屏交互、触摸手势、振动等。

     

    5.RhoMobile

    摩托罗拉旗下的HTML5应用开发平台RhoMobile Suite也是相当受开发者欢迎。通过RhoMobile,开发者无需考虑设备类型、操作系统、屏幕尺寸等诸多问题,只需掌握HTML和Ruby就可开发出运行在iOS、Android、Windows Mobile、BlackBerry、Windows Phone等平台上的App。

     

    RhoMobile主要由三部分组成,分别为:

    RhoConnect:通过它,应用与数据之间可快速建立连接,并确保用户可以访问这些数据。

    RhoElements:开发者可以开发出在每台支持设备上都具有相同的外观、感觉和操作灵活的应用。

    RhoStudio:通过RhoStudio全功能模拟器,开发者可以在PC上快速测试和调试跨平台应用程序。

     

    C#篇

     

    6.Xamarin

    在过去的一年里,Xamarin的势头可以说是颇为强劲,而其跨平台应用开发工具使用份额比也有着显著增加。通过Xamarin,开发者只需使用C#语言即可开发出iOS、Android、Mac及Windows原生App,不仅可以实现“一次编写,随处运行”,更可达到原生UI的跨平台效果。与基于HTML/JS/CSS的PhoneGap相比,Xamarin最大的优势是通过与系统的底层API通信并与系统原生UI直接交互,可以保证应用的高性能和UI流畅性。

     

    Xamarin主要特性:

    快速开发移动原生应用

    程序代码共享

    与Visual Studio整合

    确保第一时间更新

    原生的用户接口及效能

     

    Lua篇

     

    7.Corona SDK

    Corona SDK是Corona Labs旗下的一款专门用于跨平台移动应用开发的Lua语言SDK库,不仅容易入手,无门槛,而且效率也相当高。Corona SDK提供了跨平台能力,所以开发者的应用或游戏可兼容iOS、Android、Kindle Fire和Nook平台。Corona支持硬件加速、GPS、照相机等,并集成了Box2D物理引擎。

     

    Corona SDK服务分为三种:

    基础版:能够在极短的时间内完成应用或游戏开发,通过内付费或广告盈利。

    专业版:增加了先进的图形技术及所有Corona插件等。

    企业版:开发者可以在线开发,并从Corona应用中调用任何原生库。

     

    其他语言篇

     

    8.LiveCode

    LiveCode是由RunRev公司推出的一款强大的图形化开发环境,不仅免费,还可以提供10倍的效率提升并减少90%的代码。其强大之处在于非常容易学习和使用,可以让一个不会编程的人在很短的时间内就能开发出原生的,能够运行于PC、服务器、移动设备上的应用程序。

     

    LiveCode拥有一个类似于VB的所见即所得的界面设计工具,用户可以使用拖拽的方式来实现应用界面的设计和布局,并通过一种类似于英语的自然脚本语言来编写应用功能,最后,通过LiveCode强大的部署工具来生成可运行于Mac、Windows、Linux、iOS、Android等各种平台上的应用程序。

     

    游戏开发篇

     

    最后,我们再来介绍两款跨平台游戏引擎,分别为Unity、MoSync。

    9.Unity

    Unity在全球开发者圈子里的受欢迎程度自不必多言,这样一款功能强大的跨平台游戏引擎,全面覆盖了Windows、Mac、iOS、Android、Windows Phone、BlackBerry、Xbox360、Wii等桌面、移动及掌机平台,支持JavaScript、C#、Boo三种脚本语言,拥有着大量的第三方插件和工具,可以帮助开发者极大地提升工作效率。

     

    容易上手、多语言编程、专业级的效果、傻瓜式的调试和编译、强大的扩展性,在跨平台、光影特效及模型渲染等各方面都有着非常不错的表现,让Unity无论在3D还是2D游戏开发中都是当之无愧的“最好用的游戏引擎之一”。

     

    10.MoSync

    MoSync是一款开源的免费移动游戏开发引擎,易于移植,允许开发者使用C/C++、HTML5或JavaScript来为iOS、Android、Windows Phone、Java Mobile、Windows Mobile等平台进行游戏应用开发。开发者可通过MoSync精简库调用本地设备API,并且,所开发的App还能使用本地的UI控件。

     

    通过MoSync精简库,开发者可以调用本地设备API,并且,所开发的App还能使用原生UI控件。此外,通过MoSync IDE,开发者可以调用任何仿真器,包括本地平台的仿真器,及MoSync Reference Environment。

    SDK篇

    11.Shareinstall


    ShareinstallSDK其实是一款完成跨平台操作的APP推广辅助工具,它同时支持IOS和Android。APP开发者可以通过ShareinstallSDK更精准的进行产品的推广。在用户安装过程中简化用户安装流程,改善用户安装使用体验。另外,ShareinstallSDK还是一款渠道统计工具,能够全方位的分析渠道推广效果。

    ShareinstallSDK能干什么:
    1)携参安装
    ShareinstallSDK可以通过携参安装,简化用户的安装体验,丰富用户的安装信息,例如:免填邀请码,自动添加好友,自动加入游戏房间,商品导购等。
    2)渠道统计
    帮助统计并分析渠道推广的效果,通过数据帮助决策者调整渠道推广策略。
    3)一键拉起
    可实现各种浏览器的一键拉起。

    展开全文
  • GUI跨平台开发

    千次阅读 2020-03-05 09:39:24
    GUI跨平台开发 本文全平台是指:台式电脑系统WINDOWS/LINUX/MAC OS;智能设备系统IOS和安卓。 名称//语言//支持平台//官网 3D游戏引擎:虚幻||C++||全平台+游戏机平台+VR 3D游戏引擎:unity||C#||全平台+游戏...

    GUI跨平台开发

    本文全平台是指:台式电脑系统WINDOWS/LINUX/MAC OS;智能设备系统IOS和安卓。

    名称(组件)//语言//支持平台//官网

     

    Visual Studio with [.Net core(3.x) | .NET 5(2020年底)]||VB.NET, C#,VC++||Windows, Linux, macOs||https://dotnet.microsoft.com/download

    (目前VS+.NET CORE3.X已可以开发跨平台窗体程序.但没有窗体设计器!!!你必须用各种奇技淫巧或者代码拖放组件到窗体.窗体设计器目前仅在VS预览版中可用,微软正在拿小白做实验.当然毫无质疑未来窗体设计器必然会做进去,现在没做到正式版(生产环境VS)中去是因为技术太难了 程序员正在赶工中...基本上2020年底可以开发跨平台窗体程序了)

    注:VS+.NET CORE跨平台窗体程序Windows要求至少win7SP1以上(不支持XP).Linux和macOS平台要求没注意,不过用这俩平台的用户,操作系统应该会更新的很新,不用考虑类似XP这样持久力巨大的旧操作系统.

     

    3D游戏引擎:虚幻||C++||全平台+游戏机平台+VR

     

    3D游戏引擎:unity||C#||全平台+游戏机平台+VR

     

    Qt||C++||全平台

     

    wxWidgets||C++,多语言||全平台||https://www.wxwidgets.org/

     

    GTK||c/c++、多语言||全平台

     

    MonoDevelop||C#||Linux,Windows,macOS||https://www.monodevelop.com/||注:需要MONO,GTK#,windows平台还需要.NET及.NET Core

     

    RAD STUDIO(含DELPHI和C++Builder)with FireMonkey框架||Object Pacal,C++||全平台||https://www.embarcadero.com/||支持平台列表http://docwiki.embarcadero.com/RADStudio/Rio/en/Supported_Target_Platforms

    Lazarus(高度兼容DELPHI)||Free Pacasl||全平台||https://www.lazarus-ide.org/

     

    其他:《推荐8个免费实用的C++ GUI库》https://www.csdn.net/article/2012-05-30/2806134

     

    PYTHON GUI跨平台:

    PyQt:它是Python编程语言和Qt库的成功融合。

    wxPython:wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的。

    Tkinter: 是 Python内置的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。

     

    APP跨平台

    基于HTML5,JS的:

     

    展开全文
  • 移动端跨平台开发分析与比较

    千次阅读 2019-05-15 14:06:07
    移动端跨平台开发前言移动端开发开发方式跨平台开发技术 跨平台开发已经不是什么新鲜的词了,现在再来整理这些有点为时过晚了,不过还是想把自己这两年在投入在移动端跨平台开发上的一些经验和一些踩的头破血流的...

    跨平台开发已经不是什么新鲜的词了,现在再来整理这些有点为时过晚了,不过还是想把自己这两年投入在移动端跨平台开发上的一些经验和一些踩的头破血流的坑分享给大家,毕竟这块是自己第一个单独钻研与开发的一个方向,也希望通过这篇文章给正在选型的小伙伴带来些许的帮助。
    在此郑重声明,本片文章没有什么实用的干货,只是一点点小小的见解,比较适合正处在开发前期选型阶段的小伙伴(*/ω\*)

    1.前言

    第一篇文章还是想先聊聊当前大环境下“五彩斑斓”的跨平台开发框架。由于这些框架越来越多的出现,我在这就聊三个具有代表性的移动端跨平台开发框架React Native、Flutter、Xamarin。不过在进入主题之前,有一些相关的话题还是想扯一下,本片只是简单的总结与比较分析,不是非常专业,有不当的地方欢迎指出。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    2.移动端开发方式

    这里先罗列一下当前移动端的三种开发方式

    原生开发

    这个对于大家来说一定不陌生,原生的开发目前来说就是Android(JAVA、Kotlin)和IOS(Object-C、Swift),这也就是最传统最原始的移动端开发。

    优点 缺点
    速度快、性能高、稳定性强、用户体验好 前期开发费用高
    可以访问手机所有功能 后期维护繁琐
    支持大量图形和动画 上线时间无法固定
    可线下使用 升级灵活性差

    混合开发

    混合开发也比较好理解,就是H5与原生开发的结合,主要是用js和原生技术相互调用,可以初步实现跨平台使用的效果,现在我们日常使用当中有很多App都是通过这种方式实现的。

    优点 缺点
    兼容多平台 性能相对较差
    节省人力成本,缩短开发周期 用户体验不如原生
    学习成本较低 技术不成熟

    跨平台开发

    一次编写,多平台运行,不需要针对特定平台进行开发(不同的跨平台开发框架有一定的差异)。

    优点 缺点
    缩短开发周期 性能稳定性低于原生
    降低开发成本 用户体验不如原生
    学习成本相对较低 (各个平台不同) 技术不成熟

    其实这中间还有一种叫WebApp,但从我个人角度来看,不愿意将其归类于App或者将WebApp归类于一种开发方式,因为从原理的角度来看,它的本质就是Web,就是用传统的H5开发而来,只不过是放在移动端的网页上显示而已,如果非要给其加上一个标签的话,我觉得“轻应用”再合适不过了。
    时代在发展,社会在进步,人人都在追求高效的生活与工作方式,在许多用户都认为移动端的开发中本机语言、Objective-C、Swift 和 Java 是唯一的选择的时候,跨平台技术顺应着时代和人们的需求而产生。

    3.跨平台开发技术

    1.React Native 传送门

    Facebook;JavaScript语言;JSCore引擎;React设计模式;原生渲染

    “Learn once, write anywhere” ,代表着 Facebook对 react native 的定义:仅需学习一次,编写任何平台。这句话需要好好理解,这并不意味着我们可以只写一遍代码就可以在多个平台上面运行,这与“Write once,run anywhere”是有本质上的区别的。
    RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需要对应的学习移动端的一些知识就可以初步进入移动应用开发领域。

    优点 缺点
    复用了 React 的思想,有利于前端开发者快速上手移动端 做不到write once,run anywhere,部分开发依然需要为 iOS 和 Android 平台提供两套不同的代码
    组件化开发,复用率高 应用性能比不上原生
    可以利用 JavaScript 动态更新的特性,快速迭代 对开发人员技术要求高,不单单需要前端开发经验
    相比于原生平台,开发速度更快 文档还不够完整,学习曲线偏高

    简单来说,React Native是利用 JS 来调用 Native 端的组件,从而实现相应的功能。
    在这里插入图片描述

    2.Flutter 传送门

    Google;Dart语言;Flutter Engine引擎;响应式设计模式;原生渲染。

    Flutter是谷歌的移动UI框架,作为Google的亲儿子,开发语言是Dart。同时Flutter也是构建未来的Google Fuchsia应用的主要方式。
    本人有幸在18年年初尝试过Flutter的Bate测试版本,至于现在的正式版还未使用过,不过我相信肯定比Bate版本完善了很多东西。虽然Google也曾大肆宣扬过Dart语言,但就编写而言,代码的可读性并不是非常友好。最近在很多社区的观察,发现Flutter的好评不少。

    优点 缺点
    一套代码开发 前期bug较多
    一切都是widget,灵活性强 代码可读性相对不友好
    动画处理强 对于没有移动端和前端经验的小伙伴来说上手较难

    熟悉Java的小伙伴上手相对快一些,还是能从代码中感觉到Java的影子。
    在这里插入图片描述

    2.Xamarin 传送门

    微软;C#语言;基于Mono;原生渲染

    Xamarin采用C#作为开发语言对于很多.net工作者是一个福音,这意味着.net工作者们不用再去重新学习一门语言,仅仅用自己最熟练的语言就能开发移动端应用。
    Xamarin的跨平台思路很简单,就是使用C#来完成所有平台共用的,和平台无关的 app 逻辑部分。由于各个平台的 UI 和交互不同,再使用由 Xamarin 封装好的 C# API 来访问和操控 native 的控件,分别进行不同平台的 UI 开发。
    另外Xamarin还提供了Xamarin.Forms UI工具包,Xamarin.Forms可以帮助开发人员快速的构建跨平台的UI,通过一次编码,生成多个平台的原生UI界面。

    优点 缺点
    生态系统庞大(支持Android、IOS、WP、MacOSAPP) 国内社区不完善
    可移植性强 除了官网外的相关文档较少
    Xamarin.Forms代码复用高达94% 新版SDK的封装更新不及时
    近乎原生的体验 第三方SDK的引用相对复杂

    简洁的代码,简洁的界面,.net开发人员也可以用C#来开发移动端应用。
    在这里插入图片描述

    总结:不管什么跨平台开发框架,都要去选择最合适自己的。但不管选择何种框架,前提还得对原生的开发环境以及开发模式有一定的了解,不然也是事倍功半。虽然现在市面上移动端的跨平台开发工具开发出来的App性能都和原生有一定的差距,但还是有他们自己的优势,并不是所有公司都能长期承担起原生App开发与维护的成本,这也是他们能长期存在的理由。
    本人研究的时间也不长,肯定有总结的片面的地方,欢迎指出。
    后续会持续更新Xamarin方面相关的技术文档与采坑经验,敬请期待。(つ•̀ω•́)つ

    展开全文
  • 跨平台客户端开发经验总结

    万次阅读 热门讨论 2017-07-04 14:19:03
    1 前言因为《猫科动物和企鹅在窗口外看机器人吃苹果》这出戏太美,很多公司都希望能全平台同时发布新版本app,还要能复用代码以降低开发成本。这迫使一部分已熟悉某个平台的先锋们转岗到另一个平台边学习边开发。...
  • 几款移动跨平台App开发框架比较

    万次阅读 2019-04-12 10:10:52
    整理目前流行的跨平台WebApp开发技术的特点,仅供参考。 每个框架几乎都包含以下特性: 使用 HTML5 + CSS + JavaScript 开发跨平台重用代码; 丰富的UI库; 提供访问设备原生API的 JavaScript API 包装器; ...
  • 详解跨平台APP的三种开发模式

    千次阅读 2018-08-03 11:53:45
    目前市面上主流的APP开发模式有三种:一种是Andriod和IOS的原生APP开发;一种是WebApp HTML5开发,最后一种是Hybrid App混合式开发。 1、Navtive APP开发(原生APP开发) NativeApp是基于智能手机操作系统(现在主流...
  • .Net三种实现以及跨平台

    万次阅读 2017-12-04 15:30:19
    由于Net的跨平台已经慢慢与趋向于完整,从最初的momo项目到现在.Net Core的,.Net的实现已经不仅仅是.Net Framework一种,它应该还包括:.Net Core 和 Xamarin。接下来,我们分别简单的谈谈这几种技术: .Net ...
  • App跨平台开发方案与取舍

    万次阅读 2017-03-31 11:10:13
    App跨平台开发方案与抉择 内心强大才敢于承认错误,但是首先你要敢于去试错。 现在做客户端开发的公司都会面临一个巨大的问题,那么就是跨平台。对于目前上市面上的移动设备来说。Android、iOS、Windows...
  • 2017年最棒的七个Python图形应用GUI开发框架

    万次阅读 多人点赞 2017-12-07 10:56:59
    GUI开发框架可供选择,Python wiki GUI programming给出了超过30个跨平台框架方案,包括Pyjamas这样的跨浏览器web开发框架。 正文共:1494字  预计阅读时间:4 分钟 作为Pyhon开发者,你迟早都会...
  • 16大跨平台游戏引擎

    万次阅读 2013-03-19 18:10:40
    1. Edgelib:2D及3D中间件游戏引擎,支持iOS、Android、Windows Phone、塞班、Mac,Linux等等平台的游戏开发。可免费使用。 2. Emo:移动游戏框架,利用Squirrel脚本语言,基于OpenGL ES及OpenAL/OpenSL开发iOS及...
  • 跨平台开发的三大界面库

    千次阅读 2015-04-26 11:06:22
    ... GTK+使用C语言开发,但是其设计者使用面向对象技术。 也提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其他的绑定有Ada、D、Haskell、PHP和所有的.NET编程语言。  GTK+
  • ios开发HTML5

    万次阅读 2012-10-16 23:09:20
    广场 登录 ...关注HTML5跨平台开发技术-博看文思HTML5小组 ...HTML5跨平台开发环境配置 ...HTML5的跨平台开发,让我不得不放弃windows系统,在两个多月前买了mac本,就目前的情况,使用html5做跨平
  • 自己非常喜欢《程序员》杂志,《程序员》杂志在一定程序上很能开阔我们的视野。因此,一直都想推荐给大家。 方便大家相互学习交流,本文转自《程序员》杂志 ... ——————————————————————————...
  • VS 2015跨平台移动开发简单感受

    万次阅读 2014-12-12 12:07:20
    当听到微软开源了.net而且.net能支持安卓和IOS开发后,很是兴奋,不过今天安装测试了一下后,有点失落。基本上没什么创新,搞了一个嘘头而已。VS 2015支持C#开发IOS和安卓有两种方式:使用cordova (以前叫做phoneGAP...
  • 移动跨平台开发一步到位

    万人学习 2019-07-18 09:52:23
    基于.NET的移动跨平台开发教程,现在!.NET 不一样了,让你一统三国! 通过Xamarin开发套件,你将可以用 Visual Studio 及 C# 开发各移动平台 (Windows/iOS/Android) 的 App,而且执行效能一样好!让使用 .NET 技术...
  • 在本文中,我们盘点了过去的一年里,...成本低、周期短,易于上手,不用重新设计,种种好处让跨平台开发风头无量,也让诸多跨平台开发工具趁势崛起。在本文中,我们盘点了过去的一年里,最受开发者喜爱的跨平台移动应用
  • 终极跨平台解决方案,开发一次全端覆盖,iOS、Android、小程序、H5都有了! uni-app专题页 :https://uniapp.dcloud.io 
  • 能够使用它来开发 Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。 将要在.NET 5 中引入新的 .NET API、运行时功能和语言功能。 .NET 5的诞生 2018 年 12 月在波士顿...
  • Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序,不须个别使用各平台的开发工具与程序语言,...
1 2 3 4 5 ... 20
收藏数 340,892
精华内容 136,356
关键字:

跨平台开发