鸿蒙开发入门:快速修复命令行调试开发指导

2023-12-16

快速修复命令行调试开发指导

当前阶段,HarmonyOS为开发者提供了命令行的调试开发工具可供使用。比如,包名为com.ohos.quickfix的示例应用,版本号为1000000。该应用的当前版本运行中有某问题需要修复,此时,开发者可参考如下指导使用快速修复能力解决应用问题。

编写配置文件patch.json

目前DevEco Studio中还不支持patch.json的配置,因此开发者可根据项目需要编写好该文件后,放到的项目任意目录,方便后续打包工具能够找到该文件即可。在本地新建一个patch.json文件,配置编写示例如下:

{    "app" : {        "bundleName" : "com.ohos.quickfix",        "versionCode" : 1000000, // 应用版本号        "versionName" : "1.0.0.1",        "patchVersionCode" : 1000000, // 补丁版本号        "patchVersionName" : "1.0.0.1"    },    "module" : {        "name" : "entry",        "type" : "patch",        "deviceTypes" : [            "default",            "tablet"        ],        "originalModuleHash" : "11223344556677889900" // 待修复hap包的sha256值,可采用SHA256生成器自行生成    }}

生成快速修复文件

快速修复TS文件的代码

  • 在DevEco Studio中修改TS文件后,编译HAP,可以在工程目录下找到对应的abc文件,如build\default\cache\default\LegacyCompileETS\jsbundle\temporary\pages\index.abc。

快速修复C++中的代码

  • 在DevEco Studio中编译原C++的代码生成.so文件;修复原C++的代码,编译生成新的.so文件。可以在工程目录中找到该so,如build\default\intermediates\libs\default\arm64-v8a\libentry.so。

  • 在本地HarmonyOS SDK路径的toolchains文件夹下查看diff.exe。通过该工具,基于新.so文件和旧的.so文件,生成.so的快速修复文件,命令如下:

    $ diff.exe -s Example.z.so -d Example.z.so -p Example.z.so.diff
    

    命令行参数含义:

  • -s:旧so的路径

  • -d:新so的路径

  • -p:生成的差分文件的路径

生成.hqf的快速修复包

基于上述的patch.json、.abc快速修复文件和.so快速修复文件,可以通过本地HarmonyOS SDK路径的toolchains文件夹下的app_packing_tool.jar生成.hqf包,执行打包命令如下:

$ java -jar app_packing_tool.jar --mode hqf --json-path patch.json --lib-path libs --ets-patch patchs --out-path entry-default-unsigned.hqf --force true

命令行参数介绍:

命令 说明 备注
mode 模式 必选
json-path patch.json路径 必选
lib-path .so快速修复文件路径,该路径可参考 快速修复包结构 可选
ets-path .abc快速修复文件路径 可选

快速修复包的签名

签名与hap签名相同,将上述生成的entry-default-unsigned.hqf包,通过签名工具进行签名。可以使用本地HarmonyOS SDK路径的toolchains文件夹下的hap-sign-tool.jar,命令如下:

$ java -jar hap-sign-tool.jar sign-app -keyAlias "HarmonyOS Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "HarmonyOSApplication.pem" -profileFile "ohos_provision_release.p7b" -inFile "entry-default-unsigned.hqf" -keystoreFile "HarmonyOS.p12" -outFile "entry-signed-release.hqf" -keyPwd "123456" -keystorePwd "123456"

安装快速修复包

将上述entry-signed-release.hqf包推送到设备上

hdc.exe file send .\entry-signed-release.hqf /data/

在设备上通过下述命令行安装补丁包

$ bm quickfix -a -f /data/entry-signed-release.hqf

快速修复相关完整命令行参考如下:

$ bm quickfix -husage: bm quickfix <options>options list:-h, --help                                   list available commands-q, --query                                  indicates query quickfix, used with -b or --bundle-name-b, --bundle-name <bundle-name>              query quickfix status and information by a specified bundle name-a, --apply                                  indicates apply quickfix, used with -f or --file-path-f, --file-path <file-path>                  apply a quickfix file by a specified path-f, --file-path <file-path> <file-path> ...  apply some quickfix files of one bundle-f, --file-path <bundle-direction>           apply quickfix files by direction, under which are quickfix files

最后

这里整理了一份《鸿蒙零基础入门学习指南》,希望能对那些想要学习鸿蒙,但是有没有方向的人提供一点帮助。本文档适用于HarmonyOS应用开发的初学者(由于文档内容过多,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的看文末有免费的获取方式!)

《鸿蒙零基础入门学习指南》

目录

在这里插入图片描述

一、快速入门

适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用,快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。

  • 开发准备
    • 基本概念
    • 工具准备
  • 构建第一个ArkTS应用(Stage模型)
  • 构建第一个ArkTS应用(FA模型)
  • 构建第一个JS应用(FA模型)

在这里插入图片描述

二、开发基础知识

  • 应用程序包基础知识
    • 应用程序包概述
    • 应用程序包结构
    • 应用程序包多HAP机制
    • 应用程序包安装和卸载流程
    • 应用程序包更新流程
    • 共享包
    • 应用程序包快速修复
  • 应用配置文件(Stage模型)
    • 应用配置文件概述(Stage模型)
    • app.json5配置文件
    • module.json5配置文件
  • 应用配置文件概述(FA模型)
    • 应用配置文件概述(FA模型)
    • app对象内部结构
    • deviceConfig内部结构
    • module对象内部结构

在这里插入图片描述

三、资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。

  • 资源分类与访问
    • 资源分类
    • 资源目录
    • 资源组目录
  • 创建资源目录和资源文件
    • 创建资源目录和资源文件
    • 创建资源目录
    • 创建资源文件
  • 资源访问
    • 应用资源
    • 系统资源
    • 资源匹配
      在这里插入图片描述

四、学习ArkTs语言

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在 TypeScript (简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语言开发能力。

  • 初识ArkTS语言
  • 基本语法
    • 基本语法概述
    • 声明式UI描述
    • 自定义组件
  • 状态管理
  • 其他状态管理
    • 其他状态管理概述
    • @Watch装饰器:状态变量更改通知
    • $$语法:内置组件双向同步
  • 渲染控制
    • 渲染控制概述
    • if/else:条件渲染
    • ForEach:循环渲染
    • LazyForEach:数据懒加载

在这里插入图片描述

扫描下方二维码免费领取,《鸿蒙5.0零基础入门学习指南》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

鸿蒙开发入门:快速修复命令行调试开发指导 的相关文章

  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • 如何使用 Google Maps for Android V2 处理地图移动结束?

    我想在地图中心更改后立即对地址进行地理编码 如何使用新的 Android 版 Google 地图 V2 处理地图移动 我说的是用户用手指拖动地图的情况 查看新的地图 API Override public void onMapReady G
  • Android应用程序组件销毁和重新创建的详细信息

    有人可以向我提供一些具体的 值得信赖的 最好是简洁的 信息 内容如下 系统销毁和 如果适用 重新创建组件的顺序 片段 活动 活动的线程 异步任务 计时器 静态数据 类何时卸载 其他类中的线程 异步任务 定时器 主机 TabActivity
  • 如何在我现有的 Android 应用程序中使用 Telegram API(包括聊天应用程序)?

    我想使用 telegram API 在我现有的 Android 应用程序中开发聊天功能 我不知道如何实施 我认为 看看Telegram 数据库库 测试版 从这里TDLib https core telegram org tdlib 俄语 但
  • 以编程方式将文本颜色设置为主要 Android 文本视图

    如何设置我的文本颜色TextView to android textColorPrimary以编程方式 我已经尝试了下面的代码 但它将 textColorPrimary 和 textColorPrimary Inverse 的文本颜色始终设
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Android 手机作为 GSM 调制解调器在 PC 上发送/接收短信?

    是否可以将 Android 移动设备用作 PC 上的 GSM 调制解调器 我正在 net下开发应用程序来发送 接收短信等 现在我想通过 USB 将我的 Android 设备连接到我的 PC 并将其用作 GSM 调制解调器来与其通信 这里是参
  • Flutter 中有预填充数据库使用的示例吗?

    Flutter 中有预填充数据库使用的示例吗 我不需要 CRUD 示例 此时我只需要从数据库读取数据即可 我是 Flutter 新手 所以一步一步的教程会很好 您可以将您的应用程序与预填充的 sqlite 数据库捆绑在一起assets文件夹
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 向上滚动时固定项目

    所以我有以下屏幕 我正在寻找一种方法 使得当用户向上滚动时 包含进度条和这 4 个数据字段 ItemHeader 的小部件将向上滚动 但搜索容器 SearchTextField 将被固定 到顶部 当然 当用户向下滚动时 它应该重新出现 我找
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

  • linux设置两个文件权限完全相同方法

    linux设置两个文件权限完全相同方法 第二个文件设置为具有与第一个文件完全相同的权限 1 使用stat命令查看第一个文件的权限 stat c a 文件1 2 使用chmod命令将第二个文件设置为与第一个文件相同的权限 chmod refe
  • go-zero 开发入门-加法客服端示例

    定义 RPC 接口文件 接口文件 add proto 的内容如下 syntax proto3 package add 当 protoc gen go 版本大于 1 4 0 时需加上 go package 否则编译报错 unable to d
  • 智能配音在线怎么弄?教你配音好方法

    想象一下 你有一个精彩的故事 需要给它进行配音 让故事更加生动立体 现在 有许多文字配音App可以帮助你实现这个愿望 无需专业录音设备 只需一款文字配音App 就能轻松实现文字转语音 为故事增添声音 接下来 就为你带来文字配音app推荐免费
  • 自动机器学习是什么?概念及应用

    自动机器学习 Auto Machine Learning 的应用和方法 随着众多企业在大量场景中开始采用机器学习 前后期处理和优化的数据量及规模指数级增长 企业很难雇用充足的人手来完成与高级机器学习模型相关的所有工作 因此机器学习自动化工具
  • 2024备战春招Java面试八股文合集

    Java就业大环境仍然根基稳定 市场上有很多机会 技术好的人前景就好 就看你有多大本事了 小编得到了一份很不错的资源 建议大家可以认真地来看看以下的资料 来提升一下自己的核心竞争力 在面试中轻松应对面试官拿下offer 本文分享 Java后
  • 2023 Java 面试题精选40道,包含答案

    Java中什么是重载 什么是覆盖 它们有什么区别 重载是指在同一个类中 方法名相同但参数类型 个数或顺序不同的情况下 编译器会根据参数列表的不同自动调用不同的方法 覆盖是指子类重写父类的同名方法 使得子类在调用该方法时执行子类的实现而不是父
  • 2024java面试看完这篇笔记薪资和offer稳了!

    新的一年抓住机会 不管跳槽涨薪 还是学习提升 这篇笔记你都不应该错过 为了帮大家节约时间 整理了这篇 Java面试 核心知识点整理 以及 金三银四高频面试合集 希望大家在新的一年都能拿到理想的薪资和offer 内容涵盖 计算机基础 Java
  • Java面试题及答案整理( 2023年12月最新版,持续更新)

    秋招金九银十快到了 发现网上很多Java面试题都没有答案 所以花了很长时间搜集整理出来了这套Java面试题大全 这套互联网 Java 工程师面试题包括了 MyBatis ZK Dubbo EL Redis MySQL 并发编程 Java面试
  • 面试官:什么是JWT?为什么要用JWT?

    目前传统的后台管理系统 以及不使用第三方登录的系统 使用 JWT 技术的还是挺多的 因此在面试中被问到的频率也比较高 所以今天我们就来看一下 什么是 JWT 为什么要用 JWT 1 什么是 JWT JWT JSON Web Token 是一
  • 浅析特征增强&个性化在CTR预估中的经典方法和效果对比

    在CTR预估中 主流都采用特征embedding MLP的方式 其中特征非常关键 然而对于相同的特征 在不同的样本中 表征是相同的 这种方式输入到下游模型 会限制模型的表达能力 为了解决这个问题 CTR预估领域提出了一系列相关工作 被称为特
  • 总有人说鸿蒙是安卓套壳?鸿蒙5.0之后彻底摆脱安卓

    鸿蒙系统的操作逻辑与安卓基本上差不多 这和安卓系统没啥区别 是不是就是安卓系统套了一个壳啊 为什么到今天还是有不少人在争论它到底是不是安卓套壳 这与鸿蒙早期 完全自主研发 的 过激 宣传不无关系 其次就是鸿蒙生态环境上的不足 确实 华为一开
  • 鸿蒙系统的崛起对程序员来说是机遇、还是挑战呢?

    前言 最近 一个话题在程序员圈子里激起了热烈讨论 那就是鸿蒙系统的崛起是否会影响程序员的就业和发展 我该转去学鸿蒙开发吗 鸿蒙前景如何 值不值得投入时间研究 对此 程序员们表达了各种疑虑和困惑 的确 一个全新的操作系统的出现确实让人眼花缭乱
  • go-zero 开发之安装 etcd

    本文只涉及 Linux 上的安装 二进制安装 下载二进制安装包 ETCD VER v3 4 28 ETCD VER v3 5 10 DOWNLOAD URL https github com etcd io etcd releases do
  • Quartz定时任务运行时,能够否对某个任务重新调度呢?

    背景 quartz 是一个功能丰富 开源 分布式的任务调用框架 我参与的很多项目都用它来实现定时调度功能 关于定时任务 有一个常见的需求是 由 Web 应用来控制定时任务的启动 停止 调度周期等 本文探讨的是 对于当前正在 调度的 耗时较长
  • go-zero开发入门之网关往rpc服务传递数据2

    go zero 的网关服务实际是个 go zero 的 API 服务 也就是一个 http 服务 或者说 rest 服务 http 转 grpc 使用了开源的 grpcurl 库 当网关需要往 rpc 服务传递额外的数据 比如鉴权数据的时候
  • 一呼百应!腾讯、阿里等全都支持鸿蒙了,安卓该担心了

    前言 众所周知 目前华为鸿蒙系统 已经是全球第三大智能手机系统 仅次于安卓 iOS 不过大家也都清楚 这个第三 实际上还是有水份的 因为鸿蒙其实并没有自己的生态 靠的是兼容安卓生态 真正的纯血鸿蒙APP 仅几十个 如果靠着这几十个APP 完
  • 短视频制作:从构思到发布的全方位指南

    在当今数字化时代 短视频已成为备受欢迎的媒体形式 凭借其简洁有趣的内容 短视频成功吸引了大量观众的关注 然而 制作一部引人入胜的短视频并非易事 本文将为你提供从目标设定到平台发布的全面指导 帮助你制作出令人难以忘怀的短视频 第一步 明确目标
  • 有哪些PDF转图片工具好用?PDF转图片免费软件推荐

    在一个阳光明媚的下午 你正在翻阅着一份重要的PDF文件 想要快速将其中的内容以图片形式分享给朋友 然而 复制粘贴不仅繁琐 还会失去原本的排版和格式 那么 如何将PDF文件转换成图片呢 今天就来介绍两款可以实现这一功能的免费软件 如果你也想知
  • 你知道ai写作工具哪个好吗?教你用AI写年终总结

    又是一年的十二月到了 每年到这个时候 朋友圈都总会出现一首常驻歌曲 十二月的奇迹 身为打工人的大家应该都希望 在忙碌了一年的最后一个月被奇迹眷顾吧 不过俗话说得好 靠人不如靠己 与其把自己交给命运的奇迹 那不如自己也努力争取一下 在老板面前
  • 鸿蒙开发入门:快速修复命令行调试开发指导

    快速修复命令行调试开发指导 当前阶段 HarmonyOS为开发者提供了命令行的调试开发工具可供使用 比如 包名为com ohos quickfix的示例应用 版本号为1000000 该应用的当前版本运行中有某问题需要修复 此时 开发者可参考