Ionic移动端开发
目录
1. 基本概念
1. 原生开发
2. H5(Web APP)开发
3. 混合(原生+H5)开发
4 . 跨平台开发
5. 深入了解混合开发
2. Ionic框架
1. 基本概念
2. 使用 Ionic CLI 创建项目
3. UI 组件库
3. Capacitor工具
1. 基本概念
2. 创建 Capacitor 项目
3. 主要功能和插件
4. Capacitor 与 Ionic的关系
4. Android Studio
5. APK打包
1. 环境准备
2. 签名文件
1. 基本概念
2. 生成签名文件
3. 打包apk
1. 基本概念
本篇主要针对移动端App开发进行介绍。目前市场上主流的移动端APP分为三种:原生APP、Web APP(即HTML5)和混合APP三种,相对应的也就是原生开发、H5开发和混合开发。
1. 原生开发
开发方式:使用设备厂商提供的原生语言和工具进行开发,比如Android的Kotlin, Java;iOS的Swift, Objective-C等。
开发工具:Xcode (iOS),Android Studio (Android)。
优点是:性能最佳,与系统的集成度高,能充分利用硬件资源(如GPS、摄像头)。
缺点是:开发时间长,成本高,可移植性差,比如同一款APP需要Android和IOS各自开发;APP版本内容更新后,用户需要手动更新App才能获取到最新数据,且App每次更新需要上传到App Store进行审核;
代表APP:微信,哔哩哔哩,抖音,移动端游戏等。可能会辅以少量H5开发以扩充功能,但对于追求性能,和硬件功能体验的部分,一定是原生APP最佳。
2. H5(Web APP)开发
开发方式:基于HTML5、CSS3和JavaScript开发的网页应用,依赖于浏览器的支持。
开发工具:VS Code,WebStorm。
优点是:支持设备范围广,能用浏览器就能访问它;开发成本低、周期短;内容样式,格式丰富;无需用户手动更新。
缺点是:受限于Web技术本身,不能直接访问硬件(如摄像头、麦克风等)和离线储存,功能,体验和性能有很大局限;对互联网要求高,离线不能做任何操作;
代表APP:微信、支付宝等应用的轻量级小程序,拼多多等电商平台的快速上线活动页面。
3. 混合(原生+H5)开发
开发方式:结合原生开发和Web技术开发,使用WebView加载网页内容,属于一种取长补短的开发模式。简单来说就是原生代码提供容器来展示web网页。
开发工具:Cordova,Capacitor,Weex。
优点是:开发效率高,节约时间,同一套代码Android和IOS基本上都可使用;版本更新无需App Store审核,只需要在服务器端升级即可,更新和部署比较方便;比web版实现功能多,可离线运行。
缺点是:加载缓慢/网络要求高,数据全部需要从服务器调取,每个页面都需要重新下载,因此打开速度慢,网络占用高,缓冲时间长;所有内容都是固定的,不能换界面或增加功能;手机系统发展迅速,不能跟好的兼容新系统,且安全性较低,也就是怕病毒。
代表APP:部分电商平台(淘宝部分页面使用H5技术嵌套),许多小型移动端APP。
4 . 跨平台开发
这是一种更广义的概念,可以包含原生APP、Web APP和混合APP的某些特点,但它本身并不是单独的第四种分类,而是通过特定的技术和工具实现一次开发,多端适配的一种开发策略。
典型的移动端跨平台开发框架,如:
原生APP中的,Flutter(基于Dart语言),React Native(基于JavaScript),Xamarin(基于C#)
混合APP中的,Ionic(基于HTML5/CSS/JavaScript)。
Web APP则天生带有跨平台的特性。
5. 深入了解混合开发
目前混合开发有两种开发模式:
原生主导的开发模式:需要安卓和IOS原生开发人员,整个App既有原生开发的页面,也有H5页面,在需要H5页面时由原生开发工程师实现内嵌。
H5主导的开发模式:只需要H5开发工程师,借助一些封装好的工具实现应用的打包与调用原生设备的功能,如HBuilder的云端打包功能。
2. Ionic框架
1. 基本概念
Ionic 是一个开源的跨平台前端框架,用于构建高性能移动应用 和 PWA(渐进式 Web 应用)
官网地址: Ionic 中文网 中文网地址:Ionic 中文网
核心特性 | 描述 |
基于Web技术开发 | 使用 HTML、CSS、JavaScript 等技术进行应用开发 |
跨平台支持 | 一次编写,运行于 iOS、Android、Web 和桌面平台 |
UI 组件 | 自带兼容移动设备的原生APP风格 UI 组件 |
兼容主流前端框架 | 支持使用 Vue、React 和 Angular 等现代框架进行开发,同时也支持原生 JavaScript |
与 Capacitor 深度集成 | 默认使用 Capacitor 作为原生功能桥梁,可以轻松访问设备功能 |
高性能 | 使用 Shadow DOM 和 虚拟滚动 等技术,确保在移动设备上的流畅体验 |
响应式设计 | 提供移动端和桌面端友好的布局和样式支持 |
总结:Ionic框架可以将vue等框架或原生JS开发的web应用构建成移动应用,Ionic组件库提供了 兼容移动端的的样式组件Ionic框架与 Capacitor 深度集成 ,通过它让web技术开发的应用获得访问硬件资源的能力
Ionic 与其他框架的比较
特性 | Ionic | React Native | Flutter |
语言 | HTML、CSS、JavaScript/TypeScript | JavaScript/TypeScript | Dart |
UI 渲染 | 基于 WebView | 原生组件 | Skia 渲染引擎 |
跨平台支持 | iOS、Android、Web | iOS、Android | iOS、Android、Web(Beta) |
性能 | 接近原生 | 原生 | 接近原生 |
学习成本 | 较低,基于 Web 技术 | 中等,需要熟悉 React | 较高,需要学习 Dart 语言 |
PWA 支持 | 原生支持 | 需手动配置 | 需手动配置 |
2. 使用 Ionic CLI 创建项目
下面是基于vue框架的示例,其他框架,请查看官方文档
1. 安装 Ionic CLI
#Ionic 提供了一个强大的命令行工具,用于创建和管理项目。
npm install -g @ionic/cli
2. 创建项目
#Ionic CLI 支持与不同前端框架结合。以下是基于 Vue 的示例:
ionic start myApp --type=vue
3. 运行应用
# 切换到应用
cd .\myApp
#在浏览器中调试:
ionic serve
打开浏览器仿真设备调试:
3. UI 组件库
- Button(按钮)
- Card(卡片)
- Modal(模态框)
- Toast(轻提示)
- Tabs(标签页)
- Segment(分段控制)
- Grid(网格布局)
- Infinite Scroll(无限滚动)
建议,跟随官方文档学习, ion-action-sheet: Action Sheet Dialog for iOS and Android注意:和移动设备的适配性,是 Ionic组件最重要的作用。
3. Capacitor工具
1. 基本概念
Capacitor 是由 Ionic 团队开发的一个跨平台工具,可以帮助开发者使用 Web 技术来构建 原生移动应用、PWA(渐进式 Web 应用) 和 桌面应用。
Capacitor 被设计为现代化的 Web 原生桥梁,它允许开发者将 Web 应用程序部署到不同的平台,同时访问原生设备功能,比如摄像头、文件系统和推送通知等硬件资源。
官方网址:Capacitor - Cross-platform Native Runtime for Web Apps | Capacitor Documentation
核心特性 | 说明 |
---|---|
跨平台支持 | 支持 iOS、Android、Web 和 桌面(Electron) |
应用类型 | 可构建为 PWA 和 本地应用 |
插件系统 | 提供一套原生插件(如 相机、地理定位、存储等),支持 自定义插件开发 |
与框架无关 | 可与 Vue、React、Angular 或 纯 JavaScript 搭配使用 |
深度集成 | 与 Ionic 框架 深度集成,但 不依赖于 Ionic |
本地代码访问 | Web 代码可以直接调用原生平台代码(Java/Kotlin、Objective-C/Swift) |
Capacitor 与 Cordova 的区别
特性 | Capacitor | Cordova |
开发体验 | 更现代化,支持热重载和 TypeScript | 开发体验较传统,缺少现代工具支持 |
插件系统 | 官方插件库,插件管理更灵活,可直接使用 Native API | 插件多,但部分插件质量不高,可能出现兼容性问题 |
框架依赖 | 不依赖特定框架 | 主要与 Angular 或独立使用 |
PWA 支持 | 内置支持,构建一次即可同时生成 PWA | 需要手动配置和优化 |
原生支持 | 更容易集成原生代码,支持直接编写原生插件 | 支持原生代码,但插件开发较繁琐 |
2. 创建 Capacitor 项目
1. 创建项目
可以直接创建新项目,或者将现有 Web 项目添加 Capacitor 支持。
npm i @capacitor/core # 核心依赖
npm i -D @capacitor/cli # CLI 工具#或创建新项目
npx cap init [appName] [appId] 例如:
* appId: com.example.myapp 应用的唯一标识符。
* appName: 应用名称 MyApp
注意 :如果你是使用Ionic CLI创建的项目,则可直接跳过这一步。
ionic cil在创建项目时,已经帮我们安装好了这部分依赖
2. 添加平台
添加目标平台(iOS、Android、Web)
npm i @capacitor/android @capacitor/ios # Android/ios 平台支持的官方包npx cap add android # 添加Android平台
npx cap add ios # 添加Android平台
这一步之后会在项目目录下生成一个android目录
3. 构建与同步
构建 Web 代码并将其同步到目标平台
ionic build #打包
npx cap sync #代码同步
注意打包指令,如果你用pnpm,npm包管理器进行打包,有可能会出现以下错误,
vue-tsc 与某些依赖(比如 TypeScript、Vue 或 Vite)版本不兼容
4. 运行
在模拟器或真机上运行,需要先下载Android Studio这样的开发和测试移动应用的工具,
见下方 “4. Android Studio”
npx cap open ios
npx cap open android # 在 Android Studio 中打开
3. 主要功能和插件
1. 核心 Capacitor 插件
-
Camera: 访问设备相机。
-
Geolocation: 获取设备位置信息。
-
Storage: 本地存储键值对数据。
-
Filesystem: 访问设备文件系统。
-
Network: 检测网络状态变化。
-
Push Notifications: 实现推送通知。
2. 自定义插件
-
开发者可以根据需求自定义插件,用以访问更复杂的原生功能。
3. 集成原生 SDK
-
Capacitor 支持直接集成平台原生的 SDK(例如 Firebase、支付 SDK)。
建议:跟随官方文档学习:Capacitor Plugins | Capacitor Documentation
4. Capacitor 与 Ionic的关系
- Ionic 提供前端 UI 组件。
- Capacitor 提供与设备功能(如相机、GPS)的集成。
4. Android Studio
下载地址:下载 Android Studio 和应用工具 - Android 开发者 | Android Developers
关于 “提示Error running app:No target device found ” 错误的解决方案
这是因为没有开启虚拟设备(模拟器)
找到添加模拟器界面,按照需求创建一个新的虚拟设备
然后按需下载安卓版本
5. APK打包
1. 环境准备
除了上介绍的面的Ionic 和 Capacitor,android-studio还需要
下载 gradle: 项目自动化构建的工具,地址: Gradle |安装Gradle |安装
下载 jdk :Java开发工具包(打包环境需要)地址:Java Downloads | Oracle
2. 签名文件
1. 基本概念
所有的 Android 应用程序都要求开发人员用一个证书进行数字签名,Android 系统不会安装没有进行签名的程序。
在 Android 开发中,给 APK 文件签名带来以下主要好处:
- 无缝升级:应用程序必须使用相同的证书签名才能进行无缝升级,否则会被视为全新应用。
- 应用模块化:Android 系统允许使用相同签名证书的多个应用在同一进程中运行,并将它们视作单个应用程序,如此便可实现模块化部署,而用户也可以独立的升级其中的一个模块。
- 数据/代码共享:使用相同证书签名的应用可以通过基于Android 签名的权限机制共享数据和代码,提升应用间的协同。
签名证书是确保应用安全性、升级流畅和模块化共享的关键。
2. 生成签名文件
打开终端,运行下面的代码,查看JDK配置是否正确
java -version
keytool -version
在终端运行 keytool
命令生成 KeyStore 文件(注意,这个文件会在当前目录下生成)
keytool -genkeypair -v -keystore my-release-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
命令解释:
- -genkeypair:生成密钥对。
- -v:启用详细模式,显示更多信息。
- -keystore:指定 KeyStore 文件的名称和路径,这里是 my-release-key.keystore。
- -keyalg RSA:指定密钥算法为 RSA(用于生成公钥和私钥)。
- -keysize 2048:密钥长度设置为 2048 位。
- -validity 10000:密钥有效期设置为 10000 天。
- -alias my-key-alias:指定密钥别名,用于区分不同的密钥。
输入命令后按照系统要求输入信息,完成后会在当前目录下生成一个my-release-key.keystore文件,也就是Android Apk 打包需要的签名文件。
3. 打包apk
方式1
在顶栏菜单选择build -> Generate Signed Bundle / APK...
然后进入到下面这个窗口
next下一步,按照要求,选择签名文件,输入签名文件密钥,APK密钥。
key alias点开文件夹 , 后直接点OK就行。
next下一步,如果只是想打个调试包,装在手机上调试,可以选择debug选项。
如果是要发布应用,选择 release 选项。然后点击 Finish。
然后创建app,等待一会儿,右下角会弹出提示框,点击lacate,可以定位到APK位置
注意!!本章只是结合官方文档对相关知识进行一个对初学者较为友好的总结,同时也作为笔记的备忘笔记。
由于前端的技术和文档迭代速度很快,博客,甚至中文网的内容有很大概率会滞后,所以,建议参考官方最新文档进行学习。
如果我的文章对你有帮助,你的赞👍就是对我的最大支持^_^,共勉💪💪💪