自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

三方包打包和引入,幫你快速學(xué)習(xí)了解三方包的基本知識

系統(tǒng) OpenHarmony
Haromony工程采用自研工具ohpm(Open Harmony Package Manager) 作為包管理和發(fā)布的標準,關(guān)于ohpm的詳細介紹,將在后續(xù)系列的文章里講解,本章還是重點關(guān)注三方包的內(nèi)容。本文采用的示例較為簡單,主要目的是讓初學(xué)者快速學(xué)習(xí)了解三方包的基本知識。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

前言

三方包的使用在開發(fā)中非常常見,比如引用已封裝好的包,或者使用和發(fā)布自己編寫的包。Haromony工程采用自研工具ohpm(Open Harmony Package Manager) 作為包管理和發(fā)布的標準,關(guān)于ohpm的詳細介紹,將在后續(xù)系列的文章里講解,本章還是重點關(guān)注三方包的內(nèi)容。

本文采用的示例較為簡單,主要目的是讓初學(xué)者快速學(xué)習(xí)了解三方包的基本知識。關(guān)于本地Har包依賴更詳細全面的使用可以參考鏈接橘子購物示例。

基本概念介紹和對比

名稱

基本概念

業(yè)務(wù)要求

HAP(Harmony Ability Package)

應(yīng)用安裝和更新的最小單元

必須包含UIAbility或者ExtensionAbility

可以在設(shè)備上獨立安裝

可以包含資源

HAR(Harmony Archive)

靜態(tài)共享包,編譯態(tài)復(fù)用

代碼和資源跟隨使用編譯,有多個使用方,會有多份相同拷貝

不包含UIAbility或者ExtensionAbility

不支持獨立安裝

可以發(fā)布到中心倉或者私倉供他人使用

HSP(Harmony Shared Package)

動態(tài)共享包 運行時復(fù)用

代碼資源獨立編譯,有多個使用方也只會存在一份代碼

不包含UIAbility或者ExtensionAbility

不支持獨立安裝

關(guān)于表格里的名詞,這里做簡單的介紹UIAbility 是系統(tǒng)調(diào)度的基本單元,一個應(yīng)用可以包含多個UIAbility。每一個UIAbility在都會在任務(wù)列表中顯示一個對應(yīng)的任務(wù)。就是一個具備UI展示能力的應(yīng)用組件。ExtensionAbility 是特定場景下提供的應(yīng)用組件,類型多樣,目前有九種類型。例:FORM類型的ExtensionAbility組件,用于提供服務(wù)卡片場景相關(guān)能力。

Har包的使用場景最廣泛,我們重點講一下本地依賴har包的場景。

場景一 依賴本地Har模塊

1、創(chuàng)建工程

2、新建模塊

創(chuàng)建完后可以選擇直接右鍵新建模塊;也可以創(chuàng)建新目錄,再右鍵目錄創(chuàng)建模塊,這里選擇直接在根目錄下創(chuàng)建模塊

模塊類型選擇static library。

創(chuàng)建完后可以打開localHar/src/main/module.json5 文件 ,里面的type是har。

{
  "module": {
    "name": "localHar",
    "type": "har",
    "deviceTypes": [
      "default"
    ]
  }
}

module.json5 字段說明:

字段名稱

字段說明

備注

name

模塊名稱

就是新建的模塊名稱

type

模塊類型

entry feature 對應(yīng)構(gòu)建產(chǎn)物的是Hap,share 是Hsp, har 是Har

deviceTypes

適配設(shè)備

default:能夠使用全部系統(tǒng)能力的OpenHarmony設(shè)備。枚舉還包括phone,tv,tablet

再看一下 localHar/index.ets:

export { MainPage } from './src/main/ets/components/mainpage/MainPage'

這個文件是整個模塊的入口,具體的入口配置在 localHar/oh-package.json5。

{
  "name": "localhar",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "index.ets",
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {}
}

3、修改配置和文件

在entry/oh-package.json5里設(shè)置依賴關(guān)系(和npm的配置文件package.json十分相似)。

{
  "name": "entry",
  "version": "1.0.0",
  "description": "Please describe the basic information.",
  "main": "",
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@ohos/localHar": "file:../localHar"
  }
}

oh-package.json5 字段說明:

字段名稱

字段說明

備注

name

名稱

Har包的名稱盡量使用@group/packagename group是當前開發(fā)的組織 例:@ohos/shoppingDetail

version

版本號

符合semver語義化規(guī)范 例:1.0.0

main

入口

指定的加載入口文件

author

作者

里面可以設(shè)置作者name信息和email信息

description

簡介

描述包信息的字符串

repository

倉庫地址

當前包所在的開源倉庫地址

license

開源協(xié)議

當前項目的開源許可證

dependencies

生產(chǎn)依賴

項目運行所依賴的模塊,即項目生產(chǎn)環(huán)境下需要用到的依賴

devDependencies

開發(fā)依賴

項目開發(fā)所依賴的模塊

添加依賴后會發(fā)現(xiàn)出現(xiàn)紅色報錯提示:

