首页 网站首页 软件开发 APP开发 查看内容

H5 手机 App 开发入门:技术篇

共生网络 2022-8-19 20:04 10565人围观 APP开发

新人进修手机 APP 开辟,一路头总要挑选一条进修途径。

假如你熟悉 Java 说话,可以进修安卓开辟;假如熟悉剧本说话(比如 Python 或 Ruby),可以进修 Swift 说话,停止 iOS 开辟;假如像我一样,比力熟悉 Web 网页技术,那末 H5 开辟是最轻易上手的。

H5 手机 App 开辟入门:技术篇


这个系列教程的第一篇,已经先容过了手机 App 的品种[1]。所谓的 H5 页面,实在就是夹杂 App 的前端,里面是一个原生的壳,里面是 Web 网页。本文紧接上一篇,先容手机 App 开辟的技术栈,特别是跟 H5 开辟相关的技术。

H5 手机 App 开辟入门:技术篇


本文由国内最大的在线教育平台之一“腾讯课堂”[2]援助。他们现在启动了“腾讯课堂101计划”[3]推行优良课程资本。希望进修和进步手机 App 开辟技术的朋友,可以留意一下本文结尾的安卓课程信息。



一、手机 App 的技术栈


手机 App 的技术栈可以分红三类。

(1)原生 App 技术栈(native technology stack)

原生技术栈指的是,只能用于特定手机平台的开辟技术。比如,安卓平台的 Java 技术栈,iOS 平台的 Object-C 技术栈或 Swift 技术栈。

这类技术栈只能用在一个平台,不能跨平台。

(2)夹杂 App 技术栈(hybrid technology stack)

夹杂技术栈指的是开辟夹杂 App 的技术,也就是把 Web 网页放到特定的容器中,然后再打包成各个平台的原生 App。所以,夹杂技术栈实在是 Web 技术栈 + 容器技术栈,典型代表是 PhoneGap、Cordova、Ionic 等框架。

假如已经把握了 Web 技术,这个技术栈就首要进修容器供给的 API Bridge,网页经过它们去挪用底层硬件的 API。

(3)跨平台 App 技术栈(cross-platform technology stack)

跨平台技术栈指的是利用一种技术,同时支持多个手机平台。它与夹杂技术栈的区分是,不利用 Web 技术,即它的页面不是 HTML5 页面,而是利用自己的语法写的 UI 层,然后编译成各平台的原生 App。

这个技术栈就是纯洁的容器技术栈,React Native、Xamarin、Flutter 都属于这一类。进修时,除了进修容器的 API Bridge,还要进修容器供给的 UI 层,即怎样写页面。

(4)小结

H5 开辟首要用在夹杂技术栈。可是,跨平台技术栈的某些容器也会用到(比如 React Native),由于它们的 UI 层鉴戒了 Web 模子。

别的,夹杂技术栈和跨平台技术栈的根本,都是原生技术栈,由于终极都要编译成原生App。所以,不管利用哪一种技术栈,多几多少方法会一些各平台的原生技术。

下面就依次先容上面三类技术栈,每个技术栈城市给出一个最简单的例子:加载网页。经过各类技术栈加载网页的分歧做法,帮助大师了解它们的特点,对 App 的技术实现有一个整体的熟悉。

二、WebView 控件


讲授具体的技术栈之前,大师需要晓得,不管什么技术,终极在 App 里面显现网页,一定需要一个网页引擎,这样才能剖析网页。

凡是情况下,App 内部会利用 WebView 控件作为网页引擎。这是系统自带的控件,专门用来显现网页。利用法式的界面,只要放上 WebView,就似乎内嵌了阅读器窗口,可以显现网页。

H5 手机 App 开辟入门:技术篇


分歧的 App 技术栈要显现网页,区分仅仅在于怎样处置 WebView 这个原生控件。

•原生技术栈:需要开辟者自己把 WebView 控件放到页面上。•夹杂技术栈:页面自己就是网页,默许在 WebView 中显现。•跨平台技术栈:供给一个 WebView 的语法,编译的时辰将其换成原生的 WebView。

留意,分歧系统的 WebView 控件称号纷歧样,安卓系统就叫 WebView,iOS 系统有较老的 UIWebView,也有较新的 WKWebView,感化都是一样的,差别在于功用的强弱。

三、原生技术栈


原生技术栈分红 iOS 和安卓两个平台。

简单说,iOS 的原生技术栈就是利用 Object-C 说话或 Swift 说话,在 Xcode 开辟情况中编程。安卓的原生技术栈,则是利用 Java 说话或 Kotlin 说话,开辟情况是 Android Studio。

