国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS基礎(chǔ)(七)- 詳細(xì)剖析鴻蒙引入第三方庫(kù)案例篇(1)

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS基礎(chǔ)(七)- 詳細(xì)剖析鴻蒙引入第三方庫(kù)案例篇(1)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

大家好!我是黑臂麒麟(起名原因:一個(gè)出生全右臂自帶紋身的高質(zhì)量程序員??),也是一位6+(約2個(gè)半坤年)的前端;
學(xué)習(xí)如像練武功一樣,理論和實(shí)踐要相結(jié)合,學(xué)一門只是也是一樣;
這里會(huì)用兩周的時(shí)間把所學(xué)的常用ArkUI基礎(chǔ)的常用組件輸出在網(wǎng);
如需深究可前往高級(jí)ArkTS系列課程;
望對(duì)學(xué)習(xí)鴻蒙小伙伴有所幫助;

前言

剛刷完codelabs的引入第三方庫(kù)的案例,目前引入方式是使用根據(jù)npm改造的鴻蒙自己ohpm。目前只能使用OpenHarmony三方庫(kù)中心。三方庫(kù)中心的目前不多。還處于開(kāi)始階段,后續(xù)開(kāi)發(fā)后需要更多開(kāi)發(fā)者貢獻(xiàn)?,F(xiàn)在常用的三方庫(kù)可以分為UI、動(dòng)畫(huà)、網(wǎng)絡(luò)、圖片、多媒體、數(shù)據(jù)存儲(chǔ)、安全、工具等。

這里記錄兩種方式:

  • 創(chuàng)建本地項(xiàng)目庫(kù)方法
  • 使用第三方庫(kù)方法,這里我們使用@ohos/lottie,@ohos/axios常用庫(kù);

創(chuàng)建本地庫(kù)

本地庫(kù)主要是指未上架到ohpm中心且在項(xiàng)目組內(nèi)共享使用的庫(kù)文件,這類庫(kù)需要開(kāi)發(fā)者在項(xiàng)目中創(chuàng)建并開(kāi)發(fā)新的Library模塊,創(chuàng)建步驟如下:

  • 鼠標(biāo)移到工程目錄頂部,單擊鼠標(biāo)右鍵,選擇New>Module。
    鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

  • Choose Your Ability Template界面中,選擇Static Library,并單擊Next。
    鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

  • Configure the New Module界面中,設(shè)置新添加的模塊信息,設(shè)置完成后,單擊Finish完成創(chuàng)建。

    • Module name:新增模塊的名稱。
    • Language:選擇開(kāi)發(fā)HarmonyOS ohpm包的語(yǔ)言。
    • Device type:選擇HarmonyOS ohpm包支持的設(shè)備類型。
    • Enable Native:是否創(chuàng)建一個(gè)用于調(diào)用C++代碼的HarmonyOS ohpm共享模塊。
      鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為
  • 創(chuàng)建完成后,會(huì)在工程目錄中生成HarmonyOS ohpm共享模塊及相關(guān)文件。
    鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

引入本地庫(kù)

兩種方式:

  • 方式一:在Terminal窗口中,執(zhí)行如下命令進(jìn)行安裝,并會(huì)在oh-package.json5中自動(dòng)添加依賴。
ohpm install ../library 

鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

  • 方式二:在工程的oh-package.json5中設(shè)置HarmonyOS ohpm三方包依賴,配置示例如下:
"dependencies": {

"@ohos/library": "file:../library"

}

手動(dòng)編寫(xiě)依賴設(shè)置完成后,執(zhí)行ohpm install命令安裝依賴包,依賴包會(huì)存儲(chǔ)在工程的oh_modules目錄下,這個(gè)跟我們前端拉新項(xiàng)目下來(lái)安裝依賴包相似
下面是本地庫(kù)NewButton代碼:

