目录
- 1、真机运行
- 1.1、运行安装错误
- 1.2、解决方案:
- 第一步:安装兼容真机的sdk版本2.2.0(API6),如下图所示:
- 第二步:新建一个API6的工程项目
- 第三步:运行API6创建的工程项目
- 第四步:配置Debug签名
- 第五步:再次运行
- 1.3、安装小结
- 2、正式版签名并打包
- 2.1、创建p12和csr文件
- 2.1.1、第一种:在IDE中创建签名文件
- 第一步:先点击Build/Generate Key and CSR菜单
- 第二步:选择key store file文件
- 第三步:设置.p12文件存储的位置及密码
- 第四步:填写必要的信息
- 第五步:查看p12和csr文件
- 2.1.2、通过Cmd命令来生成签名文件
- 第一步:生成P12密钥文件
- 第二步:生成csr文件
- 第三步:查看生成的p12和csr文件
- 2.2、创建cer文件
- 2.3、创建p7b文件
- 第一步:回到AppGallery connect的主界面,如下图所示:
- 第二步:点击”我的项目“,进入界面,如下图所示:
- 第三步:点击”添加项目“,输入项目名称,并点击”创建并继续“按钮,如下图所示:
- 第四步:可手动关闭为此项目启动分析服务,减少步骤,如下图所示:
- 第五步:点击”完成“之后,开始为此项目添加应用,如下图所示:
- 第六步:添加应用
- 第七步:添加应用成功后,添加HAP Provision Profile,如下图所示:
- 第八步:下载p7b证书,如下图所示:
- 第九步:查看证书,如下图所示:
- 3、配置Release签名信息
- 4、打包hap和app
- 5、总结
- 6、参考链接
1、真机运行
1.1、运行安装错误
Failure[INSTALL_PARSE_FAILED_USESDK_ERROR]
原因:就是APP的高版本API和真机的低版本API不兼容,导致运行安装到真机上失败,高版本API9不能兼容鸿蒙3.0的真机系统。
目前只有一台华为真机,其鸿蒙系统版本是3.0.0.168,而我安装的sdk版本是最新的,如下面的图所示:
此时看到的现象是:Device设备能选到,点击执行安装APP时,就报错INSTALL_PARSE_FAILED_USESDK_ERROR ,执行hdc list targets 命令始终是[Empty]。
hdc指令可能会遇到error: no devices/emulators found 这种错误,插拔一下真机设备,很可能就是连接没成功,反复多试几次,直至成功,找到驱动,获取真机的API版本,如下图所示:
确认了华为真机鸿蒙系统的API版本是6,我想继续在这台真机上安装调试APP,怎么办呢?
1.2、解决方案:
第一步:安装兼容真机的sdk版本2.2.0(API6),如下图所示:
第二步:新建一个API6的工程项目
不能直接修改/build-profile.json5配置文件中的版本,因为会报错。
一定要注意,API6开发语言变成JS和JAVA,并没有ArkTs,所以这是比较坑的地方。对老版本鸿蒙系统不是很礼貌。
第三步:运行API6创建的工程项目
运行失败,右下角弹出了,没签名无法安装的错误提示。
第四步:配置Debug签名
点击右下角的"open signing configs"按钮,进入之后,点击“Sign in”按钮,如下图所示:
会自动跳转到华为官方网站,登录华为账号(没账号,自己去申请开发者账号,这是门槛),授权登录,最后直到弹出如下界面:
根据指示回到IDE,看到新弹出一个界面,如下图所示:
点击“Agree”按钮,ide编译器自动生成了一个Debug签名文件,如下图所示:
其中Release的签名还没有,后面我们再来处理,继续点击“OK”按钮,窗口自动关闭。
第五步:再次运行
继续点击运行安装到真机按钮“Run entry”,运行成功,应用已被安装到真机上,如下图所示:
1.3、安装小结
- 鸿蒙3.0的系统安装真机运行,最重要的就是检查API的版本,高版本是不兼容低版本的API;
- HDC指令获取真机API版本,经常会出现无法找到驱动设备,所以要反复尝试插拔连接好,必要时可以hdc kill一下;
- 必须依赖华为开发者账号,并根据引导自动获取Debug签名信息;
- 低版本的API并不支持ArtTS语言开发。
2、正式版签名并打包
签名APP时需要4个关键的签名相关文件,它们是.p12、.csr、.p7b、.cer,构建这些文件还是有点繁琐的,这4个文件怎么用,我们后面的步骤再说,先磨刀后砍柴。
- .p12:密钥,格式为.p12,包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,公钥和私钥对用于数字签名和验证。
- .csr:证书请求文件,格式为.csr,全称为Certificate Signing
Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。 - .p7b:Profile文件,格式为.p7b,包含HarmonyOS应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个Profile文件,分为调试Profile和发布Profile。
- .cer:数字证书,格式为.cer,由华为AppGallery Connect颁发,分为应用调试证书和应用发布证书。
这个4个文件从哪里来呢?接下来就来看看怎么创建。
2.1、创建p12和csr文件
.p12和.csr文件是本地文件,所以合并来讲,其有两种方式实现,在IDE中创建和通过Cmd命令来创建。
2.1.1、第一种:在IDE中创建签名文件
第一步:先点击Build/Generate Key and CSR菜单
如下图所示:
第二步:选择key store file文件
可以看到生成CSR之前还需要选择一个*.p12的文件,由于没有,所以点击New,但是还是需要一个key store file 文件,如下图所示:
第三步:设置.p12文件存储的位置及密码
注意在上图中的第二处,是让你选择p12文件存储的目录及文件名,如下图所示,
第四步:填写必要的信息
点击OK按钮,填写必要的信息,如下图所示:
点击Next按钮就会在D:根目录下生成my_ide_key.p12两个文件,但遗憾的是,并不会那么顺利,会报错,如下图所示:
原因是D:\盘是我的系统盘,权限可能不足,我存储到E:\my_ide_key.p12这个路径,问题顺利解决,弹出新的界面,如下图所示
第五步:查看p12和csr文件
点击Finish按钮,到E:\盘根目录下查看生成的.p12 、.csr两个文件,如下图所示:
2.1.2、通过Cmd命令来生成签名文件
第一步:生成P12密钥文件
在Cmd命令行工具中,执行下面的指令来生成:
keytool -genkeypair -alias "my_second_application" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=my_second_application" -keystore d:\\mysecondapplicationkey.p12 -storetype pkcs12 -validity 9125 -storepass 12345678Asd -keypass 12345678Asd
其中“my_second_appliction”是别名、"d:\mysecondapplicationkey.p12"是p12文件保存的路径、“12345678Asd”是其密码(必须要包含数字及大小写字母),都可以自己修改。
如果遇到下面这种错误,请搜索cmd.exe并使用管理员权限运行即可解决
keytool 错误: java.io.FileNotFoundException: d:\mysecondapplicationkey.p12 (客户端没有所需的特权。)
最终cmd命令执行结果如下就表示生成p12文件成功,如下图所示:
在D盘就找到了我们千辛万苦需要的p12文件,如下图所示:
第二步:生成csr文件
在cmd命令行工具中,执行如下命令:
keytool -certreq -alias "my_second_application" -keystore d:\\mysecondapplicationkey.p12 -storetype pkcs12 -file d:\\mysecondapplicationkey.csr
执行结果,如下图所示:
必须先生成p12文件,然后在p12文件的基础上再生成.csr文件,因为生成csr时需要输入p12的密钥库口令,也就是前面设置的"12345678Asd"。
第三步:查看生成的p12和csr文件
打开电脑D:/盘根目录,最终生成的两个签名需要的文件已经具备,如下图所示:
2.2、创建cer文件
这个文件申请有一个强制要求,就是必须要在AppGallery Connect上创建一个应用,然后才能获取得到.cer文件。
AppGallery Connect访问地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/
,进入此网址后,如下图所示:
点击“用户与访问”,弹出界面,如下所示:
点击“新增证书”按钮,填写能填的信息,如下图所示:
点击”选取“按钮,选择前面步骤中在本地创建好的D:/mysecondapplicationkey.csr这个文件,点击提交,如下图所示:
提交之后,就生成了我们发布证书,点击证书下载,即可获得.cer文件,如下图所示:
到此目前获得了3个文件,如下图所示:
2.3、创建p7b文件
第一步:回到AppGallery connect的主界面,如下图所示:
第二步:点击”我的项目“,进入界面,如下图所示:
第三步:点击”添加项目“,输入项目名称,并点击”创建并继续“按钮,如下图所示:
第四步:可手动关闭为此项目启动分析服务,减少步骤,如下图所示:
第五步:点击”完成“之后,开始为此项目添加应用,如下图所示:
第六步:添加应用
点击”添加应用“按钮,输入必填信息,如下图所示:
包名可以从config.jsonde的bundleName值中获取,如下图所示:
创建应用时,可能会遇到软件包名(com.example.mysecondapplication)这个包名已存在的问题,巨坑啊,在本地项目中改一下包名:
直接在本地项目中全局替换包名,同时要去修改项目文件的路径,与包路径保持一致,如下图所示:
替换之后可能会安装报错,如下图所示:
因为更改了包名,还得去重新生成一下debug调试的Key信息,如下所示:
勾选上图中的选项就会重新走一次,debug模式的key信息,再次Run按钮,就会在真机上重新安装一个新的包名的APP了。
第七步:添加应用成功后,添加HAP Provision Profile,如下图所示:
第八步:下载p7b证书,如下图所示:
第九步:查看证书,如下图所示:
到此文件已经准备完毕。
3、配置Release签名信息
打开项目的Project Structure界面,选择Siging Configs菜单,配置好准备的文件信息,如下图所示:
点击OK完成配置,会自动关闭此界面,就可以去打出签名包了。
4、打包hap和app
点击Build菜单,即可打包hap和App,如下图所示:
签名后的应用,打包出来的结果如下图所示:
5、总结
整个签名到打包的过程确实很漫长,4个签名相关的文件创建就要费九牛二虎之力,还需要要开发者账号才可以做鸿蒙开发,所以门槛还是存在,务必要注意cmd工具在使用时需要运行管理员权限再执行,hdc命令也是一样,遇到失败多尝试,总会解决。
6、参考链接
API兼容问题:https://developer.huawei.com/consumer/cn/forum/topic/0203136649588923577
证书申请:https://developer.huawei.com/consumer/cn/doc/app/agc-help-harmonyos-releaseapp-0000001126380068
原创不易,求个关注。
微信公众号:一粒尘埃的漫旅
里面有很多想对大家说的话,就像和朋友聊聊天。
写代码,做设计,聊生活,聊工作,聊职场。
我见到的世界是什么样子的?
搜索关注我吧。
公众号与博客的内容不同。