从编译脚本上看是支持的mac的
case $(uname -s) in
Darwin)
HOST_DIR="darwin-x86"
HOST_OS="mac"
;;
Linux)
HOST_DIR="linux-x86"
HOST_OS="linux"
;;
*)
echo "Unsupported host platform: $(uname -s)"
RET=1
exit $RET
esac
- mac平台的只能在mac上编译(目前是)
- Linux上可以交叉编译出win
- 编译命令默认也是会编译出Linux和win两个平台的sdk
mac上有一些要求,比如必须安装xcode。
默认最小版本 10.12,但是高于11不行。
_sdk_min_from_env = getenv("FORCE_MAC_SDK_MIN")
declare_args() {
# Minimum supported version of the Mac SDK.
if (_sdk_min_from_env == "") {
mac_sdk_min = "10.12"
} else {
mac_sdk_min = _sdk_min_from_env
}
}
-下面脚本只匹配的 10和11(目前是这样的,当前时间:20220528)
sdk_dir = os.path.join(
str(out.rstrip(), encoding="utf-8"),
'Platforms/MacOSX.platform/Developer/SDKs')
# Xcode must be installed, its license agreement must be accepted, and its
# command-line tools must be installed. Stand-alone installations (in
# /Library/Developer/CommandLineTools) are not supported.
# https://bugs.chromium.org/p/chromium/issues/detail?id=729990#c1
file_path = os.path.relpath("/path/to/Xcode.app")
if not os.path.isdir(sdk_dir) or not '.app/Contents/Developer' in sdk_dir:
raise SdkError('Install Xcode, launch it, accept the license ' +
'agreement, and run `sudo xcode-select -s %s` ' % file_path +
'to continue.')
sdks = [re.findall('^MacOSX(1[0,1]\.\d+)\.sdk$', s) for s in
os.listdir(sdk_dir)]
sdks = [s[0] for s in sdks if s] # [['10.5'], ['10.6']] => ['10.5', '10.6']
sdks = [s for s in sdks # ['10.5', '10.6'] => ['10.6']
if list(parse_version(s)) >= list(parse_version(min_sdk_version))]
环境
-
MacOS:10.12 - 11应该都可以,系统版本12目前不行
- 我的
11.6.5 (20G527)
- 我的
-
Xcode:必须安装
- 我的
Version 11.5 (11E608c)
- 我的
-
gitee账号
- https://gitee.com/
-
git
- 参考后文
-
git-lfs
- 参考后文
-
python3
- 参考后文
-
repo
- 参考后文
-
node
- 参考后文
-
Java
- 参考后文
Ubuntu
需要 Ubuntu 环境的可以参考下面链接
https://www.jianshu.com/p/24be266a1c4e
Brew
如果没有brew,百度安装
如果有提示,请按照提示操作
重置brew.git
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
重置核心软件仓库
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git
重置Homebrew cask软件仓库
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://github.com/Homebrew/homebrew-cask
python
- Version:3+
https://www.python.org/
brew install python3
git
gitee账号信息
- 生成公私钥
ssh-keygen -t rsa -C "message"
注册gitee
将本机ssh公钥放置gitee上
install git
- mac
brew install git
configure git
git config --global user.name "binny"
git config --global user.email "[email protected]"
git config --global credential.helper store
install git-lfs
https://gitee.com/mirrors/git-lfs?_from=gitee_search
install repo
mkdir -p ~/.bin
PATH="${HOME}/bin:${PATH}"
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/.bin/repo
chmod a+rx ~/.bin/repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
download master
Download
repo init -u [email protected]:openharmony/manifest.git -b master --no-repo-verify
Sync
repo sync -c -d -j8 --force-sync --fail-fast -q --no-tags --prune ; repo forall -j8 -c "git lfs pull"
- 或者
repo sync -c
- 同步大文件,好像是编译器之类的,没仔细看日志
repo forall -c 'git lfs pull'
这一步有输出警告,应该不影响,输出警告的文件:
vim /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/multiprocessing/resource_tracker.py
finally:
# all processes have terminated; cleanup any remaining resources
for rtype, rtype_cache in cache.items():
if rtype_cache:
try:
warnings.warn('resource_tracker: There appear to be %d '
'leaked %s objects to clean up at shutdown' %
(len(rtype_cache), rtype))
except Exception:
pass
for name in rtype_cache:
# For some reason the process which created and registered this
# resource has failed to unregister it. Presumably it has
# died. We therefore unlink it.
try:
try:
_CLEANUP_FUNCS[rtype](name)
except Exception as e:
warnings.warn('resource_tracker: %r: %s' % (name, e))
finally:
pass
brew 安装工具包
我开始在 mac 上大环境的时候,也是对着 Linux 上的名字安装了一部分。缺少去网上搜吧,下图是我本机的,仅供参考(下面的不都是 ohos 需要的)
ohos % brew list
==> Formulae
brotli coreutils git icu4c libunistring mpdecimal [email protected] readline wget
c-ares gdbm git-lfs libidn2 libuv node@12 pcre2 sqlite xz
ca-certificates gettext gmp libnghttp2 macos-term-size openjdk@17 [email protected] tree
brew update
brew install wget
- md5sum等
brew install coreutils
java环境
- 没有的话,自己安装,这个我以前装过,装 Java 环境,好装,百度吧
brew install openjdk@17
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
java -version
prebuilts
- 执行prebuilts,在源码根目录下执行,安装编译器及二进制工具(注意文件名和路径,同事给我的名字有的都不一样了)
sudo bash build/prebuilts_download.sh –no-check-certificatie-skip-ssl
- 缺少啥就装啥。
sudo npm i -g nan
版本编译
- 编译 SDK
sudo ./build.sh --product-name ohos-sdk
- 单独安装的不支持
# Xcode must be installed, its license agreement must be accepted, and its
# command-line tools must be installed. Stand-alone installations (in
# /Library/Developer/CommandLineTools) are not supported.
# https://bugs.chromium.org/p/chromium/issues/detail?id=729990#c1
- 完成
[OHOS INFO] [28/28] STAMP obj/build/core/gn/build_ohos_sdk.stamp
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem files NO. percentage builds NO. percentage overlap rate
[OHOS INFO] graphic 8 0.1% 12 0.1% 1.50
[OHOS INFO] hiviewdfx 4 0.0% 6 0.1% 1.50
[OHOS INFO] multimedia 2 0.0% 3 0.0% 1.50
[OHOS INFO] startup 2 0.0% 3 0.0% 1.50
[OHOS INFO] global 13 0.2% 14 0.2% 1.08
[OHOS INFO] third_party 3590 44.7% 3597 44.6% 1.00
[OHOS INFO] thirdparty 3590 44.7% 3597 44.6% 1.00
[OHOS INFO] arkui 1395 17.4% 1397 17.3% 1.00
[OHOS INFO] aafwk 39 0.5% 39 0.5% 1.00
[OHOS INFO] ark 67 0.8% 67 0.8% 1.00
[OHOS INFO] developtools 61 0.8% 61 0.8% 1.00
[OHOS INFO] securec 78 1.0% 78 1.0% 1.00
[OHOS INFO] utils 50 0.6% 50 0.6% 1.00
[OHOS INFO]
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO]
[OHOS INFO]
[OHOS INFO] sdk build success
[OHOS INFO] cost time: 0:01:39
=====build successful=====
- 编译成功后,如果有文件权限问题
sudo chmod -R 777 out
- 位置
/Users/binny/ohos/out/sdk/ohos-sdk/darwin
=====build successful=====
2022-05-29 06:09:17
++++++++++++++++++++++++++++++++++++++++
ohos % tree -L 2 -d /Users/binny/ohos/out/sdk/ohos-sdk
/Users/binny/ohos/out/sdk/ohos-sdk
└── darwin
├── ets
├── js
├── previewer
└── toolchains
5 directories
ohos %