import ButtonViewModel from '../../viewmodel/ButtonsViewModel';
@Component
export struct Buttons {
  @Prop buttonText: string;
  @Prop stateEffect: boolean;
  @Prop buttonShape: string;
  @Prop buttonType: string;
  @Prop fontColor: string;

  build() {
    Row() {
      Column() {
        Button({
          type: ButtonViewModel.fetchType(this.buttonShape),
          stateEffect: this.stateEffect
        }) {
          Text(this.buttonText)
            .fontSize('16vp')
            .fontColor(this.fontColor || '#FFFFFF')
        }
        .width('100vp')
        .height('35vp')
        .backgroundColor(ButtonViewModel.fetchBackgroundColor(this.buttonType))
      }
    }
  }
}

在完成上述步驟后,我們繼續(xù)完成inner頁(yè)面的開(kāi)發(fā),在inner頁(yè)面中我們通過(guò)import的方式引入開(kāi)發(fā)的本地庫(kù),并通過(guò)循環(huán)傳入不同的參數(shù)展示不同的button。

import { Buttons } from '@ohos/library';
import InnerViewModel from '../viewmodel/InnerViewModel';
import { ButtonList } from '../viewModel/ButtonList';

@Component export struct Inner {
  @State buttonList: ButtonList[] = InnerViewModel.getButtonListData();
  scroller: Scroller = new Scroller();

  build(){
    Scroll(this.scroller) {
      Column({ space: 12 }) {
        ForEach(this.buttonList, (item: ButtonList) => {
          Column() {
            Flex({
              direction: FlexDirection.Column,
              justifyContent: FlexAlign.SpaceBetween,
              alignItems: ItemAlign.Start
            }){
			  ...
              Column() {
                Buttons({
                  buttonText: item.buttonText,
                  buttonShape: item.buttonShape,
                  buttonType: item.buttonType,
                  stateEffect: item.stateEffect,
                  fontColor: item.fontColor
                })
                  .alignSelf(ItemAlign.Center)
                  .margin({ bottom: '21vp' })
              }
              ...
            }
        })
      }
      ...
    }
    ...
  }
}

鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

社區(qū)庫(kù)調(diào)用

社區(qū)庫(kù)是指已經(jīng)由貢獻(xiàn)者上架到ohpm中心供其他開(kāi)發(fā)者下載使用的庫(kù),調(diào)用這類庫(kù)的方法如下:
通過(guò)如下兩種方式設(shè)置HarmonyOS ohpm三方包依賴信息,這里推薦第一種。前端也是常用第一種方式。(下面步驟以@ohos/lottie三方庫(kù)為例,其他庫(kù)替換對(duì)應(yīng)庫(kù)的名字及版本號(hào)即可):

  • 方式一:在Terminal窗口中,執(zhí)行如下命令安裝HarmonyOS ohpm三方包,DevEco Studio會(huì)自動(dòng)在工程的oh-package.json5中自動(dòng)添加三方包依賴。
ohpm install @ohos/lottie
  • 方式二:在工程的oh-package.json5中設(shè)置HarmonyOS ohpm三方包依賴,配置示例如下:
"dependencies": {

        "@ohos/lottie": "^2.0.0"

}

跟上面一樣,需要執(zhí)行ohpm install命令安裝依賴包,依賴包會(huì)存儲(chǔ)在工程的oh_modules目錄下。

在完成上述步驟后,我們繼續(xù)完成outer頁(yè)面的開(kāi)發(fā),在outer頁(yè)面中我們通過(guò)import的方式引入配置的社區(qū)庫(kù),并實(shí)現(xiàn)對(duì)社區(qū)庫(kù)動(dòng)畫(huà)的調(diào)用。

import lottie, { AnimationItem } from '@ohos/lottie';
import Logger from '../common/utils/log/Logger';

@Component
export struct Outer {
  private renderingSettings: RenderingContextSettings = new RenderingContextSettings(true)
  private renderingContext: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.renderingSettings)
  private animateName: string = 'data';
  private animateItem: AnimationItem | null = null;
  @State canvasTitle: string | undefined = undefined;


