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

如何編譯OpenHarmony SDK API

系統(tǒng) OpenHarmony
OpenHarmony SDK是開源的,可以獲得代碼,因此可以在SDK里根據(jù)需要新增、修改一些代碼,然后編譯出定制的OpenHarmony SDK。也可以獲得最新的代碼,編譯出最新版本的OpenHarmony SDK,如 OpenHarmony SDK API 10 beta版本,來體驗(yàn)新版本。本文就介紹下如何編譯OpenHarmony SDK API。

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

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

https://ost.51cto.com

在OpenHarmony應(yīng)用開發(fā)時(shí),少不了和OpenHarmony SDK打交道。OpenHarmony SDK包含支持的編程語言(即ArkTS、JS、Native)的API和構(gòu)建工具,界面效果預(yù)覽器Previewer和toolchains工具鏈。對于HarmonyOS SDK,在OpenHarmony SDK的基礎(chǔ)上,增加了simulator設(shè)備模擬器、系統(tǒng)鏡像等,后續(xù)預(yù)計(jì)會豐富hms core相關(guān)的能力,如賬戶服務(wù)、地圖服務(wù)等。

OpenHarmony SDK是開源的,可以獲得代碼,因此可以在SDK里根據(jù)需要新增、修改一些代碼,然后編譯出定制的OpenHarmony SDK。也可以獲得最新的代碼,編譯出最新版本的OpenHarmony SDK,如 OpenHarmony SDK API 10 beta版本,來體驗(yàn)新版本。本文就介紹下如何編譯OpenHarmony SDK API。

一、環(huán)境準(zhǔn)備

可以參考官網(wǎng)資料站點(diǎn)設(shè)備開發(fā)文檔來準(zhǔn)備開發(fā)環(huán)境、獲取代碼。

1、安裝庫和工具集

使用如下apt命令安裝后續(xù)操作所需的庫和工具:

sudo apt update
sudo apt install binutils binutils-dev git git-lfs gnupg 
sudo apt install flex bison gperf build-essential zip curl 
sudo apt install zlib1g-dev gcc-multilib g++-multilib 
sudo apt install gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 
sudo apt install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt install lib32z1-dev ccache libgl1-mesa-dev libxml2-utils 
sudo apt install xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip 
sudo apt install ruby genext2fs device-tree-compiler make libffi-dev 
sudo apt install e2fsprogs pkg-config perl openssl libssl-dev libelf-dev 
sudo apt install libdwarf-dev u-boot-tools mtd-utils cpio doxygen 
sudo apt install liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools 
sudo apt install mtools default-jre default-jdk libncurses5 apt-utils 
sudo apt install wget scons python3.8-distutils tar rsync git-core 
sudo apt install libxml2-dev lib32z-dev grsync xxd libglib2.0-dev 
sudo apt install libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs 
sudo apt install squashfs-tools pcmciautils quota ppp libtinfo-dev 
sudo apt install libtinfo5 libncurses5-dev libncursesw5 libstdc++6 
sudo apt install gcc-arm-none-eabi vim ssh locales libxinerama-dev 
sudo apt install libxcursor-dev libxrandr-dev libxi-dev

2、將Python 3.8設(shè)置為默認(rèn)Python版本

查看Python 3.8的位置:

which python3
# 或
which python3.8

將Python和Python3切換為Python 3.8:

#{Python 3.8 路徑}為上一步查看的Python 3.8的位置
sudo update-alternatives --install /usr/bin/python python {Python 3.8 路徑} 1    
sudo update-alternatives --install /usr/bin/python3 python3 {Python 3.8 路徑} 1

本文使用Ubuntu 22.04.2 LTS,預(yù)置的是python3.10,倒也沒有什么影響。Python版本3.8,3.10都可以。但是,對于其他軟件,還是盡量和資料中提交到的軟件版本保持一致,否則可能會導(dǎo)致一些意外。

3、將Ubuntu Shell環(huán)境修改為bash

執(zhí)行如下命令,確認(rèn)輸出結(jié)果為bash。

ls -l /bin/sh

如果輸出結(jié)果不是bash,需要將Ubuntu shell修改為bash。打開終端工具,執(zhí)行如下命令,然后選擇No,將Ubuntu shell由dash修改為bash。

sudo dpkg-reconfigure dash

4、獲取源碼

記錄下獲取最新代碼,也可以參考官方資料頁面:[獲取源碼](OpenAtom OpenHarmony)。

在Ubuntu環(huán)境下通過以下步驟獲取OpenHarmony源碼。

配置gitee用戶信息,替換下面的名稱和郵件。

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

執(zhí)行如下命令安裝碼云repo工具。下述命令中的安裝路徑以"~/bin"為例,請用戶自行創(chuàng)建所需目錄。

mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo 
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

將repo添加到環(huán)境變量。