下面就来看看,它们怎样加载网页。

3.1 Xcode


iOS 开辟需要安装 Xcode。它是一种集成开辟情况(IDE),也是苹果公司指定的 iOS 官方开辟工具,一切苹果手机的 App 都由它打包天生。

它可以在 Mac 电脑上经过利用商铺免费安装。留意,Xcode 只支持 Mac 系统,不支持其他系统。

H5 手机 App 开辟入门:技术篇

H5 手机 App 开辟入门:技术篇


安装完成后,翻开新建一个项目,范例是单视图 App,然后系统会询问一些项目参数和贮存位置,这里就不具体说了然。

H5 手机 App 开辟入门:技术篇

H5 手机 App 开辟入门:技术篇


然后,就进入了开辟情况。

H5 手机 App 开辟入门:技术篇


左侧的目录树里面,找到ViewController.swifter文件,它负责视图逻辑。依照官方文档[4],填入下面的代码。

H5 手机 App 开辟入门:技术篇


上面代码的意义是,启动 App 加载视图的时辰(loadView()),新建一个 WebView 控件的实例。视图加载成功后(viewDidLoad()),WebView 再去加载内部网页(红框部分)。

然后,便可以检察代码运转成果。点击工具栏的运转按钮,Xcode 就会弹出一个 iPhone 模拟器,里面就是当前代码的运转成果。

H5 手机 App 开辟入门:技术篇

H5 手机 App 开辟入门:技术篇


假如一切一般,便可以让 Xcode 对源码打包,天生 App 的二进制安装文件。

3.2 Android Studio


安卓的官方开辟工具是 Android Studio,可以去官网[5]下载。

H5 手机 App 开辟入门:技术篇


安装完成后,翻开新建一个项目,范例是“Empty Activity”。

H5 手机 App 开辟入门:技术篇

H5 手机 App 开辟入门:技术篇


Android Studio 会询问项目参数,包括项目称号、开辟说话(Java)等,然后就进入了开辟情况。由于它是基于 Java IDE 点窜的,懂 Java 的朋友应当对这个界面比力熟悉。

H5 手机 App 开辟入门:技术篇


依照网上的这篇教程[6],接下来需要点窜三个文件,其中最首要的是把MainActivity.java文件改成下面这样。

H5 手机 App 开辟入门:技术篇


上面红框处的代码,就是在页面上增加并设备 WebView 实例,指定天生视图的时辰(onCreate()),WebView 实例去加载内部网页。

运转代码之前,Android Studio 要求必须毗连真机,或安装安卓模拟器。完成今后后,在工具栏上点击运转按钮,便可以运转代码检察结果了。

H5 手机 App 开辟入门:技术篇

H5 手机 App 开辟入门:技术篇


假如一切一般,便可以让 Android Studio 打包,天生 App 的二进制安装文件。

四、夹杂技术栈


上面的原生技术栈需要自己新建 WebView 实例,相比之下,夹杂技术栈就简单多了。由于页面就是网页,所以容器已经设备好了 WebView,开辟者间接写页面即可。

4.1 框架品种


夹杂技术栈的各类容器框架当中,历史最悠久是 PhoneGap[7],诞生于2022年。后来在2011年被 Adobe 公司收买,更名为 Adobe PhoneGap。

H5 手机 App 开辟入门:技术篇


Adobe 公司将 PhoneGap 的焦点代码,后来都捐给了 Apache 基金会,作为一个全新的开源项目,名为 Apache Cordova[8]

H5 手机 App 开辟入门:技术篇


PhoneGap 和 Cordova 现在是两个自力成长的开源项目,可是相互有亲近的关系,可以简单了解成 Cordova 是 PhoneGap 的内核,PhoneGap 是 Cordova 的刊行版。

后来,其他人也起头基于 Cordova 封装自己的框架,所以市场上有很多基于 Cordova 的开源框架,比力著名的有 Ionic[9]、Monaca[10]、Framework7[11]等。

H5 手机 App 开辟入门:技术篇


一切这些框架的配合点,都是利用 Web 技术(HTML5 + CSS + JavaScript)开辟页面,再由框架别离打包成 iOS 和安卓的 App 安装包。它们的优点是开辟简单、周期短、本钱低,弱点是功用和性能都很有限。

4.2 Ionic 实例


基于 Cordova 的框架,用法都大同小异,下面就以 Ionic 为例,演示若何加载内部网页。

首先,按照官方文档[12],天生项目标脚手架。
$ npm install -g ionic@latest$ ionic start myApp blank --type=react$ cd myApp

接着翻开src/pages/Home.tsx文件,插入<iframe>标签即可。