  build(){
    Flex({
      direction: FlexDirection.Column,
      justifyContent: FlexAlign.SpaceBetween
    }){
      Column(){
        Canvas(this.renderingContext)
          .width('100%')
          .aspectRatio(1.76)
          .backgroundImage($r('app.media.canvasBg'))
          .backgroundImageSize(ImageSize.Cover)
          .onDisAppear(() => {
            lottie.destroy(this.animateName);
          })
        Text(this.canvasTitle)
          .width('100%')
          .fontSize('14fp')
          .textAlign(TextAlign.Center)
          .fontWeight(FontWeight.Bold)
          .fontColor('#182431')
          .opacity(0.4)
      }
      .margin({
        top: '10vp',
        left: '10vp',
        right: '10vp'
      })

      Column({ space: 12 }){
        Button(){
          Text('加載動(dòng)畫(huà)')
            .fontSize('16fp')
            .fontColor('#007DFF')
            .fontWeight(FontWeight.Bold)
        }
        .width('100%')
        .height('41vp')
        .backgroundColor('#dedbdb')
        .onClick(() => {
          if (this.animateItem != null) {
            this.animateItem.destroy();
            this.animateItem = null;
          }

          this.canvasTitle = '加載動(dòng)畫(huà)';

          this.animateItem = lottie.loadAnimation({
            container: this.renderingContext,
            renderer: 'canvas',
            loop: 10,
            autoplay: true,
            name: this.animateName,
            path: 'common/lottie/data.json'
          })
        })

        Button() {
          Text('結(jié)束并回到第0幀')
            .fontSize('16fp')
            .fontColor('#007DFF')
            .fontWeight(FontWeight.Bold)
        }
        .width('100%')
        .height('40vp')
        .backgroundColor('#dedbdb')
        .onClick(() => {
          if (this.animateItem === null) return;
          this.canvasTitle = '結(jié)束并回到第0幀';
          this.animateItem.goToAndPlay(0, true);
        })

        Flex({ justifyContent: FlexAlign.SpaceBetween }){
          Button(){
            Text('播放')
              .fontSize('16fp')
              .fontColor('#007DFF')
              .fontWeight(FontWeight.Bold)
          }
          .width('49%')
          .height('40vp')
          .backgroundColor('#dedbdb')
          .onClick( () => {
            if (this.animateItem === null) return;
            this.canvasTitle = '播放'
            lottie.play();
          })

          Button() {
            Text('暫停')
              .fontSize('16fp')
              .fontColor('#007DFF')
              .fontWeight(FontWeight.Bold)
          }
          .width('49%')
          .height('40vp')
          .backgroundColor('#dedbdb')
          .onClick(() => {
            if (this.animateItem === null) return;
            this.canvasTitle = '暫停';
            lottie.pause();
          })
        }
      }
      .padding({
        left: '23vp',
        right: '23vp',
        bottom: '41vp'
      })
    }
    .height('100%')
  }
}

鴻蒙os第三方庫(kù),HarmonyOS基礎(chǔ),harmonyos,華為

總結(jié)

這里介紹了本地庫(kù)使用、遠(yuǎn)程第三方庫(kù)引入;
本地庫(kù)或者遠(yuǎn)程第三方庫(kù),都需要ohpm引入到oh-package.json5中才能使用;
我是前端,喜歡用ohpm直接導(dǎo)入。如需要手動(dòng)導(dǎo)入可以選擇第二種;

結(jié)語(yǔ)

本篇文章的內(nèi)容結(jié)束了。文章有不對(duì)或不完整的地方,望多指點(diǎn);
望更多小伙伴們加入harmonyOS開(kāi)發(fā)大家庭,壯大生態(tài)圈,讓鴻蒙更好,讓國(guó)產(chǎn)手機(jī)(物聯(lián)網(wǎng))系統(tǒng)更強(qiáng)大。
如對(duì)你學(xué)習(xí)有所幫助,希望可愛(ài)你動(dòng)動(dòng)小手,關(guān)注、點(diǎn)贊、收藏;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855866.html

