跟安卓的打包发布流程有相似的地方也有不一样的地方,甚至可以说有些地方是完全不一样,感觉华为的想法更多应该是想像苹果一样靠拢,几个需要注意的点吧。
1、鸿蒙没办法像安卓一样打包一个apk满世界随便安装,目前来看的话只能是拉数据线使用真机调试安装Debug包,Release包都没办法直接安装调试,只能是打包出来发布之后去应用市场安装,或者有类似于苹果TestFlight的机制(目前没去看,盲猜是有)
2、鸿蒙最坑地方,正常Android 14对应的api是34,Android 13对应的api是33,按照这种理解,那么鸿蒙4.0对应的应该是api9这种,但是实际上新老手机都升级到鸿蒙4.0之后,老设备可能还是api6,新设备是api8或者api9(常用机型对应的api版本我在文后给一张截图),坑就坑在api6和api9的开发是相差非常大的,目测是无法平滑的把项目从api6升级到api9,并且api9的项目打包之后是无法安装到api6的设备中的(目前我查到的信息是不支持,也有可能是我查的不仔细),但是api6的项目正常来说应该是可以在api9的设备中运行。所以想要兼容更多设备和使用最新的AkrTs,感觉是有点鱼和熊掌不可兼得的感觉。(买测试机之前一定要注意这里,不然跟我一样买了个便宜的华为结果api是6的,头都大了)
3、Debug签名似乎是自动生成的,我印象中好像不需要我配置,授权登录一下华为开发者账号直接就有了。
4、Release签名不像安卓那么简单,搞个文件签名一下就可以了,鸿蒙准备签名的流程前前后后总共要搞四个文件:xxx.p12、xxx.csr、xxx.cer、xxx.p7b
下面使用keytool工具的时候,默认都是在同一个文件夹路径。
进入Terminal控制台,执行命令:
keytool -genkeypair -alias "test_key" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=DT KJ,OU=HOS Development IDE Team,CN=plan_pk Release" -keystore test.p12 -storetype pkcs12 -storepass testpwd1 -validity 999999
-genkeypair -alias?指定秘钥别名
-keyalg EC -sigalg SHA256withECDSA??指定秘钥算法
-dname?颁发者信息
????C=[国家代码]
????O=[组织或公司名称]
????OU=[组织部门、团队]
????CN=[应用名称]
-keystore?输出文件路径和名称
-storetype pkcs12表示生成的密钥库文件将使用PKCS#12格式
-storepass?密码
-validity 99999??秘钥有效期,单位(天)
进入Terminal控制台,执行命令:
keytool -certreq -alias "test_key" -keystore test.p12 -file test.csr
执行之后会提示需要输入密码,这时候输入生成xxx.p12文件的密码(上面的密码是:testpwd1)就行。
3.1、注册华为开发者账号(略)
3.2、在华为的AppGallery Connect中心中点击“用户与访问”
3.3、左边菜单栏中选择“证书管理”
3.4、点击“新建证书”
3.5、将刚才生成的xxx.csr文件上传
3.6、下载得到xxx.cer证书
4.1、点击华为AppGallery Connect的“我的应用”并点击“新建”,新建一个鸿蒙应用。
4.2、点击顶部“我的项目”,并进入刚刚新建的项目,会提示需要包名,选择手动输入包名。完成之后点左边最底下的HarmonyOs应用的HAP?Provision Profile项。然后点添加
4.3、点“添加按钮”,证书选择刚才新建的测试发布证书,名称可以随便填。
4.4、点“下载”按钮下载xxx.p7b文件
5.1、fiel->new->create project
5.2、包名跟刚才“我的项目”填写的包名一样,api我这里选6
debug签名的话,登录之后会自动帮你生成,无需手动配置,登录一下即可。
6.1、DevEco Studio中点击file(文件)->Project Structure,进入到项目配置页面。找到Signing Config并切换到Release配置,并且把对应的密码、文件都搞一下。
7.1、点击构建->编译Hap/APP->编译APP
7.2、没有错误的话,编译完成之后会在build/outputs/hap/release目录下找到打包好的hap文件。