H5 手机 App 开辟入门:技术篇


上面代码中,由于页面自己就是网页,所以可以间接用<iframe>标签插入内部网页。

然后,在本机起一个 Web 办事,看看 Demo 的结果。
$ ionic serve

上面号令会自动翻开阅读器窗口,拜候本机的8100端口,在阅读器中显现网页结果。

假如一切一般,在号令行窗口按 Ctrl+c,退出办事。编译成 App 安装包的方式可以参考官方文档[13]

五、跨平台技术栈


上面的夹杂技术栈利用 HTML 说话编写页面,再用 WebView 控件加载页面,所以只写一次页面,就能支持多个平台。跨平台技术栈也能做到多平台支持,可是道理完全分歧。

跨平台技术栈的框架,都是利用自己的语法编写页面,不利用 Web 技术,编译的时辰再将其转为原生控件,大概利用自己的底层控件,天生原生 App。这样就完全处理了 Web 页面性能欠安的题目。下面先容三个这样的框架。

•React Native: 利用 JavaScipt 说话编写页面•Xamarin:利用 C# 说话编写页面•Flutter:利用 Dart 说话编写页面


5.1 React Native


(1)道理

2022年, Facebook 公司公布了 React 框架。这个框架是为网页开辟设想的,焦点思惟是在网页之上,建立一个 UI 的笼统层,一切数据操纵都在这个笼统层完成(即在内存里面完成),然后再衬着成网页的 DOM 结构,这样就提升了性能。

很快,工程师们就意想到了,UI 笼统层本质上是一种数据结构,与底层装备无关,不但可以衬着成网页,也可以衬着成手机的原生页面。这样的话,只要写一次 React 页面,就能别离编译成 iOS 和安卓的原生 App。这就是 React Native 项目标由来。

H5 手机 App 开辟入门:技术篇


留意,React Native 虽然也利用 JavaScript 说话,而且写法看上去像 Web 页面,但实在一切控件都是自己界说的,编译时再逐一翻译为对应的原生控件。举例来说,React Native 的文本衬着控件是<Text>,翻译成 iOS 控件为UIView,翻译成安卓控件为TextView。这类做即保证了性能,又做到了跨平台支持,所以一诞生就引发开辟者的关注,成了热门技术。

还有一个 NativeScript[14]框架,跟 React Native 很像,也是利用 JavaScript 说话,然后编译成原生控件。不外,它的开辟模子是基于 Angular.js,而不是 React。

(2)实例

下面就是 React Native 加载内部网页的实例。为了方便利用,官方团队供给了一个封装好的工具集,叫做 Expo[15]。第一步,在手机安装 Expo 的 App 客户端(App Store[16],Google Play[17])。

H5 手机 App 开辟入门:技术篇


然后,在号令行安装脚手架工具expo-cli,新建一个表示项目。
$ npm install -g expo-cli$ expo init rnDemo

新建项目时,会要求你挑选项目模板,可以选minimum模板。然后,还会要求你填写项目描写displayName,这个可以随意写。

然后,安装 React Native 自己的 WebView 控件。
$ cd rnDemo$ npm install --save react-native-webview

接着,翻开主页面的剧本文件App.js,将其改成下面的代码。

H5 手机 App 开辟入门:技术篇


上面代码中,React Native 本身的WebView控件,编译时会别离转为 iOS 和安卓的原生 WebView 控件。

接下来,预览页面结果。可以先把它编译成 Web 版,在阅读器预览,这样比力快,立即就能看到结果。
$ npm run web

运转上面的号令,号令行会出现一个二维码。

H5 手机 App 开辟入门:技术篇


这时可以翻开手机真个 Expo 客户端,扫描这个二维码,就会显现 App 的页面。留意,计较机和手机必须在同一个局域网。

(3)React Native 的题目

React Native 的想法虽然很美好,可是现实开辟中出现了各类百般的题目。

最首要的一个题目是, UI 笼统层翻译出来的 iOS 和安卓原生页面,做不到完全分歧,特别是复杂页面,款式或功用存在差别。编译出来两个平台的原生 App 常常是一个一般,另一个会出现各类希奇的小毛病。React Native 的底层还是没有做到无缝适配,它至今没有公布 1.0 版(2022年末是 0.61 版),这多几多少也说了然一些题目。

假如你想用 React Native 做到 iOS 和安卓体验分歧,而且充实发挥原生控件的功用,就需要同时熟悉 React Native、iOS、安卓三个平台,这对开辟者的要务实在太高了。Airbnb 公司在利用 React Native 两年后,公布放弃,改用原生技术栈。他们写了一篇很长的文章[18],诠释为什么这么做,React Native 到底有什么题目,大师可以参考那篇文章。

