马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
介绍
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
创建名为HarArchive项目
2.新建Module
在HarArchive项目点击右键,new一个Module
选择static Library
创建名为toolslibrary的Module
修改编辑toolslibrary Module
在toolslibrary/src/main/ets/components/MainPage.ets修改message值,我这边修改为Hello HarmonyOS
新增一个名为SumTools的arkts文件
选中toolslibrary右键new中选择Arkts File,输入文件名称SumTools
编辑SumTools
编辑toolslibrary/src/main/ets/components/SumTools.ets
- 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[index]
- }
- return sum
- }
复制代码 在Index.ets中暴露接口
在toolslibrary/Index.ets内暴露MainPage、SumTools、threeNumAdd、someNumAdd
3.在HarArchive项目中测试Static Library
导入Module
在HarArchive/entry/oh-package.json5中dependencies添加
"@zgcx/toolslibrary": "file:../toolslibrary" 然后点击Sync Now
使用Module
在HarArchive/entry/src/main/ets/pages/Index.ets引入MainPage、SumTools、threeNumAdd、someNumAdd 并使用
- 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([2,4,16,32,64,128,256,512,1024,2048]))
- .fontSize(20).fontWeight(FontWeight.Bold).height(100)
- }
- .height('100%')
- .width('100%')
- }
- }
复制代码 模拟器运行
4.构建并导出Har包
选中toolslibrary点击build选择Make Module 'toolslibrary'
在toolslibrary/build/default/outputs/default/下构建的后缀为.har文件
使用构建的HAR包
1.创建使用Har包项目
2.项目名为HarTest
3.导入har包
在HarTest右键new一个名为libs的Directory,然后将构建好的har包放到libs下
在HarTest/oh-package.json5中dependencies添加
"@zgcx/toolslibrary": "file:../HarTest/libs/toolslibrary.har"
然后点击Sync Now
4.使用har包
在HarTest项目下entry的Index.ets引入MainPage、SumTools、threeNumAdd、someNumAdd 并使用
- 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([2,4,16,32,64,128,256,512,1024,2048]).toString()
- })
- }
- .height('100%')
- .width('100%')
- }
- }
复制代码 5.模拟器运行
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |