HarmonyOS构建HAR包
介绍HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等干系代码。
使用场景
[*]作为二方库,发布到OHPM私仓,供公司内部其他应用使用。
[*]作为三方库,发布到OHPM中心仓,供其他应用使用。
约束限制
[*]HAR不支持在设备上单独安装/运行,只能作为应用模块的依靠项被引用。
[*]HAR不支持在配置文件中声明UIAbility组件与ExtensionAbility组件。
[*]HAR不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过定名路由的方式进行跳转。
[*]HAR不支持引用AppScope目录中的资源。在编译构建时,AppScope中的内容不会打包到HAR中,因此会导致HAR资源引用失败。
[*]HAR可以依靠其他HAR,但不支持循环依靠,也不支持依靠传递
构建HAR包
1.新建项目
新建Application
https://i-blog.csdnimg.cn/direct/5bfb62321a1d4958b540ef01bb732b9e.png
创建名为HarArchive项目
https://i-blog.csdnimg.cn/direct/50b6707aa70d4fac9275bb49bcb4233a.png
2.新建Module
在HarArchive项目点击右键,new一个Module
https://i-blog.csdnimg.cn/direct/e2dd904828504e2994543c9fbed60f8f.png
选择static Library
https://i-blog.csdnimg.cn/direct/1a0a7098a7784dadb8f8e9da2cc1868e.png
创建名为toolslibrary的Module
https://i-blog.csdnimg.cn/direct/8213850e879840e580a67a32ad51273c.png
修改编辑toolslibrary Module
在toolslibrary/src/main/ets/components/MainPage.ets修改message值,我这边修改为Hello HarmonyOS
https://i-blog.csdnimg.cn/direct/76e5c87f56694f77a07c192966291d3e.png
新增一个名为SumTools的arkts文件
选中toolslibrary右键new中选择Arkts File,输入文件名称SumTools
https://i-blog.csdnimg.cn/direct/d38b5621732748a8a84f191840924b7c.png
编辑SumTools
编辑toolslibrary/src/main/ets/components/SumTools.ets
https://i-blog.csdnimg.cn/direct/b2a26556db24411884726823cccc1d37.png
export class SumTools{
/*
* 两数相加
* */
static twoNumAdd(num1:number,num2:number):number{
return num1+num2
}
}
/*
* 三数相加
* */
export function threeNumAdd(num1:number,num2:number,num3:number):number{
return num1+num2+num3
}
/*
* 多数相加
* */
export function someNumAdd(nums:Array<number>):number{
let sum:number = 0
for (let index = 0; index < nums.length; index++) {
sum = sum+nums
}
return sum
} 在Index.ets中暴露接口
在toolslibrary/Index.ets内暴露MainPage、SumTools、threeNumAdd、someNumAdd
https://i-blog.csdnimg.cn/direct/c358c7e2a4fd436a914fc5c7c8faaac9.png
3.在HarArchive项目中测试Static Library
导入Module
在HarArchive/entry/oh-package.json5中dependencies添加
"@zgcx/toolslibrary": "file:../toolslibrary" 然后点击Sync Now
https://i-blog.csdnimg.cn/direct/86d838203513454b967b226310350965.png
使用Module
在HarArchive/entry/src/main/ets/pages/Index.ets引入MainPage、SumTools、threeNumAdd、someNumAdd 并使用
https://i-blog.csdnimg.cn/direct/c5a11653ef234f6a9cb2b47c06164b82.png
import { MainPage, someNumAdd, SumTools, threeNumAdd } from '@zgcx/toolslibrary';
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
build() {
Column() {
Text(this.message)
.id('HelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
MainPage().width("100%").height(200)
Text("1024+2048="+SumTools.twoNumAdd(1024,2048))
.fontSize(20).fontWeight(FontWeight.Bold).height(100)
Text("1024+2048+4096="+threeNumAdd(1024,2048,4096))
.fontSize(20).fontWeight(FontWeight.Bold).height(100)
Text("2+4+16+32+64+128+256+512+1024+2048="+someNumAdd())
.fontSize(20).fontWeight(FontWeight.Bold).height(100)
}
.height('100%')
.width('100%')
}
} 模拟器运行
https://i-blog.csdnimg.cn/direct/6e98426aa7d745dd9e0817ea1e5b5a25.png
4.构建并导出Har包
选中toolslibrary点击build选择Make Module 'toolslibrary'
https://i-blog.csdnimg.cn/direct/0edc737f7c5a446a9e1f04940fa8a678.png
在toolslibrary/build/default/outputs/default/下构建的后缀为.har文件
https://i-blog.csdnimg.cn/direct/d962e57415594f45a66dd21b5796afa7.png
使用构建的HAR包
1.创建使用Har包项目
https://i-blog.csdnimg.cn/direct/794e68b80cd44924b17fd1bf5ec3f17d.png
2.项目名为HarTest
https://i-blog.csdnimg.cn/direct/1002dffffc3a4b54870a3adcbdd3bef5.png
3.导入har包
在HarTest右键new一个名为libs的Directory,然后将构建好的har包放到libs下
https://i-blog.csdnimg.cn/direct/840e589b34284021b65347ba74b9b560.png
在HarTest/oh-package.json5中dependencies添加
"@zgcx/toolslibrary": "file:../HarTest/libs/toolslibrary.har"
然后点击Sync Now
https://i-blog.csdnimg.cn/direct/ec439a7a7f184e2995aefaf74e2da9ba.png
4.使用har包
在HarTest项目下entry的Index.ets引入MainPage、SumTools、threeNumAdd、someNumAdd 并使用
https://i-blog.csdnimg.cn/direct/2e6ac5858d394be78a0a8d61a6dc6249.png
import { MainPage, someNumAdd, SumTools, threeNumAdd } from '@zgcx/toolslibrary';
@Entry
@Component
struct Index {
@State twoNumAddText: string = "计算";
@State threeNumAddText: string = "计算";
@State someNumAddText: string = "计算";
build() {
Column(){
MainPage().width("100%").height(300)
Text("1024+2048="+this.twoNumAddText)
.fontSize(20).fontWeight(FontWeight.Bold).height(100)
.onClick(()=>{
this.twoNumAddText = SumTools.twoNumAdd(1024,2048).toString()
})
Text("1024+2048+4096="+this.threeNumAddText)
.fontSize(20).fontWeight(FontWeight.Bold).height(100)
.onClick(()=>{
this.threeNumAddText = threeNumAdd(1024,2048,4096).toString()
})
Text("2+4+16+32+64+128+256+512+1024+2048="+this.someNumAddText)
.fontSize(20).fontWeight(FontWeight.Bold).height(100).padding({left:10,right:10})
.onClick(()=>{
this.someNumAddText = someNumAdd().toString()
})
}
.height('100%')
.width('100%')
}
} 5.模拟器运行
https://i-blog.csdnimg.cn/direct/067215bae321452da33f80859d4a95bb.gif
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]