5.2 Xamarin


Xamarin 是微软公司的跨平台 App 开辟框架,道理跟 React Native 很类似,只不外它的说话是 C#。

H5 手机 App 开辟入门:技术篇


它的利用需要 Visual Studio,这里就不举例了。按照官方文档[19],WebView 的用法以下。

H5 手机 App 开辟入门:技术篇


上面代码中,首先新建了一个 WebView 控件的实例,然后把这个实例放到结构上,跟原生 App 的语法很像。

5.3 Flutter


Flutter[20]是谷歌公司最新的跨平台开辟框架。它为领会决 React Native 的平台差别题目,采用了一个完全分歧的计划

它自己实现了一套控件。打包的时辰,会把这套控件打包进每一个 App,是以不存在挪用原生控件的题目。不管什么平台,都挪用内嵌的自己那套控件,就能做到 iOS 和安卓体验完全分歧。

Flutter 历史还不长,利用还不普遍,API 也没稳定下来。可是很值得关注

H5 手机 App 开辟入门:技术篇


加载内部网页的实例,可以参考 Flutter 官方团队的这篇文章[21]。焦点代码以下:

H5 手机 App 开辟入门:技术篇


上面代码利用的是 Dart 说话。它是 Flutter 的官方说话,接近 JavaScript 语法,可是多了静态范例支持。

六、总结


经过上面的先容,希望大师已经领会了各类技术栈的特点。

(1)原生技术栈的技术和体验最好,对于复杂的大型 App,假如条件答应,应当采用这类方式开辟。

(2)夹杂技术栈的本钱低,灵活性好,对性能要求不高的简单 App,特别是纯展现性的页面,可以采用这类方式开辟。

(3)跨平台技术栈适用于,存在内部或内部条件的限制,只要一个团队开辟跨平台 App 的情况。

(正文完)

安卓开辟高级 UI 课程


手机 App 的 UI(用户界面),常常是 App 成功的关键身分:产物的表面能否标致,点击和滑动能否流利,意图能否清楚,城市影响到用户的保存率。一个好的 UI 不但表现了产物司理和开辟者的本质,还可以有用下降拉新本钱。

一般的开辟者接到产物的 UI 设想计划以后,能够就会去网上找类似的结果,看看有没有开源代码。可是,优异的开辟者会尽力思考,若何经过完全自界说来实现这个结果,做到功用和性能的最好状态。

这就要求开辟者具有实现高级 UI 的开辟才能,了解安卓 UI 的底层实现道理,比如自界说 View 的衬着流程(onMeasure->onLayout->onDraw),以及交互设想(touch事务)。

怎样才能高效地进修安卓高级 UI 开辟,早日进阶成为高级安卓工程师呢?这里先容享学课堂的一门课程 《高级安卓 UI ——自界说 ViewGroup 与 UI 性能优化》,它带大师一行一行代码去实现一个京东自界说ViewGroup,研讨系统的FrameLayoutViewPager的源码,最初经过阅读源码,分析ViewPager设想进程中的显现题目和性能题目。下图是课程先容(点击看大图)。

H5 手机 App 开辟入门:技术篇


这个课程是直播课程,在线实时答疑,出格约请了 Alvin 教员(前三星/小米高级研发司理)主讲,只需要0.1元就能介入。听课以后感觉满足,还可以进修其他 Android 高级进阶的实战课程。

H5 手机 App 开辟入门:技术篇


(完)

References


[1]手机 App 的品种:http://www.ruanyifeng.com/blog/2022/12/hybrid-app-concepts.html

[2]“腾讯课堂”:https://ke.qq.com/

[3]“腾讯课堂101计划”:https://edu.qq.com/a/20220119/005414.htm

[4]官方文档:https://developer.apple.com/documentation/webkit/wkwebview

[5]官网:https://developer.android.com/studio

[6]这篇教程:https://codingislove.com/android-web-view/

[7]PhoneGap:https://phonegap.com/

[8]Apache Cordova:https://cordova.apache.org/

[9]Ionic:https://ionicframework.com/

[10]Monaca:https://monaca.io/

[11]Framework7:https://framework7.io/

[12]官方文档:https://ionicframework.com/docs/react/your-first-app

[13]官方文档:https://ionicframework.com/docs/react/your-first-app#build-a-native-app

[14]NativeScript:https://www.nativescript.org/

[15]Expo:https://expo.io/

[16]App Store:https://itunes.apple.com/app/apple-store/id982107779

[17]Google Play:https://play.google.com/store/apps/details?id=host.exp.exponent

