HarmonyOS—开启AOT编译模式

AOT(Ahead Of Time)即提前编译,能够在Host端(即运行DevEco Studio的电脑)将字节码提前编译成Target端(即运行应用的设备)可运行的机器码,这样字节码可以获得充分编译优化,放到Target端运行时可以获得加速。

对性能有高要求的开发者可通过在DevEco Studio完成相关的编译配置,开启AOT编译模式,提升应用运行性能。

说明

  • 当前仅支持API 9及以上版本Stage模型的ArkTS工程。
  • Node.js需要10.14以上版本。
  • 仅支持在64位ROM上运行。

AOT编译模式

在模块级build-profile.json5文件中,buildOption内的aotCompileMode字段可以设置为以下值,对应不同的AOT模式。


在这里插入图片描述

使用AOT编译

1.打开ArkTS工程,同步完成。

2.在模块级build-profile.json5文件中,配置buildOption内的字段。

{
  "apiType": 'stageMode',
  "buildOption": {
    "aotCompileMode": "type"
  },
  ...
}

3.当aotCompileMode设置为partial时,需要设置apPath。如果设置为type时,则无需关注此步骤。partial类型配置的示例如下:

"aotCompileMode": "partial" 
"apPath":"./modules.ap"

其中,ap文件获取方式为:
a.打开生成ap文件的开关:

hdc shell param set ark.profile true

b.先配置为type类型,打包出HAP后运行在真机上,在需要优化的场景进行操作,从而记录常用操作。

c.操作结束后,真机里记录的ap文件即可放入应用AOT编译使用的目录,通过命令行来获取ap文件:

hdc file recv /data/local/ark-profile/100/{bundle_name}/modules.ap {apPath}

i.{bundle_name}: 表示包名。

ii.{apPath}: 表示buildOption设置的apPath参数对应的路径。

4.若设备不再需要获取ap文件,可以通过下面两个方法关闭:

  • hdc shell param set ark.profile false
  • 设备重启

说明

应用代码变化或常用操作变化时,需要重复以上步骤更新ap文件。

4.编译release版本的HAP。

使用type编译模式

1.打开ArkTS工程,同步完成。

2.在模块级build-profile.json5文件中,配置buildOption内的字段。

{
  "apiType": 'stageMode',
  "buildOption": {
    "aotCompileMode": "type"
  },
  ...
}

3.编译release版本的HAP。

使用partial编译模式

使用partial编译模式需要先使用type模式进行编译,获取到ap文件后,再进行partial模式编译。

1.参考使用type编译模式,配置为type模式,编译HAP。

2.获取ap文件:
a.打开生成ap文件的开关:

hdc shell param set ark.profile true

b.将步骤一打包出的HAP后运行在真机上,在需要优化的场景进行操作,从而记录高频操作。

c.操作结束后,真机里记录的ap文件即可放入应用AOT编译使用的目录,通过命令行来获取ap文件:

hdc file recv /data/local/ark-profile/100/{bundle_name}/modules.ap {apPath}

i.{bundle_name}: 表示包名。

ii.{apPath}: 表示buildOption设置的apPath参数对应的路径。

4.若设备不再需要获取ap文件,可以通过下面两个方法关闭:

  • hdc shell param set ark.profile false
  • 设备重启

说明

应用代码变化或常用操作变化时,需要重复以上步骤更新ap文件。

3.在模块级build-profile.json5文件中,配置buildOption内的字段。

{
  "apiType": 'stageMode',
  "buildOption": {
     "aotCompileMode": "partial",
     "apPath":"./modules.ap"
  },
  ...
}

4.编译release版本的HAP。

参考信息:编译release版本的HAP

1.在菜单栏点击Run,选择Edit Configurations。

在这里插入图片描述

2.左上角点击+,选择Hvigor。

在这里插入图片描述

3.在Application parameters内配置以下参数:

--mode module -p product=default assembleHap -p debuggable=false

在这里插入图片描述

配置完成后,点击OK

4.在右上角点击启动编译。

在这里插入图片描述
作为一名合格一线开发程序员,大家心里肯定会有很多疑问!鸿蒙系统>鸿蒙系统这么强大~~

为了能够让大家跟上互联网时代的技术迭代,在这里跟大家分享一下我自己近期学习心得以及参考网上资料整理出的一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→《鸿蒙基础入门学习指南》纯血鸿蒙HarmonyOS基础技能学习路线图


在这里插入图片描述

领取以上完整高清学习路线图,请点击→《鸿蒙 (Harmony OS)开发学习手册》小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?

-应届生/计算机专业
通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行
提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽
发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

总结

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击→《鸿蒙全套学习指南》


http://www.niftyadmin.cn/n/5408270.html

相关文章

【JavaEE进阶】CSS选择器的常见用法

CSS选择器的主要功能就是选中页面指定的标签元素&#xff0c;选中了元素&#xff0c;才可以设置元素的属性。 CSS选择器主要有以下几种: 标签选择器类选择器id选择器复合选择器通配符选择器 接下来用代码来学习这几个选择器的使用。 <!DOCTYPE html> <html lang&q…

【操作系统学习笔记】文件管理1.1

【操作系统学习笔记】文件管理1.1 参考书籍: 王道考研 视频地址: Bilibili I/O 设备的基本概念与分类 I/O 设备就是可以将数据输入到计算机&#xff0c;或者可以接收计算机输出数据的外部设备&#xff0c;属于计算机中的硬件设备。UNIX系统将外部设备抽象为一种特殊的文件&a…

聚观早报 | 2024款腾势D9将发布;岚图汽车2月销量

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月2日消息 2024款腾势D9将发布 岚图汽车2月销量 苹果Vision Pro防汗新专利 真我12 Pro正式开售 Redmi K70/Pro…

程序设计规范

目录 设计规范5W 设计规范1H 设计规范8C 设计规范5W "5W" 是指设计中的五个关键要素&#xff0c;分别是 What&#xff08;什么&#xff09;、Why&#xff08;为什么&#xff09;、Who&#xff08;谁&#xff09;、Where&#xff08;在哪里&#xff09;、When&…

【MySQL】性能分析工具EXPLAIN

1、基本语法 EXPLAIN的使用与DESCRIBE基本相同 EXPLAIN SELECT select_options 或者 DESCRIBE SELECT select_options2、EXPLAIN各列作用 2.1、table&#xff1a;表名 查询的每一行记录都对应一个单表&#xff0c;其中也分为驱动表和被驱动表 例如&#xff1a; 其中&#x…

python 3,LEECODE每日一练---找不同

import random def findTheDifference(s,t): #解题思路比较字母出现的次数&#xff0c;t字母出现的次数大于s出现的次数 for i in t: if t.count(i)>s.count(i): return i if __name__"__main__": sinput("请输入一串小写英…

【Spring底层原理高级进阶】Spring Kafka:实时数据流处理,让业务风起云涌!️

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;从入门到入魔》 &#x1f680; 本…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…