废话不多说,先上效果图:
使用该方法安装的hap为系统hap,不可卸载。文档写的使用hdc安装hap暂未走通。请参考官方文档。
有打包、签名(建议参考一下官方文档的签名,和HarmonyOS签名方式有些许改动)基础的请移步至底部的第4步。
1.工欲善其事必先利其器
需要用到的工具:
- hap开发工具DevEco Studio 2.1 Release
- 代码修改工具VS Code
- 代码管理工具:Git
- JAVA环境
- docker编译环境
- 烧录工具Hitool
2.准备工作
开发hap首先需要下载并安装好DevEco Studio 2.1 Release,其次需要下载OpenHarmonySDK包并解压。打开DevEco Studio,在顶部导航栏找到Tools->SDK Manager设置IDE的SDK。将SDK路径设为openharmonySDK解压路径,设置后会自动勾选SDK(API Version6)。
配置完SDK后,进入Sdkjs2.2.0.0build-toolsace-loader目录,然后在该目录下运行命令行工具,分别执行如下命令,直至安装完成。
- npm cache clean -f
- npm install
复制代码
至此IDE配置完成。
确保安装有Git环境条件下,进入到IDE的欢迎界面,选择Import HarmonyOS Sample, 再选择common下的HelloWorld或者JsHelloWorld工程,然后点击Next。就可对想做的hap应用进行开发。文档参考
3.hap的签名设置(hap必须签名)
hap开发完成后须进行签名及打包,签名步骤如下: 官方文档参考
1.生成密钥和证书请求文件
使用DevEco Studio即可生成密钥和证书请求文件。菜单栏选择 Build->Generate Key and CSR。点击New进行新建Key Store File,填入相关信息,点击Next按钮进入下一步操作。
2.生成应用证书文件
将第一步生成的*.csr证书文件复制到解压的 OpenHarmonySDK目录下的Sdktoolchainslib文件夹下。在lib目录下打开shell窗口执行以下命令生成应用证书文件。此处可修改项仅 -infile、-outfile 后边的参数,其余命令参数皆不可修改。
注意此处使用Java的keytool命令工具,需要先将该工具在系统环境变量中进行设置。
- keytool -gencert -alias "OpenHarmony Application CA" -infile app.csr -outfile IDE.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc
复制代码
3.生成应用Profile文件
进入Sdktoolchainslib目录下,打开命令行工具,执行如下命令。
- java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out SgnedReleasedProfileTemplate.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name 包名 --permission 受限权限名(可选) --permission 受限权限名(可选) --distribution-certificate IDE.cer
复制代码- 说明: 在上述命令中,标识为蓝色字体的字段不能修改,否则会导致Profile文件生成失败。
- 关于该命令的参数说明如下:
- provisionsigtool:Profile文件生成工具,文件在OpenHarmony SDK的Sdktoolchainslib路径下。
- in:Profile模板文件所在路径,文件在OpenHarmony SDK中Sdktoolchainslib路径下,该参数不能修改。
- out:输出的Profile文件名和路径。
- keystore:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中Sdktoolchainslib路径下,该参数不能修改。
- storepass:密钥库密码,密码为123456,该参数不能修改。
- alias:用于签名Profile私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改。
- sigalg:证书签名算法,该参数不能修改。
- cert:签名Profile的证书文件路径,文件在OpenHarmony SDK中Sdktoolchainslib路径下,该参数不能修改。
- validity:证书有效期,自定义天数。
- developer-id:开发者标识符,自定义一个字符串。
- bundle-name:填写应用包名。
- permission:可选字段,如果不需要,则可以省去此字段;如果需要添加多个受限权限,则如示例所示重复输入。受限权限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
- distribution-certificate:生成应用证书文件中生成的证书文件。
复制代码
4.配置应用签名信息
通过以上3个步骤就能生成hap的签名文件,接下来就需要将签名文件在hap中进行配置。在DevEco Studio菜单栏选择File->Project Structure然后选中Project、SigningConfigs。将前3个步骤设置的签名文件对应放入栏目中。其中StoreFile使用第一步生成的*.p12证书;Store Password、Key Alias、Key Password也是对应第一步中填入信息;sign Alg保持不变;Profile File,Certpath File分别采用第二、第三步在Sdktoolchainslib文件夹下生成的证书,最后点击OK按钮即完成证书配置。
5.打包签名的hap应用
在DevEco Studio菜单栏选择build->build hap(s)/build app(s)->build hap(s)开始打包hap文件。打包完成后在entrybuildoutputshapdebug目录中找到签名的*.hap文件。
4.已开发好的hap存放及文件修改(关键)
将签名的hap改名并放入下载的openharmony2.0-canary的applications->standard->hap目录下(此处以Hello.hap)为例子,其余为代码自带hap。然后修改BUILD.gn文件,将我们的Hello.hap包含进去;然后修改ohos.build文件,将不想要的hap包删除,并把BUILD.gn中包含的hello_hap放入“module_list”这个数组中。
至此代码修改已完成。
5.编译烧录
需要注意的是编译时最好删除out目录,进行全量代码编译,烧录使用网口烧录,串口的速率能把人直接劝退。
以上分享完毕,在openharmony2.0能做哪些花里胡哨的系统应用,打造属于自己的系统,就请努力的写bug吧!!!
本人未系统学习过嵌入式相关知识,有错误地方,敬请多多指正!