[18]很长的文章:https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a

[19]官方文档:https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.webview?view=xamarin-forms

[20]Flutter:https://flutter.dev/

[21]这篇文章:https://medium.com/flutter/the-power-of-webviews-in-flutter-a56234b57df2

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

APP开发合作

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

一个人开发一个App

一个人开发一个App

我是从19年6月份开始写自己的App的,到目前为止,差不多一年的时间我写了10多个应用。

一个人如何开发一款app?(2020修改版)

一个人如何开发一款app?(2020修改版)

时隔2年,把这篇文章拿出来,稍作修改。本文仅从个人作为一个三流跑偏程序员的角度思

3年时间做了50个app,我的app个人开发者之路!

3年时间做了50个app,我的app个人开发者之路!

我的职业生涯我的职业生涯如图所示,这是我整个职业生涯的时间线,一目了然。我2011年

App开发、小程序开发该如何选择技术开发公司?

App开发、小程序开发该如何选择技术开发公司?

术业有专攻。一个好的开发团队对做好一款App至关重要,好的团队会有专业且标准的需求

同样的能力,为什么开发小程序要比App简单100倍?

同样的能力,为什么开发小程序要比App简单100倍?

“在红海中博杀是没有前途的,所有的成功企业都是不同的。”这是 Paypal 创始人 Peter

APP开发用什么框架最好?这5大框架,开发者必备神器

APP开发用什么框架最好?这5大框架,开发者必备神器

移动APP和小程序,是我们每天都要用到的应用程序,但你知道应用程序是怎么开发出来,

个人开发一个app持续6年是怎么样的体验

个人开发一个app持续6年是怎么样的体验

2016年中,作者高考结束。很多人都会在高考前筹划考完出去旅行,但考完却是宅在了家里

一款APP制作开发的完整流程

一款APP制作开发的完整流程

APP总的开发流程可分为三个阶段,第一个阶段是需求阶段,第二阶段是研发阶段,第三阶

创业者必读:开发一款 App 到底需要多久?

创业者必读:开发一款 App 到底需要多久?

到2022年,将会有大约3500亿的移动APP下载量,这将创造约2000亿美元的营收,因此如今

第1天 | 鸿蒙App开发实战,创建项目好详细,运行起来真美丽

第1天 | 鸿蒙App开发实战,创建项目好详细,运行起来真美丽

学一门编程语言,废话再多,都不如动手实践来得简单。走,去https://developer.harmon

APP开发费用明细

APP开发费用明细

用互联网思维改造并升级企业,是大量传统企业适应移动互联网时代的重要战略选择,而做

自己动手,从0到1开发一个App

自己动手,从0到1开发一个App

本文假定读者是想通过自己的学习和努力,从0到1去制作自己的一款APP产品。我将从独立

H5 手机 App 开发入门:概念篇

H5 手机 App 开发入门:概念篇

手机现在是互联网的最大入口。根据《中国互联网报告》,手机网民已经超过8亿,人均每

官方出品!手把手教你在华为HMS平台开发App

官方出品!手把手教你在华为HMS平台开发App

导读:HMS Core是华为面向开发者提供的开放能力合集,包括账号、支付、Push、地图等核

怎么一分钟快速开发自己的手机app

怎么一分钟快速开发自己的手机app

现在不管做什么都得有一个自己的手机app,自己花钱去开发太贵了,怎么办?自己动手,又不

9 个顶级的 JavaScript 移动应用开发框架

9 个顶级的 JavaScript 移动应用开发框架

从技术角度来讲,iOS,Android和Windows Phone上的应用是由不同的编程语言来开发的。i

App的跨平台开发,还香吗?一篇文章深入为你剖析

App的跨平台开发,还香吗?一篇文章深入为你剖析

跨平台真的香吗?曾几何时,以RN为代表的跨平台的技术一经推出。得到无数掌声。也为互

软件开发自主化:一条比拼韧性和耐性的赛道

软件开发自主化:一条比拼韧性和耐性的赛道

老陈最近有点上火。作为在杭州的一家智慧城市系统开发商,上半年接了湖北一个地级市的

技术社招!揭秘「剪映」技术团队如何从0到1打造爆款APP?

技术社招!揭秘「剪映」技术团队如何从0到1打造爆款APP?

8年前,字节跳动诞生在北京锦秋家园的居民楼,如今,我们的产品和服务覆盖150个国家和

【史上最全App开发知识】怎样从零开始成为app开发高手?

【史上最全App开发知识】怎样从零开始成为app开发高手?

本文针对小白用户对App做一个简单的介绍,介绍了App都有哪些类型,不同的类型app开发

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信