這時候可以點擊右上角的Sync Now,會自動檢查依賴下載情況。或者鼠標移動到報錯代碼部分,點擊出現(xiàn)的ohpm install. 就會自動下載對應(yīng)的依賴了。安裝完畢后,entry下出現(xiàn)oh_module,里面就是下載的依賴,這里的依賴其實是個軟鏈接,通過快捷方式跳轉(zhuǎn)。

此時就可以在entry里使用localHar的組件了。

打開localHar/src/main/ets/components/mainpage/MainPage.ets 修改后代碼如下:

@Component
export struct MainPage {
  @State message: string = 'Hello LocalHar'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

打開entry/src/main/ets/pages/Index.ets 修改后代碼如下:

import {MainPage} from "@ohos/localHar"

@Entry
@Component
struct Index {

  build() {
    Row() {
      MainPage()
    }
    .height('100%')
  }
}

4、運行驗證

右上角綠色小三角構(gòu)建entry后運行,開發(fā)板展示如下:

場景二 依賴外部構(gòu)建好的HAr包

整個工程的構(gòu)建不會自動把里面Har類型的模塊打成Har包,可以在localHar/build里查看一下,我們這里把內(nèi)部的localHar打成Har包,通過直接操作生成的Har包來模擬引用外部Har。


所以需要我們自己手動去打Har。打包之前我們修改一下localHar/src/main/ets/components/mainpage/MainPage.ets文本內(nèi)容,方便區(qū)分是否生效。

1、修改UI展示

@Component
export struct MainPage {
  @State message: string = 'Hello LibHar'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

2、模塊打包

首先左鍵選中要構(gòu)建的模塊。

然后上方的build菜單欄里點擊build Module ‘localHar’。

然后就可以看到打出的har包了。

我們將生成的Har包放到工程的單獨文件夾里,右鍵工程根目錄,新建directory。

文件夾名字沒有要求,這里用lib,表明是外部的包,然后我用手動拖拽的方式將之前打好的Har包移動到libs文件夾下,在彈框中點擊refactor確認

移動后,原先的模塊就可以不用了,我們?nèi)ジ囊幌耬ntry/oh-package.json5。

{
  "license": "ISC",
  "devDependencies": {},
  "author": "",
  "name": "entry",
  "description": "Please describe the basic information.",
  "main": "",
  "version": "1.0.0",
  "dependencies": {
    "@ohos/localHar": "file:../lib/localHar.har"
  }
}

3、運行驗證

然后再運行,這里為了防止干擾,可以先手動清理一下之前的構(gòu)建產(chǎn)物。

然后運行效果如圖:

場景三 從ohpm公倉上引入三方包

可以直接參考根目錄下的oh-package.json5。

{
  "license": "",
  "devDependencies": {
    "@ohos/hypium": "1.0.6"
  },
  "author": "",
  "name": "myapplication",
  "description": "Please describe the basic information.",
  "main": "",
  "version": "1.0.0",
  "dependencies": {}
}

里面引入了框架提供的hypium,三方包的引入方式和這個類似,我們可以去三方包的網(wǎng)站上去尋找自己需要的三方包:

ohpm三方包倉庫

我們引入這個二維碼相關(guān)的三方庫進行開發(fā)。


修改entry/oh-package.json5。

{
  "license": "ISC",
  "devDependencies": {},
  "author": "",
  "name": "entry",
  "description": "Please describe the basic information.",
  "main": "",
  "version": "1.0.0",
  "dependencies": {
    "@ohos/localHar": "file:../lib/localHar.har",
    "@ohos/zxing": "2.0.1"
  }
}

然后同步一下,會自動安裝相關(guān)依賴,安裝后就可以使用三方包的功能了,我們在頁面里可以直接import我們需要的組件,進行開發(fā)。

import {MainPage} from "@ohos/localHar"
import {MultiFormatReader, BarcodeFormat, DecodeHintType, RGBLuminanceSource, BinaryBitmap, HybridBinarizer } from "@ohos/zxing";
@Entry
@Component
struct Index {
  build() {
    Row() {
      MainPage()
    }
    .height('100%')
  }
}

注意:本文中未涉及三方包發(fā)布講解,是因為筆者認為發(fā)布和ohpm工具更貼合,所以會在后面出專門的ohpm文章講解該部分。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2014-04-08 15:16:00

2015-11-05 16:44:37

第三方登陸android源碼

2023-02-07 15:43:13

三方庫適配鴻蒙

2010-07-14 15:18:26

Telnet連接

2010-03-03 15:10:49

第三方Python庫

2023-07-26 08:21:33

2024-07-30 09:35:00

2023-03-22 09:09:21

鴻蒙Speexdsp

2014-07-23 08:55:42

iOSFMDB

2019-07-30 11:35:54

AndroidRetrofit

2022-10-24 07:32:20

Mavenjar包代碼

2017-12-11 15:53:56

2022-11-21 16:15:41

ArkUI鴻蒙

2022-06-06 07:50:55

PythonJSON

2017-11-01 06:40:33

2010-03-08 08:51:59

FlashSilverlightHTML 5

2019-09-03 18:31:19

第三方支付電商支付行業(yè)

2017-05-16 13:24:02

LinuxCentOS第三方倉庫

2010-04-16 10:06:35

無線交換機故障

2009-12-31 14:38:34

Silverlight
點贊
收藏

51CTO技術(shù)棧公眾號