圆咕噜咕噜 发表于 2024-6-14 21:42:01

flutter编译和构建鸿蒙应用程序(windows环境)

flutter编译和构建鸿蒙应用程序(windows环境)

问题背景

针对 OpenHarmony 的 Flutter 版本已经开源,参考 https://gitee.com/openharmony-sig/flutter_flutter。
本文为实践该流程,实现flutter打包鸿蒙hap包的流程。目前流程已经走完,不过最后打包hap包依赖于flutter engine构建,目前还没构建完成。下次连续更新。
问题分析

构建环境:

flutter tools指令支持Linux、Mac和Windows下使用。
构建依赖:

依赖flutter engine(https://github.com/flutter/engine)构建产物:ohos_debug_unopt_arm64 与 ohos_release_arm64,请在flutter tools指令运行参数中添加:–local-engine=<engine产物目录>
构建步骤:

1、下载下令行工具,并配置环境变量ohpm与sdkmanager,

下载地址: https://developer.harmonyos.com/cn/develop/deveco-studio#download_cli ,使用指导: https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-command-line-ohpm-0000001490235312-V3
(1)解压文件,进入“ohpm/bin”目录,打开下令行工具,执行OHPM安装脚本,
Windows环境下执行下令:
init.bat
https://img-blog.csdnimg.cn/fe275e20746844278ba7306d2cd4b024.png
(2)将ohpm配置到环境变量中
Windows环境变量设置方法:
在此电脑 > 属性 > 高级体系设置 > 高级 > 环境变量中,在体系或者用户的PATH变量中,添加ohpm安装位置下bin文件夹的路径。(bin路径配置了ohpm、ohsdkmgr、codelinter三个工具,如下图所示)。
https://img-blog.csdnimg.cn/a8574107760241909523ef02c8eba5fd.png
配置环境变量:
OHPM_HOME
...\ohcommandline-tools-windows-2.0.0.2\oh-command-line-tools\ohpm
(3)安装完成之后,重新打开下令行,执行如下下令
ohpm -v,
终端输出为版本号,则体现安装乐成。执行结果如下:
https://img-blog.csdnimg.cn/127e1deaad754ab78abfa95dd3b43aa1.png
2、下载sdk并配置环境变量,

ohsdkmgr使用指导,(参考 https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-command-line-ohsdkmgr-0000001545647965-V3)
https://img-blog.csdnimg.cn/64fdbcd23d094ffb947020a07ffd0b26.png
注意:使用ohsdkmgr要求java版本必须大于17,java17的安装和配置参考 https://blog.csdn.net/tiehou/article/details/129575138 。
(1)下载api为9的sdk
https://img-blog.csdnimg.cn/961753105e7e432b928b98266131e434.png
(2)配置对应的环境变量:
export OHOS_SDK_HOME=/home/<user>/env/sdk
export HDC_HOME=/home/<user>/env/sdk/10/toolchains
export PATH=$PATH:$HDC_HOME

# 配置HarmonyOS sdk
export HOS_SDK_HOME=/home/<user>/env/{HarmonyOS sdk}
3、置Gradle:

下载 gradle 7.1 并解压,配置到环境变量中。gradle下载地址: https://gradle.org/releases/
配置到环境变量:
PATH=/home/<user>/env/gradle-7.1/bin
4、下载Flutter,

下载完成后配置环境:
git clone https://gitee.com/openharmony-sig/flutter_flutter.git

export PATH=/home/<user>/ohos/flutter_flutter/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
5、署名工具需进行下列配置

(1)下载署名工具(下载地址: https://gitee.com/openharmony/developtools_hapsigner,下载下令: git clone https://gitee.com/openharmony/developtools_hapsigner.git),并配置环境变量SIGN_TOOL_HOME。
export SIGN_TOOL_HOME=/home/<user>/ohos/developtools_hapsigner/autosign
(2)进入…\developtools_hapsigner\hapsigntool目录,执行以下下令编译得到hap-sign-tool.jar,确保其在目录:./hapsigntool/hap_sign_tool/build/libs/hap-sign-tool.jar。
gradle build
https://img-blog.csdnimg.cn/99272ccdac064003a09b5eca4715d135.png
https://img-blog.csdnimg.cn/a1c15b1e6bfd4a34acee7feb3f309d88.png
注意:刚才配置了jdk版本为17,目前这个代码选择的gradle版本为7.1,对应的jdk版本需要配置还原1.8的版本。
(3)编辑autosign目录下autosign.config和createAppCertAndProfile.config文件,并修改其中值:
sign.profile.inFile=profile_tmp.json
在autosign目录下,新增profile_tmp_template.json文件,编辑如下:
{
    "version-name": "2.0.0",
    "version-code": 2,
    "app-distribution-type": "os_integration",
    "uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18",
    "validity": {
      "not-before": 1594865258,
      "not-after": 1689473258
    },
    "type": "release",
    "bundle-info": {
      "developer-id": "OpenHarmony",
      "distribution-certificate": "-----BEGIN CERTIFICATE-----\nMIICSTCCAc+gAwIBAgIFAJV7uNUwCgYIKoZIzj0EAwIwYzELMAkGA1UEBhMCQ04x\nFDASBgNVBAoMC09wZW5IYXJtb255MRkwFwYDVQQLDBBPcGVuSGFybW9ueSBUZWFt\nMSMwIQYDVQQDDBpPcGVuSGFybW9ueSBBcHBsaWNhdGlvbiBDQTAeFw0yMjAxMjkw\nNTU0MTRaFw0yMzAxMjkwNTU0MTRaMGgxCzAJBgNVBAYTAkNOMRQwEgYDVQQKDAtP\ncGVuSGFybW9ueTEZMBcGA1UECwwQT3Blbkhhcm1vbnkgVGVhbTEoMCYGA1UEAwwf\nT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFzZTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABAW8pFu7tHGUuWtddD5wvazc1qN8ts9UPZH4pecbb/bSFWKh7X7R\n/eTVaRrCTSSdovI1dhoV5GjuFsKW+jT2TwSjazBpMB0GA1UdDgQWBBScyywAaAMj\nI7HcuIS42lvZx0Lj+zAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUE\nDDAKBggrBgEFBQcDAzAYBgwrBgEEAY9bAoJ4AQMECDAGAgEBCgEAMAoGCCqGSM49\nBAMCA2gAMGUCMFfNidGo6uK6KGT9zT1T5bY1NCHTH3P3muy5X1xudOgxWoOqIbnk\ntmQYB78dxWEHLQIxANfApAlXAD/0hnyNC8RDzfLOPEeay6jU9FXJj3AoR90rwZpR\noN9sYD6Oks4VGRw6yQ==\n-----END CERTIFICATE-----\n",
      "bundle-name": "{{ohosId}}",
      "apl": "normal",
      "app-feature": "hos_normal_app"
    },
    "acls": {
      "allowed-acls": [
            ""
      ]
    },
    "permissions": {
      "restricted-permissions": []
    },
    "issuer": "pki_internal"
}
6、构建

(1)运行 flutter doctor -v 检查环境变量配置是否正确
(2)创建工程
# 创建工程
flutter create --platforms ohos flutter_demo
执行上面的创建工程下令,报错提示需要鸿蒙的sdk。
https://img-blog.csdnimg.cn/8ec9ebbcf91c41a08205e9bde74d8ead.png
这里我之前下载过鸿蒙版的deveco studio开发过鸿蒙原生项目,环境变量直接增长直接鸿蒙的sdk,重新创建项目OK。
https://img-blog.csdnimg.cn/3ef2238ed38746a4853f9c7f69f6c3aa.png
(3)编译下令,编译产物在flutter_demo/ohos/entry/build/default/outputs/default/entry-default-signed.hap下。
# 进入工程根目录编译
flutter build hap --local-engine-src-path /home/<user>/ohos/engine/src --local-engine ohos_release_arm64
编译依赖flutter engine的编译产物,所以我们在编译项目之前要先对flutter engine进行编译构建。
由于时间关系,下次连续更新。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: flutter编译和构建鸿蒙应用程序(windows环境)