vim ~/.bashrc # 編輯環(huán)境變量
export PATH=~/bin:$PATH # 在環(huán)境變量的最后添加一行repo路徑信息
source ~/.bashrc # 應(yīng)用環(huán)境變量

通過repo + https下載master分支最新代碼:

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

5、安裝編譯器及二進(jìn)制工具

在源碼根目錄下執(zhí)行prebuilts腳本,安裝編譯器及二進(jìn)制工具。

執(zhí)行成功后,會在源碼根目錄同級目錄下生成一個(gè)目錄openharmony_prebuilts,保存下載的工具軟件壓縮包;會在源碼根目錄下生成一個(gè)目錄prebuilts,有

bash build/prebuilts_download.sh

執(zhí)行成功后,會在源碼根目錄同級目錄下生成一個(gè)目錄openharmony_prebuilts,保存下載的工具軟件壓縮包;會在源碼根目錄下生成一個(gè)目錄prebuilts,包含解壓后的各種工具,如下:

zhushy@DESKTOP-RPE9R4O:~/openharmony/prebuilts$ tree -L 2
.
├── ark_tools
│   └── ark_js_prebuilts
├── build-tools
│   ├── common
│   └── linux-x86
├── clang
│   └── ohos
├── cmake
│   ├── linux-x86
│   └── windows-x86
├── develop_tools
   ├── bpftool
│   └── pahole
├── gcc
│   └── linux-x86
├── mingw-w64
│   └── ohos
├── python
│   └── linux-x86
└── rustc
    ├── linux-x86_64
    ├── rust-1.68.0-dev-x86_64-unknown-linux-gnu
    ├── rust-std-1.68.0-dev-aarch64-linux-ohos
    └── rust-std-1.68.0-dev-armv7-linux-ohos

二、編譯full-SDK

在官網(wǎng)資料編譯full-SDK內(nèi),提到編譯SDK需要執(zhí)行一些命令來需要的軟件包:

yes y | sudo apt install libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev
rm -rf prebuilts/clang/ohos/darwin-x86_64/clang-480513
rm -rf prebuilts/clang/ohos/windows-x86_64/clang-480513
rm -rf prebuilts/clang/ohos/linux-x86_64/clang-480513
bash build/prebuilts_download.sh -ndk
prebuilts_download.sh apt-get update -qqy
apt-get install doxygen -y --force-yes

上述命令中,實(shí)際運(yùn)行時(shí),我的環(huán)境上不存在需要?jiǎng)h除的文件目錄clang-480513。執(zhí)行prebuilts_download.sh時(shí),也不需要指定-ndk參數(shù)。

執(zhí)行完畢上述命令,就可以構(gòu)建OpenHarmony Full SDK了。

./build.sh --product-name ohos-sdk --ccache

執(zhí)行成功后,OpenHarmony SDK會輸出到out/sdk/packages/ohos-sdk/:

zhushy@DESKTOP-RPE9R4O:~/openharmony$ tree out/sdk/packages/ohos-sdk/ -L 2
out/sdk/packages/ohos-sdk/
├── linux
│   ├── ets-linux-x64-4.0.9.5-Beta2.zip
│   ├── js-linux-x64-4.0.9.5-Beta2.zip
│   ├── native-linux-x64-4.0.9.5-Beta2.zip
│   ├── previewer-linux-x64-4.0.9.5-Beta2.zip
│   └── toolchains-linux-x64-4.0.9.5-Beta2.zip
└── windows
    ├── ets-windows-x64-4.0.9.5-Beta2.zip
    ├── js-windows-x64-4.0.9.5-Beta2.zip
    ├── native-windows-x64-4.0.9.5-Beta2.zip
    ├── previewer-windows-x64-4.0.9.5-Beta2.zip
    └── toolchains-windows-x64-4.0.9.5-Beta2.zip

編譯輸出OpenHarmony SDK后,就可以替換SDK來使用了。

三、關(guān)于OpenHarmony SDK的一些其他知識

1、ohos-sdk模塊配置

上文簡單介紹過,OpenHarmony SDK包含ets、js、native、previewer、toolchains等模塊,這些模塊定義在文件ohos_sdk_description_std.json。這個(gè)文件是個(gè)json數(shù)組,每個(gè)元素是個(gè)對象,包含install_dir、module_label和target_os,片段如下:

[
    {
        "install_dir": "toolchains",
        "module_label": "http://developtools/syscap_codec:syscap_tool_bin",
        "target_os": [
            "linux",
            "windows",
            "darwin"
        ]
    },
   ......
    {
        "install_dir": "js/api",
        "module_label": "http://interface/sdk-js:ohos_declaration_common",
        "target_os": [
            "windows",
            "linux",
            "darwin"
        ]
    },
   ......
    {
        "install_dir": "ets/build-tools/ets-loader/bin/ark/build-mac/bin",
        "module_label": "http://arkcompiler/ets_frontend/es2panda:es2abc_build_mac_ets",
        "target_os": [
            "darwin"
        ]
    },
 .....   
]