到了這里,關(guān)于HarmonyOS基礎(chǔ)(七)- 詳細(xì)剖析鴻蒙引入第三方庫(kù)案例篇(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 引入第三方字體庫(kù) 第三方字體庫(kù)Google Fonts

    引入第三方字體庫(kù) 第三方字體庫(kù)Google Fonts

    googlefonts官方網(wǎng)站 googlefonts中國(guó)網(wǎng)站 本人是在微信小程序中引入 在static中建一個(gè)文件夾font-family 例如字體鏈接:https://fonts.font.im/css?family=Kirang+Haerang 將該鏈接的返回的資源的復(fù)制到css文件中 font-family.css main.js引入 微信小程序不校驗(yàn)合法域名就能看到結(jié)果

    2024年02月16日
    瀏覽(27)
  • 鴻蒙加載第三方動(dòng)態(tài)鏈接庫(kù)(.so)文件

    鴻蒙加載第三方動(dòng)態(tài)鏈接庫(kù)(.so)文件

    在沒(méi)有正確引用so文件情況下會(huì)報(bào)出上述錯(cuò)誤,正確姿勢(shì)應(yīng)該如下 在Android的寫(xiě)法是在main目錄下創(chuàng)建jniLibs,然后.so文件復(fù)制進(jìn)去即可,但是在鴻蒙里面要在libs/內(nèi)放置arm64-v8a和armeabi-v7a兩個(gè)文件夾的so文件,然后在build.gradle文件 加多一個(gè).so的描述 即可使用

    2024年02月13日
    瀏覽(30)
  • python學(xué)習(xí)-第三方庫(kù)的引入

    python學(xué)習(xí)-第三方庫(kù)的引入

    目錄 前言: 第三方庫(kù)的三種引入方式: ?1、使用pip+cmd引入第三方庫(kù) ?2、使用pycharm引入第三方庫(kù) ?3、使用輪子.whl文件進(jìn)行離線安裝 擴(kuò)展知識(shí)-永久更改第三方庫(kù)下載源 ????????在Python語(yǔ)言的庫(kù)中,分為Python標(biāo)準(zhǔn)庫(kù)和Python的第三方庫(kù)。python的標(biāo)準(zhǔn)庫(kù)是隨著pyhon安裝的時(shí)候

    2024年02月05日
    瀏覽(94)
  • uniapp微信小程序引入第三方廣告插件

    uniapp微信小程序引入第三方廣告插件

    ? 以Slime廣告插件為例。 一、微信小程序后臺(tái)申請(qǐng)相關(guān)插件 ? 二、manifest.json文件 三、pages.json文件 四、要使用該插件的vue頁(yè)面 引用插件后就可以使用插件的相關(guān)方法。 附:Slime插件文檔 Slime | 小程序插件 | 微信公眾平臺(tái)

    2024年02月11日
    瀏覽(106)
  • Vue 項(xiàng)目中引入本地第三方 JS 庫(kù)

    ESLint 語(yǔ)法檢測(cè)會(huì)報(bào)錯(cuò): \\\'$\\\' is not define ? ESLint 語(yǔ)法檢測(cè)不會(huì)報(bào)錯(cuò) ? ESLint 語(yǔ)法檢測(cè)不會(huì)報(bào)錯(cuò) ? ESLint 語(yǔ)法檢測(cè)會(huì)報(bào)錯(cuò): \\\'$\\\' is not define 項(xiàng)目開(kāi)啟了 ESLint 語(yǔ)法檢測(cè)的話,會(huì)報(bào)一個(gè) error : \\\'$\\\' is not defined。 1、在每一個(gè)使用 $ 的代碼行上 加? /* eslint-disable */ ?,忽略該報(bào)錯(cuò)。 2、在根

    2024年02月04日
    瀏覽(97)
  • 引入供應(yīng)鏈安全來(lái)保護(hù)第三方代碼元素

    引入供應(yīng)鏈安全來(lái)保護(hù)第三方代碼元素

    應(yīng)用程序安全測(cè)試解決方案 DerScanner 添加了一項(xiàng)新功能,允許用戶驗(yàn)證應(yīng)用程序代碼中的第三方元素。 開(kāi)源軟件供應(yīng)鏈攻擊事件一年內(nèi)增加兩倍,網(wǎng)絡(luò)威脅呈升級(jí)趨勢(shì)。第三方組件的統(tǒng)計(jì)數(shù)據(jù)令人震驚,約占平均應(yīng)用程序代碼量的 80%,使這些組件成為一個(gè)重大的網(wǎng)絡(luò)安全問(wèn)

    2024年01月19日
    瀏覽(24)
  • Flutter插件引入第三方j(luò)ar包之a(chǎn)rmeabi

    Flutter插件引入第三方j(luò)ar包之a(chǎn)rmeabi

    然而我們這個(gè)相機(jī)廠商只提供 armeabi 架構(gòu)的包 由于測(cè)試機(jī)是v8a的架構(gòu),而且flutter經(jīng)過(guò)多個(gè)版本更新后,不能直接flutter run的時(shí)候指定平臺(tái)架構(gòu)為32位的,則 無(wú)法調(diào)用到so文件 ,所以有不小的麻煩。這先按下不表。 首先還是在 plugin/android 的目錄新建一個(gè) libs 文件夾,然后將

    2024年04月16日
    瀏覽(50)
  • 鴻蒙Native輸出so動(dòng)態(tài)庫(kù),并提供給第三方導(dǎo)入使用

    鴻蒙Native輸出so動(dòng)態(tài)庫(kù),并提供給第三方導(dǎo)入使用

    DevEco Studio版本:4.0.0.600 API:9 最近在學(xué)習(xí)鴻蒙的Native輸出so動(dòng)態(tài)庫(kù),下面就給大家分享下我的學(xué)習(xí)心得及在實(shí)現(xiàn)過(guò)程中遇到的問(wèn)題。 實(shí)現(xiàn)需求:通過(guò)so庫(kù)輸出文本內(nèi)容 “你好,鴻蒙!” 參考資料: OpenHarmony Native API 1、創(chuàng)建Native工程 File--New--create Project,選擇Native C++項(xiàng)目 正常

    2024年04月10日
    瀏覽(32)
  • 【Maven】maven引入第三方j(luò)ar包并打包

    【Maven】maven引入第三方j(luò)ar包并打包

    idea中的springboot項(xiàng)目引用第三方j(luò)ar包,打包時(shí)將其引入 本文參照官網(wǎng):http://maven.apache.org/ 第一種:在pom文件引入jar包的目錄 1.選擇File下的project Structure 2.選擇Module,選擇項(xiàng)目模塊,選擇Dependencies下的加號(hào):點(diǎn)擊JARs or Directories…: 3.選擇你jar包所在的位置,點(diǎn)擊OK,點(diǎn)擊Apply,此時(shí)已

    2024年02月16日
    瀏覽(28)
  • 安卓APP引入第三方SDK如何做安全檢測(cè)?

    最近聽(tīng)說(shuō)好多App都被下架處理了,隱私合規(guī)管理特別嚴(yán)格。隔壁王老板公司旗下的一款A(yù)pp就被通報(bào)了,說(shuō)是嵌入的第三方SDK違規(guī)收集用戶個(gè)人信息。 還記得,在2021年的315晚會(huì),上海、北京有幾家公司都被報(bào)道,其SDK均在未經(jīng)用戶授權(quán),竊取用戶個(gè)人信息。涉案App有 50多款,

    2024年02月05日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包