南飓风 发表于 2024-11-6 20:03:35

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]
查看完整版本: HarmonyOS构建HAR包