2、如何編譯Public SDK

上文編譯的是Full SDK,如果只想編譯Public SDK,可以執(zhí)行如下命令:

./build.sh --product-name ohos-sdk --gn-args sdk_build_public=true

其中g(shù)n參數(shù):sdk_build_public定義在文件ohos_var.gni。

declare_args() {
  sdk_build_public = false
}

該參數(shù)在文件BUILD.gn中使用:

if (sdk_build_public) {
  public_sdk_config_parser = "http://build/ohos/sdk/parse_public_sdk.py"
  ohos_sdk_pub_description_file =
      "http://out/sdk-public/ohos_sdk_pub_description_std.json"
 ......
}

3、如何區(qū)分Public SDK和Full SDK

Public-SDK是提供給應(yīng)用開發(fā)的工具包,跟隨DevEco Studio下載,不包含系統(tǒng)應(yīng)用所需要的高權(quán)限API。Full-SDK是提供給OEM廠商開發(fā)應(yīng)用的工具包,不能隨DevEco Studio下載,包含了系統(tǒng)應(yīng)用所需要的高權(quán)限API。Public-SDK不支持開發(fā)者使用所有的系統(tǒng)API,包括animator組件、xcomponent組件、@ohos.application.abilityManager.d.ts、@ohos.application.formInfo.d.ts、@ohos.bluetooth.d.ts等,如工程必須依賴于系統(tǒng)API,需要替換為Full SDK。如果SDK名稱上不能區(qū)分,可以查看ets\api目錄下是否包含文件@ohos.application.abilityManager.d.ts,包含則為Full SDK,否則為Public SDK。

高權(quán)限API也可以從注釋中可以看出來,帶@systemapi標(biāo)記的就是高權(quán)限的系統(tǒng)接口。

/**
   * Updates the configuration by modifying the configuration.
   *
   * @permission ohos.permission.UPDATE_CONFIGURATION
   * @param { Configuration } config - Indicates the new configuration.
   * @param { AsyncCallback<void> } callback - The specified callback method.
   * @syscap SystemCapability.Ability.AbilityRuntime.Core
   * @systemapi
   * @since 8
   * @deprecated since 9
   * @useinstead ohos.app.ability.abilityManager/abilityManager#updateConfiguration
   */
  function updateConfiguration(config: Configuration, callback: AsyncCallback<void>): void;

4、Public SDK和Full SDK在IDE中的使用

如果需要在DevEco Studio中使用編譯的SDK,需要參考替換SDK相關(guān)文檔完成替換。在應(yīng)用工程級build-profile.json5文件中,設(shè)置SDK版本,如下圖所示,然后點(diǎn)擊該文件右上角的Sync Now進(jìn)行同步,即可看到左側(cè)的External Libraries的ArkTS版本發(fā)生了變化。

如何編譯OpenHarmony SDK API-開源基礎(chǔ)軟件社區(qū)如何編譯OpenHarmony SDK API-開源基礎(chǔ)軟件社區(qū)

如果使用的SDK不對,會無法導(dǎo)入期望的模塊,如下圖:

如何編譯OpenHarmony SDK API-開源基礎(chǔ)軟件社區(qū)如何編譯OpenHarmony SDK API-開源基礎(chǔ)軟件社區(qū)

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

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

https://ost.51cto.com

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

2023-07-18 14:00:00

鴻蒙Sample案例

2023-02-09 15:28:19

鴻蒙編譯速度

2023-12-11 17:26:21

Launcher鴻蒙預(yù)安裝應(yīng)用

2022-01-11 15:41:18

鴻蒙HarmonyOS應(yīng)用

2023-08-11 14:06:58

鴻蒙Windows

2024-07-26 16:39:33

鴻蒙系統(tǒng)開源構(gòu)建系統(tǒng)

2023-12-11 17:30:52

預(yù)安裝應(yīng)用鴻蒙Launcher

2022-02-25 15:08:06

DevEco開發(fā)OpenHarmon鴻蒙

2022-03-29 10:04:44

APIHarmony文件管理

2023-02-01 16:28:30

Linux內(nèi)核鴻蒙

2011-09-14 16:12:50

Android SDK

2021-07-02 14:16:04

鴻蒙HarmonyOS應(yīng)用

2023-03-08 15:33:11

鴻蒙操作系統(tǒng)

2023-06-12 15:43:44

鴻蒙智能家居開發(fā)

2021-12-02 10:05:01

鴻蒙HarmonyOS應(yīng)用

2022-05-07 16:13:59

DevEcoTool鴻蒙

2022-05-27 15:04:53

鴻蒙操作系統(tǒng)

2011-06-16 09:10:49

Qt Symbian Nokia

2011-05-27 12:51:44

Android API

2022-05-11 15:08:52

驅(qū)動(dòng)開發(fā)系統(tǒng)移植
點(diǎn)贊
收藏

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