TalkingData 张永超 译
书名镜像:
https://instabug.com/blog/cross-platform-development/?utm_source=reddit&utm_medium=social&utm_content=cross_platform_development在现如今的电子零件当今世界之中,运转着各种类型作业系统,怎样让应用领域互联网相连每一作业系统互联网平台,是合作开发人员们始终在思索的难题。即使互联网平台、控制技术、辅助工具的有多元性,让互联网相连显得至极的十分困难与繁复,即使须要耗费大批的天数和资本金去展开科学研究。责任编辑将如是说现阶段较为盛行的能合作开发虚拟化应用领域的应用软件,期望能协助合作开发人员们同时实现全互联网平台全面覆盖。
责任编辑极短,当中大批天然资源邮箱值得称赞珍藏!
终端应用领域合作开发简述
Web应用领域
Web应用领域是运转在页面上并储存在控制台伺服器上的应用领域,这类应用领域透过电子零件设备上的页面应用程序读取与展现。
即使在这类情况下页面应用领域运转较好,但仍难以防止会再次出现许多难题,比如说须要相连到互联网就能在电子零件设备上运转,即使所需的天然资源仍未储存在邻近地区电子零件设备上,而要在控制台伺服器上。除此之外,这类应用领域难以在终端零售店上间接采用,导致系统极难找出和浏览采用。
Hybrid虚拟化应用领域
Hybrid应用领域又称为混合应用领域,这类应用领域基本上采用每一互联网平台的应用程序内置组件展开包装和打包,以达到在每一互联网平台上运转的目的,应用领域就像该互联网平台上的Native应用领域一样。混合应用领域主要采用的语言为HTML5、JavaScript和CSS。
混合虚拟化应用领域解决了Web应用领域面临的难题,即使混合应用领域在邻近地区运转时无需互联网相连,而且还能在应用领域零售店上发布,能让用户轻松找出,从而增强应用领域的可发现性、增加用户量等。
混合虚拟化应用领域合作开发辅助工具:Apache Cordova、Ionic、Adobe PhoneGap等。
Native应用领域
原生应用领域是为了在特定互联网平台或作业系统上工作而合作开发的应用领域。
对于iOS来说,合作开发人员采用的是Swift或Objective-C编写iOS应用领域,而对于Android来说,合作开发人员采用的是Java或Kotlin编写Android应用领域。从终端应用软件来看,iOS合作开发人员经常采用Apple的Xcode或者第三方的AppCode等辅助工具,而Android合作开发人员经常采用Android Studio作为它们的主力合作开发IDE。
Native 虚拟化应用领域
原生虚拟化辅助工具允许合作开发人员编写一次代码,然后将该代码转换为互联网相连多个作业系统的邻近地区代码,让合作开发人员以最小的成本在不同的互联网平台上发布终端应用领域。原生虚拟化应用领域是混合应用领域和邻近地区应用领域的完美结合,不仅提供了混合应用领域的代码重用功能,而且性能也与邻近地区应用领域类似。
原生虚拟化应用领域应用软件:React Native、Xamarin、Titanium等。
虚拟化终端应用领域合作开发
虚拟化终端应用领域合作开发是创建能采用单个代码库,在多个互联网平台上部署或发布的终端应用领域合作开发过程,虚拟化终端应用领域合作开发无需采用每一互联网平台的对应的邻近地区控制技术去展开多次合作开发。
虚拟化合作开发有以下优点:
可重用代码:虚拟化应用软件允许只编写一次代码,然后将代码导出到须要操作的系统和互联网平台上,无需为每一互联网平台单独编写创建代码;
便利性:虚拟化应用软件能省去学习许多编程语言的麻烦,合作开发人员只须要理解领会一种语言即可;
可维护代码:当须要修改或更新应用领域时,合作开发人员只需更新一个代码库,就能将更新同步反映在互联网平台所有的应用领域上;
成本效率:虚拟化合作开发能让单个合作开发团队能在多个互联网平台上进行工作,且大多数的虚拟化应用软件都是免费的。
市场全面覆盖率:透过多互联网平台发布应用领域,能让其增加曝光量,提升用户基数,从而提高投资回报率和经济利益。
虽然虚拟化应用软件拥有很多优势,但在这类场景下的缺点也相当明显:
性能:即使许多虚拟化应用软件提供了接近邻近地区应用领域的性能,但仍有不足,如果所合作开发的应用领域属于最高优先级,不建议采用虚拟化应用软件。
3D和图形:与性能上的缺点类似,虚拟化应用软件难以提供最佳图形和最佳的用户体验,且难以访问核心OS库(如图形),如果所合作开发的应用领域严重依赖于图形,比如说终端游戏类应用领域就不建议采用虚拟化应用软件。
单互联网平台应用领域:如果所合作开发的应用领域尽在单一互联网平台(如iOS或Android)上发布,那么还是应该采用邻近地区合作开发的应用领域,在这种场景下,只须要一个团队采用一种控制技术即可,没有必要去损失性能。
特定与互联网平台的功能:虽然虚拟化应用软件提供了不同互联网平台之间共享的许多基本功能,但它们可能缺少Apple、Google和Microsoft的作业系统上提供的这类特定功能。
特定与电子零件设备的功能:虚拟化应用软件能让合作开发人员访问的不同功能,如相机或GPS,但如果所合作开发的应用领域须要间接访问和处理电子零件设备的硬件,邻近地区合作开发应用领域是更好的选择。
更新延迟:在许多特定互联网平台发布更新时,可能须要等一段天数就能在所有互联网平台应用软件中反应这些更新。
虚拟化合作开发控制技术栈
虽然虚拟化应用软件能协助合作开发人员节省学习不同控制技术的天数和工作量,但仍然须要熟练掌握每种辅助工具,采用的控制技术有:
React Native:JavaScript(JSX)、ES6、React.JS
Xamarin: C#
Cordova: HTML、CSS 、JavaScript
常用虚拟化应用软件
Ionic
地址: https://ionicframework.com/Adobe PhoneGap
地址: https://phonegap.com/Titanium
地址:
https://www.appcelerator.com/Titanium/Framework7
地址: http://framework7.io/Apache Weex
地址: https://weex.apache.org/Flutter
地址:https://flutter.io/Native Script
地址: https://www.nativescript.org/Jasonette
地址: http://jasonette.com/ManifoldJS
地址: https://github.com/pwa-builder/ManifoldJS三大主流虚拟化应用软件
React NativeReact Native是由Facebook基于其React JavaScript库创建的虚拟化邻近地区终端应用领域合作开发框架。主要采用JavaScript与JSX(JavaScript的扩展),ES6(ECMAScript 6),JavaScript的主要更新(包括许多新功能)和React.JS(用于构建用户界面的JavaScript库)。
React Native允许合作开发人员采用React Native组件构建终端应用领域,然后再将其编译为邻近地区应用领域,这些应用领域几乎与采用邻近地区辅助工具编写的应用领域完全相同。
React Native的优点采用React Native展开虚拟化终端应用领域合作开发的优点包括:
可重用代码:可合作开发应用领域并从单个代码库将其导出到多个互联网平台上。
应用领域零售店: 可以在各个互联网平台的应用领域零售店中发布应用领域。
性能:React Native可将应用领域编译为邻近地区应用领域,这与采用邻近地区辅助工具创建的应用领域几乎完全相同,使其比要在特定于互联网平台的Web组件中运转代码的混合应用领域更快。
邻近地区UI组件:React Native允许合作开发人员采用React Native UI组件创建视图,这些组件被编译为特定于互联网平台的UI组件,与采用HTML标记的其他虚拟化辅助工具不同。透过现成的组件,能节省大批的天数。
热重新读取:React Native中提供一项允许更改代码在iOS和Android应用领域中立即生效的功能,能展开可视化更改。
测试:调试React Native应用领域非常容易,即使它发布了邻近地区应用领域版本,能采用Expo这样的辅助工具在物理电子零件设备上展开测试,无需在Xcode或Android Studio中打开它们。
邻近地区代码:与大多数其他虚拟化应用软件不同,React Native允许合作开发人员单独修改已发布的邻近地区应用,它能选择在React Native代码和邻近地区代码之间展开组合,无论是Swift,Objective-C,或者是Java。如果想采用特定于互联网平台的代码为不同互联网平台同时实现单独的可视组件,就非常有用。
可靠性:React Native由Facebook创建,许多当今世界顶级终端应用领域都在采用React Native,比如说Facebook,Instagram,SoundCloud和Skype。
免费:开源。
React Native的缺点
虽然React Native是现阶段最好的虚拟化应用软件之一,但React Native仍然具有许多缺点:
新控制技术:学习JSX和ECMAScript并不是一件容易的事,可能比其他熟悉的控制技术(如HTML和CSS)要耗费更多天数。
原生UI组件:虽然UI组件是React Native的最大优势之一,但现阶段只有少数几种现成的可用。
邻近地区代码:在这类情况下,合作开发人员可能须要在终端应用领域中编写邻近地区或互联网平台特定的代码,特别是如需访问电子零件设备硬件(如相机或GPS),会破坏虚拟化合作开发的目的,对小型团队来说React Native的作用不大。
性能:虽然与大多数其他虚拟化合作开发框架相比,React Native在性能方面表现优异,但比起采用特定于互联网平台的辅助工具和语言的邻近地区应用领域展开合作开发来说仍有不足。
React Native 应用软件Atom
地址: https://atom.io/Nuclide
地址: https://nuclide.io/Visual Studio Code
地址: https://code.visualstudio.com/React Native Tools
地址:
https://marketplace.visualstudio.com/items?itemName=vsmobile.vscode-react-nativeReact Native 合作开发组件Redux
地址: https://redux.js.org/Expo
地址: https://expo.io/Ignite
地址: https://infinite.red/igniteFlow
地址: https://flow.org/ESLint
地址:https://eslint.org/ReduxSauce
地址:
https://github.com/infinitered/reduxsauceReact Native UI组件Snowflake
地址:
https://github.com/bartonhammond/snowflakeNativeBase
地址: https://nativebase.io/React Native 测试辅助工具Enzyme
地址:
https://github.com/airbnb/enzymeReactotron
地址: https://infinite.red/reactotronInstabug
地址:
https://instabug.com/?src=InstabugBlog&mdm=internal&ref=cross_platform_development&term=instabugXamarinXamarin是一个虚拟化的终端应用领域合作开发框架,由微软基于Mono(一个免费的开源.NET框架),采用C#创建邻近地区应用领域。
Xamarin 优点Xamarin虚拟化终端应用领域合作开发具有多个优势,包括:
可重用代码:合作开发应用并从单个代码库将其导出到多个互联网平台上。
应用领域零售店:能在各个互联网平台的应用领域零售店中发布应用领域。
完整的合作开发堆栈:许多合作开发人员认为Xamarin是最完整的虚拟化终端应用领域合作开发框架。拥有自己的专用堆栈,C#作为编程语言;Visual Studio作为IDE,与Xamarin完全集成;.NET作为合作开发互联网平台;Xamarin测试云展开测试;以及Xamarin.Insights用于分析。
性能:Xamarin在性能方面也几乎与邻近地区应用领域相同。 Xamarin比混合应用领域更快,即使混合应用领域要在特定于互联网平台的Web组件中运转代码。
邻近地区UI组件:采用Xamarin Native UI组件创建视图,这些组件透过Xamarin.Forms编译为特定于互联网平台的UI组件,Xamarin.Forms包含面向.NET合作开发人员的完整虚拟化UI辅助工具包,或能透过Native UI合作开发。
插件和API:Xamarin提供了一组允许访问硬件功能的插件和API。它还支持透过镜像邻近地区库展开自定义。 测试:透过在物理电子零件设备上安装Xamarin.Forms Live Player应用领域,合作开发人员能采用实时预览立即测试和调试应用领域,并能实时同步应用领域与电子零件设备。
可靠性:Xamarin于2016年被微软收购,截至现阶段,已在120多个国家/地区拥有超过140万名合作开发人员。所以它绝对可靠且拥有较好的维护。
Xamarin大学:Xamarin提供由Xamarin专家指导的实时、互动的终端合作开发培训,涵盖10个方面的80多个课程,让合作开发人员能轻松地学习。
免费:开源。
Xamarin 缺点虽然Xamarin能应用领域许多场景,但它也是有许多缺点的:
应用领域大小:通常已知Xamarin应用领域大小比邻近地区应用领域更大,因此在内存管理方面不是很理想。
更新延迟:Xamarin的更新天数有时会比互联网平台的更新更慢,无论是新功能的迭代还是其他,因此可能会导致应用领域再次出现许多难题。
邻近地区代码:当采用Xamarin.iOS或Xamarin.Android合作开发具有原生外观的终端应用领域时,将须要许多邻近地区语言的基本知识,如Objective-C、Swift和Java。
图形:虽然Xamarin采用单个代码库为多个互联网平台构建应用,但它主要在互联网平台之间共享代码逻辑,而UI组件又是特定于互联网平台的。这使得Xamarin并不适合严重依赖图形的应用领域,比如说手机游戏。
Xamarin应用软件Visual Studio
地址:
https://visualstudio.microsoft.com/vs/mac/XCode
地址:
https://developer.apple.com/xcode/Xamarin 合作开发组件NuGet
地址: https://www.nuget.org/Xamarin Inspector
地址:
https://docs.microsoft.com/zh-cn/xamarin/tools/inspector/install?tabs=windowsPrism
地址:
https://github.com/PrismLibrary/PrismMFractor
地址: https://www.mfractor.com/Resharper
地址:
https://www.jetbrains.com/resharper/Xamarin 测试辅助工具NUnit
地址: http://nunit.org/xUnit.net
地址: https://xunit.github.io/Visual Studio Unit Testing Framework
地址:
https://docs.microsoft.com/zh-cn/visualstudio/test/writing-unit-tests-for-the-dotnet-framework-with-the-microsoft-unit-test-framework-for-managed-code?view=vs-2015Instabug
地址:
https://instabug.com/?src=InstabugBlog&mdm=internal&ref=cross_platform_development&term=instabugApache CordovaApache Cordova是一个虚拟化的终端应用领域合作开发框架,用于采用包括HTML,CSS和JavaScript在内的Web技术,构建混合终端应用领域。
Apache Cordova 优点采用Apache Cordova展开虚拟化终端应用领域合作开发的许多优势包括:
可重用代码:能合作开发应用领域并从单个代码库将其导出到多个互联网平台上。
应用领域零售店:能在各个互联网平台的应用领域零售店中发布应用领域。
多互联网平台支持:Apache Cordova支持大多数合作开发人员所采用的终端互联网平台和作业系统,包括Android,iOS,Windows 8.1,iPhone 8.1和10,OS X,几乎能全面覆盖所有终端用户。
大批插件:Cordova提供各种插件。
所用控制技术:Cordova不是一种编程语言,因此合作开发人员能采用已知的Web控制技术(如HTML,CSS和JavaScript)展开应用领域开发。还能采用自身熟悉的辅助工具,包括所采用的编辑器。
免费:开源。
Apache Cordova 缺点和任何虚拟化终端应用领域应用软件一样,Cordova也缺点,包括:
性能:采用Apache Cordova创建的终端应用领域,会因性能难题而受到影响,即使它是一种混合的虚拟化终端应用领域应用软件。
应用软件:由于Apache Cordova采用HTML,CSS和JavaScript等Web控制技术,因此用于Apache Cordova的大多数应用软件都针对Web合作开发展开了优化,而非终端应用领域合作开发。
测试:在Apache Cordova中调试代码会较为繁琐,虽然能采用应用软件修复任何代码上的bug,但须要采用特定于互联网平台的工具来修复特定互联网平台中发生的难题。
控制技术:即使合作开发人员可能熟练掌握了HTML,CSS和JavaScript等互联网控制技术,但仍须要具备Web和终端应用领域的经验就能创建Cordova终端应用领域。
支持的互联网平台:Cordova多年来已经弃用了许多支持的互联网平台,包括BlackBerry,Firefox OS,Symbian,Ubuntu Touch,webOS,Windows Phone 8.1和Windows Phone 10.虽然Cordova可能极难弃用iOS和Android,但仍然难以保证它继续支持任何其他当前所有互联网平台。
更新延迟:Cordova的更新天数有时会比互联网平台的更新更慢,无论是新功能的迭代还是其他,因此可能会导致应用领域再次出现许多难题。
插件:虽然Cordova提供了比其他任何虚拟化应用软件中都多的插件,但它仍然难以与本机终端应用领域应用软件相比。
Apache Cordova 框架Adobe PhoneGap
地址:https://phonegap.com/Monaca
地址: https://monaca.io/Onsen UI
地址: https://onsen.io/Cocoon
地址: https://cocoon.io/Framework7
地址: http://framework7.io/Evothings Studio
地址: https://evothings.com/Mobiscroll
地址: https://mobiscroll.com/Apache Cordova IDESVisual Studio
地址:
https://visualstudio.microsoft.com/zh-hans/vs/features/cordova/Cordova Tools Visual Studio Extensions
地址:
https://marketplace.visualstudio.com/items?itemName=vsmobile.cordova-toolsApp Builder
地址:
https://www.davidesperalta.com/appbuilderNSB/AppStudio
地址: https://www.nsbasic.com/Apache Cordova CLISCordova CLI
地址:
https://github.com/apache/cordova-cliNode.js
地址:https://nodejs.org/en/NPM
地址:
https://www.npmjs.com/package/cordovaCordova Plugman
地址:
https://github.com/apache/cordova-plugmanCordova Coho
地址:
https://github.com/apache/cordova-cohoApache Cordova 类库Apache Cordova JS
地址:
https://github.com/apache/cordova-jsApache Cordova Lib
地址:
https://github.com/apache/cordova-libApache Cordova Common
地址:
https://github.com/apache/cordova-commonApache Cordova Create
地址:
https://github.com/apache/cordova-createApache Cordova Fetch
地址:
https://github.com/apache/cordova-fetchApache Cordova Serve
地址:
https://github.com/apache/cordova-serve Apache Cordova 测试辅助工具Apache Cordova Plugin Test Framework
地址:
https://github.com/apache/cordova-plugin-test-frameworkApache Cordova Paramedic
地址:
https://github.com/apache/cordova-paramedicApache Cordova Mobile Spec Suite
地址:
https://github.com/apache/cordova-mobile-specInstabug
地址:
https://instabug.com/?src=InstabugBlog&mdm=internal&ref=cross_platform_development&term=instabug总结
虚拟化应用软件在合作开发周期中能为合作开发人员节省大批的天数,并能采用最少的天然资源在不同的互联网平台上发布应用领域,最大程度的去全面覆盖用户。但即使如此,它也难以替代邻近地区合作开发应用领域的替代品,鱼和熊掌不可得兼,须要根据自身实际情况与场景去衡量利弊。
怎样确定最适合的虚拟化应用软件呢?最好的方法就是每一辅助工具都去尝试一遍,如果天数有限,那么对许多顶级虚拟化合作开发工具展开科学研究就足够了,比如说责任编辑例举的这些,期望对您有用。