几个月之前拿到一台鸿蒙NEXT测试样机,因为其他项目需求很多,一直没空研究。今天抽空搞了下,实现的小目标就是在鸿蒙NEXT手机上跑起uniapp的demo。遇到了不少坑,记录如下。
一、下载DevEco-Studio,生成调试证书
首先,我们要看一下UNIAPP官方提供的文档,链接在此。根据文档,先下载DevEco-Studio,这是专门用来开发原生鸿蒙应用的IDE,界面有点像Android Studio。安装完打开,创建一个demo应用。我这里包名是com.example.myapplication,待会记得配置到uniapp项目中。打开项目,点击File-Project Structure-Signing Configs,勾选Automatically generate signature,点击Sign In,会打开浏览器跳转到华为官网,登录华为账号后即可自动生成签名。
这里遇到第一个坑,华为账号登录成功后DevEco-Studio无法接收到成功回调,具体表现是DevEco-Studio会调起浏览器,然后验证登录,登录成功后有个授权提醒,点击【允许】后浏览器会跳转到一个无法访问的链接。
我查了很多资料,最后看到有人说要清理一下浏览器缓存才行,按他的做法成功了。
点击OK。在这里可以先运行到真机上看看调试证书是否正常,如果可以继续往下。
二、创建uniapp(VUE3.0)项目,配置鸿蒙参数
创建一个uniapp(VUE3.0)项目
点击【运行】 - 运行到手机或模拟器 - 运行到鸿蒙,第一次运行会在项目根目录下生成harmony-configs目录用于存放鸿蒙配置文件。
打开DevEco-Studio项目根目录下的build-profile.json5文件,把他里面的内容全部拷贝复制到uniapp项目的harmony-configs/build-profile.json5中。
在 harmony-configs/AppScrope/app.json5 中修改 app.bundleName为原生项目的包名
三、鸿蒙真机调试
再次点击【运行】 - 运行到手机或模拟器 - 运行到鸿蒙。此时会遇到第二个坑,打包失败
11:24:05.260 打包生成 .hap ...............
11:24:26.942 > hvigor ERROR: Tools execution failed.
10-10 11:24:26 ERROR - hap-sign-tool: error: Init keystore failed: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)
* Try the following:
> The key store file does not exist, please check the key store file path.
> Incorrect keystore password, please input the correct plaintext password.
> The keystore was created by a newer JDK version, please use the same JDK version
Detail: Please check the message from tools.
> More info: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-faqs-V5#section104639397814
11:24:26.942 打包失败
访问提示中给的链接,说是DevEco Studio中预置的JDK17和HbuilderX用的JDK版本不符。我查了一下版本,还是java8,就升级到了jdk17,这个坑算是过了。
紧接着又遇到第三个坑,运行所需的权限没有签名授权。
点击【配置文档】,跳转到官方提供的说明页
为了方便,修改 harmony-configs/entry/src/main/module.json5 文件, 删除 module.requestPermissions 数组里面的这三项内容,再次运行到鸿蒙,最终运行成功。
我改了一下首页的文字【你好,鸿蒙】,保存后会自动更新。
至此,首次鸿蒙真机调试结束,虽然遇到几个坑,还算是顺利解决了。大伙如果有其他问题,可以在官方群里咨询。