ARM64鸿蒙原生版 HarmonyOS Command Line Tools 26.0.0 Beta2 (26.0.0.621) + OHOS SDK 26.0.0.18 Beta

@Ta 08-17 02:59发布,08-18 11:42修改 683点击

下载

描述

由华为官方的 x64 Linux 版 Command Line Tools 26.0.0 Beta2ARM64 鸿蒙版 OpenHarmony SDK 26.0.0.18 Beta 组合而来,打了自定义hvigorw补丁和ld.lld自动签名补丁,可在鸿蒙PC上原生运行,可打包出能正常运行的鸿蒙hap。

依赖包

  • 使用签名工具需要安装java,把系统伪装成Linux需要安装uname-is-linux,可通过brew安装
brew install java uname-is-linux

用法

# 把系统伪装成Linux,防止报错(重要,缺少这步会导致hvigorw把系统误认为macOS并加载不存在的dylib库)
export LD_PRELOAD="$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so"

export TOOL_HOME="/path/to/output/command-line-tools"
export OHOS_SDK="$TOOL_HOME/sdk/default/openharmony"
export PATH="$TOOL_HOME/bin:$OHOS_SDK/toolchains/lib:$OHOS_SDK/native/build-tools/cmake/bin:$OHOS_SDK/native/llvm/bin:$PATH"

cd /path/to/harmony-project
hvigorw assembleHap

相关项目

  1. ARM64 鸿蒙版 llvm-mingw 编译器(用于构建 wine 或其他 Windows 项目): https://github.com/SwimmingTiger/llvm-mingw/releases
  2. ARM64 Linux 版 Command Line Tools(可在融合开发引擎中运行): https://github.com/SwimmingTiger/third_party_llvm-project/releases
  3. 我测试过可构建的复杂鸿蒙项目: https://github.com/SwimmingTiger/WineHua (构建方法见 https://github.com/winehua/WineHua/pull/64 )

已知问题

  1. brew 的 cat 和 cp 命令可能会导致项目构建出问题,建议将其重命名,改用系统自带 cat 和 cp 命令。
cd ~/.harmonybrew/bin
mv cat cat.bak
mv cp cp.bak

导致失败的具体案例: https://github.com/SwimmingTiger/WineHua/blob/1905986cdbeb162888db992ab6da695edcffc1e6/build-on-ohos.sh#L95
相关issue:

  1. 如果忘记设置 export LD_PRELOAD="$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so"hvigorw会报错:
Error Message: Failed to load the library '……/command-line-tools/sdk/default/hms/toolchains/lib/libimage_transcoder_shared.dylib', path invalid

此时请先结束所有的hvigor后台进程(killall -9 node,不加-9结束不掉),然后重新设置export LD_PRELOAD="$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so"再构建:

killall -9 node
export LD_PRELOAD="$HOME/.harmonybrew/opt/uname-is-linux/lib/libuname.so"
hvigorw assembleHap
  1. BiSheng 编译器中的 clang 部分已经由普通 llvm clang 符号连接取代,无法使用 BiSheng 特有功能。

  2. 以下库文件是 stub,需要用到它们的项目可能会出问题:

./sdk/default/hms/toolchains/lib/libastc_encoder_shared.so
./sdk/default/hms/toolchains/lib/libtextureSuperCompress.so
./sdk/default/hms/toolchains/lib/libastcCustomizedEncode.so
./sdk/default/hms/toolchains/lib/libhilog.so
./sdk/default/hms/toolchains/lib/liblz4_shared.so
./sdk/default/hms/toolchains/lib/libimage_transcoder_shared.so
  1. 以下x64 ELF没有被替换为原生二进制,所以撤销了执行权限,需要用它们的项目可能会出问题,请自行在brew或其他地方寻找替代:
./codelinter/linter/performanceAgent/cppaudit
./codelinter/linter/performanceAgent/hpaudit
./emulator/Emulator
./emulator/emulator-crash-service
./emulator/lib/libQt5Core.so.5
./sdk/default/openharmony/ets/build-tools/ets-loader/bin/ark/build/legacy_api8/bin/js2abc
./sdk/default/openharmony/ets/build-tools/ets-loader/bin/ark/build/bin/profdump
./sdk/default/openharmony/ets/build-tools/ets-loader/bin/ark/build/bin/merge_abc
./sdk/default/openharmony/ets/build-tools/ets-loader/bin/ark/build/bin/ark_aot_compiler
./sdk/default/openharmony/js/build-tools/ace-loader/bin/ark/build/bin/merge_abc
./sdk/default/openharmony/js/build-tools/ace-loader/bin/ark/build/legacy_api8/bin/js2abc
./sdk/default/openharmony/native/build-tools/cmake/bin/cmake-gui
./sdk/default/openharmony/native/llvm/python3/bin/python3.12
./sdk/default/openharmony/native/llvm/bin/python/lib/python3.12/lldb/lldb-argdumper
./sdk/default/openharmony/toolchains/idl
./sdk/default/openharmony/toolchains/glslang_validator
./sdk/default/openharmony/toolchains/hnpcli
./sdk/default/openharmony/toolchains/spirv-remap
./sdk/default/openharmony/previewer/common/bin/Previewer
./sdk/default/hms/native/BinXO/binxo
./sdk/default/hms/toolchains/hilogtool
./sdk/default/hms/native/BiSheng/bin/llvm-bolt
./sdk/default/hms/native/BiSheng/bin/llvm-ifs
./sdk/default/hms/native/BiSheng/bin/clang-prob-annotate
./sdk/default/openharmony/native/build-tools/cmake/bin/ccmake
./sdk/default/openharmony/toolchains/diff
./sdk/default/hms/toolchains/syscap_tool
回复列表(0|隐藏机器人聊天)
帖子没有回复
添加新回复
回复需要登录