# OpenHarmony_5.1.0 **Repository Path**: cocobar/open-harmony_5.1.0 ## Basic Information - **Project Name**: OpenHarmony_5.1.0 - **Description**: OpenHarmony_5.1.0的repo仓库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: oh-xtcaosp-1.1.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-25 - **Last Updated**: 2025-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 环境安装 下载好源码后,进行安装 ```shell ./build/build_scripts/env_setup.sh ``` ### 设置 bash 打开终端工具,执行如下命令,输入密码,然后选择No,将Ubuntu shell由dash修改为bash。 ```shell sudo dpkg-reconfigure dash ``` ### android sdk 安装 ```shell wget https://googledownloads.cn/android/repository/commandlinetools-linux-13114758_latest.zip unzip commandlinetools-linux-13114758_latest.zip ``` ```shell sudo apt install openjdk-17-jdk ./sdkmanager --install "ndk;21.3.6528147" --sdk_root=~/android-sdk ./sdkmanager --install "platforms;android-26" --sdk_root=~/android-sdk ./sdkmanager --install "build-tools;28.0.3" --sdk_root=~/android-sdk ``` ```shell // 配置环境变量 export ANDROID_HOME=~/android-sdk export PATH=${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/build-tools/28.0.3:${ANDROID_HOME}/platform-tools:${PATH} ``` ### 准备repo环境 `mkdir ~/repo_bin` `cd ~/repo_bin` `curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo` `chmod +x repo` `vim ~/.bashrc` `export PATH=~/repo_bin:$PATH` `export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo` `source ~/.bashrc` ### 外置的 rust 交叉编译工具安装 `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` `废弃 add /home/wangfeng/.cargo/bin to /home/wangfeng/.bashrc` `source .bashrc` `废弃 rustup default nightly` `废弃 rustup default 1.72.0` `rustup toolchain install nightly-2023-09-01` `rustup override set nightly-2023-09-01` `废弃 rustup toolchain install nightly-2024-05-28` `rustup target add armv7-linux-androideabi` `rustup target add i686-linux-android` `rustup target add aarch64-linux-android` `rustup target add x86_64-linux-android` `rustup target add arm-linux-androideabi` ### 代码下载和编译 创建完整的目录,因为有prebuilts文件夹存在,需要创建两级 `mkdir -p ~/OpenHarmony-5.1.0/OpenHarmony` `cd ~/OpenHarmony-5.1.0/OpenHarmony` 华为原始的仓库 `repo init -u https://gitee.com/openharmony/manifest.git --no-repo-verify -b refs/tags/OpenHarmony-v5.1.0-Release` 自己的仓库 下载主干 `repo init -u https://gitee.com/cocobar/open-harmony_5.1.0.git --no-repo-verify` 下载增加 xtcaosp 的分支 稳定的分支 `repo init -u https://gitee.com/cocobar/open-harmony_5.1.0.git -b oh-xtcaosp-1.0.0 --no-repo-verify` 正在开发的全编译分支,后续都在这里开发 `repo init -u https://gitee.com/cocobar/open-harmony_5.1.0.git -b oh-xtcaosp-1.1.0 --no-repo-verify` 拉取代码 `repo sync -c` 同步大文件 `repo forall -c 'git lfs pull'` 下载 prebuilts 文件 `build/prebuilts_download.sh` 这个是官方的编译示例,可能部分分支编译不过 `./build.sh --product-name rk3568` 修改中的分支 `./build.sh --product-name xtcaosp` ## 以下是具体遇到的一些问题解法 编译出现的问题 `Makefile : Too many open files` `ulimit -Sn 65535 # 设置软限制` `ulimit -Hn 65535 # 设置硬限制(需要root权限或适当权限)` 不要使用coda下的patch执行文件,否则会出错,要用系统自带的 在 build/hb/services/ninja.py 文件修改编译并行数 `ninja_cmd = [self.exec, '-w', 'dupbuild=warn', '-j 16',` 在 kernel/linux/build/kernel_build.py 文件中修改内核的编译并行数 `make = f'make -j{os.cpu_count()} ARCH={arch} CROSS_COMPILE={cross_compile}'` ## ArkUI-X 项目同步代码 `mkdir -p ~/arkui-x/arkui` `cd ~/arkui-x/arkui` `repo init -u https://gitcode.com/arkui-x/manifest.git -b ArkUI-X-5.1.0-Release --no-repo-verify` `repo sync -c` `repo forall -c 'git lfs pull'` ##### 编译 `./build/prebuilts_download.sh --build-arkuix --skip-ssl` `./build.sh --product-name arkui-x --target-os android` ### 提交repo项目本身 ##### 查看 manifest 文件的状态(通常位于 .repo/manifests/ 目录下) `git status .repo/manifests/` ##### 切换到 manifests 对应的 Git 仓库(该仓库独立于项目的其他代码仓库) `cd .repo/manifests/` ##### 添加修改到暂存区(假设 manifest 文件名为 default.xml) `git add default.xml # 或者使用 git add . 添加所有变更` ##### 提交变更(填写有意义的提交信息,比如“Update manifest for feature X”) `git commit -m "提交说明:更新 manifests 配置,指向新的分支或版本"` ##### 将本地提交推送到远程仓库(通常是 origin 远程) `git push origin HEAD:master # 注意:分支名称可能是 main、master 或其他,需根据实际情况调整` `git push origin HEAD:oh-xtcaosp-1.0.0` ##### 自定义项目project模块提交方式为 `git push selfdef HEAD:master` ### 开始分离项目 之前编译的是 `./build.sh --product-name rk3568` 现在需要编译的是 `xtcaosp` 这个项目 主要修改清单 product_name rk3568 全部改为 xtcaosp device_company rockchip 改为 xtc board rk3568 改为 xtcaosp rockchip_products 改为 xtc_products 执行下面的命令编译 `./build.sh --product-name xtcaosp` 第一个分支 `oh-xtcaosp-1.0.0` 版本名 `oh-xtcaosp-1.0.0` 自己从rk复制的xtcaosp的产品配置,可以完整编译 ### 采用 android-clang 编译遇到的问题 android-clang 的版本较低,有些编译标志位不同,需要先屏蔽,后面可以考虑升级 android sdk 来解决,但是工作量大,后置 ### 不采用 musl 库问题之后的问题解决 在下面放了很多 musl 接口的空申明,先编译过 `vendor/xtc/xtcaosp/dummy-include` `vendor/xtc/xtcaosp/dummy-src`