# compile-tool **Repository Path**: wangcaoyu/compile-tool ## Basic Information - **Project Name**: compile-tool - **Description**: 流水线 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 4 - **Created**: 2024-06-06 - **Last Updated**: 2025-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 流水线工具 ### 目录 - 介绍 - 概要简介 - 流水线源码目录 - 约束 - 使用说明 - 编译工程 - 编译UI自动化测试工程 - 定时调度进行编译构建 - 环境配置指引 - OpenHarmony SDK安装 - JDK配置安装 - Node.js配置安装 - 相关资料 ### 介绍 #### 概要简介 为了提高OpenHarmony应用编译的效率及应用的完整性和来源可靠性,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行和调试。本仓提供了OpenHarmony应用自动编译、打包、安装和运行自动化用例的功能; 支持一次性编译一个代码仓下多个OpenHarmony工程(工具会自动识别代码仓下oh项目); 支持含UI自动化测试用例的工程编译打包工作; 支持指定路径下工程编译打包工作; #### 流水线源码目录 ```java compile-tool |——bin # 一键编译脚本 |——config # 配置文件 |——out # 构建结果输出 |——projects # 待构建的工程目录 |——[app_samples] # 工程 |——... |——sdk # OpenHarmony Public SDK (Linux版本) |——sdk-full # OpenHarmony Full SDK (Linux版本) |——tool # 签名工具仓 ``` #### 约束 本编译工具基于Shell脚本开发,故需要部署在Linux环境下。 Linux下需要配置环境如下: | 工具 | 版本要求 | | --------------- | ------------------------------------------------------------ | | JDK | JDK 11 | | Node.js | v14.18.3及以上,且只支持14系列版本。 | | OpenHarmony SDK | 根据需要下载对应版本sdk(**需要下载至流水线工具目录sdk、sdk-full下**) | | Git | v2.17.1及以上 | ### 使用说明 - 单仓单项目 使用一键编译脚本**assembleOneProject.sh**编译项目,脚本所在路径compile-tool/bin/,脚本命令格式如下: ``` assembleOneProject.sh --[options] ``` 编译工程的示例如下所示: 1、使用本地目录编译工程 ``` assembleOneProject.sh --project=[Absolute project path] ``` 2、使用网络路径编译工程 ``` assembleOneProject.sh --url=[git url] --branch=[directory name] ``` 3、设置编译项目的apl等级以及sdk type ``` assembleOneProject.sh --project=[Absolute project path] --apl=[apl level] --sdk_type=[public/full] ``` 4、参数介绍 ``` --project=project path. --sdk_type=[public/full] (default:public) --apl=[normal/basic/core] - use apl (default:normal) --ui=[true/false] - assemble ui (default:false) --sdk_path=[public sdk absolute address] (default:compile-tool/sdk) --full_sdk_path=[full sdk absolute address] (default:compile-tool/sdk-full) --feature=hos_normal_app/hos_system_type (default:hos_normal_app) --bundle_name=project bundle name --url=[git url] --branch=[branch name] (如需,url与branch必须同时设置) --help - prints help screen ``` - 单仓多项目 - 编译打包仓库下所有OpenHarmony项目 1、添加配置文件 以添加app_samples为例:首先新建app_samples_settings.config文件,并添加如下内容 ``` name=applications_app_samples url=https://gitee.com/openharmony/applications_app_samples.git branch=master ``` 2、使用一键编译脚本编译项目(编译applications_app_samples项目中code目录下所有工程) ``` ./compile.sh --p=~/compile-tool/config/samples_master.config --compile_dir=code ``` 3、使用./compile.sh --help 查看其他参数 ``` --p=config path --sign=true/false - Whether the signature (default:true) --sdk_path=[public sdk absolute address] (default:/home/sunwenxu/compile-tool/sdk) --full_sdk_path=[full sdk absolute address] (default:/home/sunwenxu/compile-tool/sdk-full) --compileSdkVersion=[project build-profile.json5 compileSdkVersion] (default:9) --compatibleSdkVersion=[project build-profile.json5 compatibleSdkVersion] (default:9) --sdk_unify=[--compileSdkVersion、--compatibleSdkVersion Effective or not] (default:false) --compile_dir=[compile relative directory] (default:"") --show_projects=[displays automatically identified projects] (default:false) --refresh_code=[whether to refresh the code] (default:true) --jdk=[local java sdk path] --node=[local node path] --help - prints help screen ``` - 编译打包仓库下包含UI自动化测试模块的OpenHarmony项目 1、添加配置文件(如上) 2、使用一键编译脚本编译项目 ``` ./compile-ut.sh --p=[config 绝对路径] ``` 编译结果路径如下,以app_sample为例: ``` compile-tool |——bin # 一键编译脚本 |——config # 配置文件 |——out # 构建结果输出 |——app_sample # app_sample编译结果目录 |——public-sdk # 使用publick sdk编译结果目录 |——hap-out-with-nosigned # 未签名包集合 |——hap-out-with-signed # 签名包集合 |——compile-error-log # 失败日志汇总 |——full-sdk # 使用full sdk编译结果目录 |——hap-out-with-nosigned # 未签名包集合 |——hap-out-with-signed # 签名包集合 |——compile-error-log # 失败日志汇总 ``` - 特殊场景: 背景1:OpenHarmony 3.1.1 Release及以上,OpenHarmony SDK 分为拆分为Public SDK与Full SDK ​ Public SDK:面向应用开发者提供,不包含需要使用系统权限的系统接口。 ​ Full SDK:面向OEM厂商提供,包含了需要使用系统权限的系统接口。 1. 如果工程需要使用Full SDK编译构建,该如何解决? **修改config目录下app_samples_settings.config配置文件(如配置文件不存在,请自行添加);** - 示例如下:app_sample仓目录下有三个项目需要使用Full SDK编译,在config目录下修改app_samples_settings.config配置文件,并添加如下内容(注意:app_sample仓中未配置在该文件中的项目,默认使用Public SDK编译) ``` fullSdkAssembleList=ability/DMS;ability/StageModel;ability/JsDistributedMusicPlayer ``` 背景2:OpenHarmony 应用存在三种不同的访问级别normal(默认)、system_basic、system_core 1. 流水线构建工具默认使用normal权限进行签名,如果需要system_basic、system_core访问权限,应该如何编译签名? - 示例:app_sample仓目录下有两个项目需要使用system_basic访问权限,在config目录下修改app_samples_settings.config配置文件,并添加如下内容(注意:app_sample仓中未配置在该文件中的项目,默认使用normal访问权限编译构建) ``` basicSignList=ability/FormLauncher;common/International ``` - 示例:app_sample仓目录下有一个项目需要使用system_core访问权限,在config目录下修改app_samples_settings.config配置文件,并添加如下内容(注意:app_sample仓中未配置在该文件中的项目,默认使用normal访问权限编译构建) ``` coreSignList=ability/MissionManager ``` ### 环境配置指引 ##### OpenHarmony SDK配置安装 1、初次进行OpenHarmony SDK配置 首次进行OpenHarmony SDK安装推荐使用工具提供的脚本进行安装,进入compile-tool/bin目录执行命令 ``` ./init-sdk.sh ``` OpenHarmony SDK初始化脚本默认使用工具config目录下init_sdk.conf配置文件进行初始化sdk,使用者可根据需要自行修改init_sdk.conf配置文件内容 2、OpenHarmony SDK版本更新 当需要针对某个版本SDK进行升级或者替换时可以使用**update-sdk.sh**脚本完成,进入compile-tool/bin目录执行命令 ``` ./update-sdk.sh --url=https://repo.huaweicloud.com/harmonyos/os/3.2-Beta2/ohos-sdk-windows_linux-full.tar.gz --sdk_path=~/compile-tool/sdk/9 ``` OpenHarmony SDK下载地址获取 - Release版本获取:https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes - 日构建版本获取:http://ci.openharmony.cn/dailys/dailybuilds 以下载[Full SDK 9(3.2.5.5)](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.2-beta2.md)为例,进入网站下拉找到需要下载的版本: ![](./resources/%E6%B5%81%E6%B0%B4%E7%BA%BF%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7_%E6%88%AA%E5%9B%BE1.png) ​ 点击站点开始下载,然后打开下载内容界面复制下载链接 ![](./resources/%E6%B5%81%E6%B0%B4%E7%BA%BF%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7_%E6%88%AA%E5%9B%BE2.png) ##### jdk 配置安装 1. 下载JDK,只支持JDK 11版本。 2. 进入JDK软件包目录,执行如下命令,解压已经下载好的安装包,其中jdk_x64_linux_11.0.13_8.tar.gz为软件包名称,请根据实际进行修改。 ``` tar -xvf jdk_x64_linux_11.0.13_8.tar.gz ``` 3. 配置JDK环境变量。 1. 执行如下命令,打开当前用户下的配置文件.bashrc。 ``` vim ~/.bashrc ``` 2. 在配置文件中,添加JDK的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。 ``` #jdk export JAVA_HOME=/opt/jdk11.0.13_8 export PATH=$JAVA_HOME/bin:$PATH ``` 4. 执行source命令使配置文件立即生效。 ``` source ~/.bashrc ``` 5. 执行如下命令,检查JDK安装结果。 ``` java -version ``` ##### Node.js配置安装 1. 访问[Node.js官方网站](https://nodejs.org/zh-cn/download/releases/),下载Node.js,版本为v14.18.3及以上,且只支持14系列版本。 2. 进入Node.js软件包目录,执行如下命令,解压已经下载好的安装包,其中node-v14.19.1-linux-x64.tar.xz为软件包名称,请根据实际进行修改。 ``` tar -xvf node-v14.19.1-linux-x64.tar.xz ``` 3. 配置Node.js环境变量。 1. 执行如下命令,打开当前用户下的配置文件.bashrc。 ``` vim ~/.bashrc ``` 2. 在配置文件中,添加Node.js的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。 ``` #nodejs export NODE_HOME=/opt/node-v14.19.1-linux-x64/binexport PATH=$NODE_HOME:$PATH ``` 4. 执行source命令使配置文件立即生效。 ``` source ~/.bashrc ``` 5. 执行如下命令,查询Node.js版本信息,确认安装成功。 ``` node -v ``` ##### Python配置安装 ​ 默认情况下,Linux会自带安装[Python](https://so.csdn.net/so/search?from=pc_blog_highlight&q=Python),可以运行python --version命令查看; ##### 相关资料 [通过命令行方式构建应用或服务](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/command-line-building-app-hap-0000001231125588) [full-SDK替换指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/full-sdk-switch-guide.md) [Hap包签名工具](https://gitee.com/openharmony/developtools_hapsigner)