写点什么

鸿蒙 Flutter 生成 hap 包编译过程可能遇到的问题

作者:flfljh
  • 2024-11-07
    湖南
  • 本文字数:1856 字

    阅读完需:约 6 分钟

鸿蒙 Flutter 生成 hap 包编译过程可能遇到的问题

配置别名,简化日常开发的编译命令

在环境变量配置文件中配置别名,简化 flutter 鸿蒙化日常使用的命令


  • windows, 使用 Git Bash 可以执行常见的 linux 命令。(使用方式:鼠标右键点击文件管理器中的空白处,左键点击 Git Bash Here)

  • linux, 修改 ~/.bash_profile

  • mac, 修改 ~/.bash_profile, 并在 ~/.zshrc 中加上 source ~/.bash_profile


# --local-engine 参数可选,指向自行编译的engine产物,建议在 linux/mac 环境使用export ENGINE_DIR=~/ohos/engineexport ENGINE_DEBUG=$ENGINE_DIR/src/out/ohos_debug_unopt_arm64export ENGINE_PROFILE=$ENGINE_DIR/src/out/ohos_profile_arm64export ENGINE_RELEASE=$ENGINE_DIR/src/out/ohos_release_arm64
alias fbuildD="flutter build hap --local-engine=$ENGINE_DEBUG --debug"alias fbuildP="flutter build hap --local-engine=$ENGINE_PROFILE --profile"alias fbuildR="flutter build hap --local-engine=$ENGINE_RELEASE --release"alias frunD="flutter run -d $(hdc list targets) --local-engine=$ENGINE_DEBUG --debug"alias frunP="flutter run -d $(hdc list targets) --local-engine=$ENGINE_PROFILE --profile"alias frunR="flutter run -d $(hdc list targets) --local-engine=$ENGINE_RELEASE --release"
复制代码


使用方式:


配置完成后,重新打开终端窗口,在 flutter 工程目录中即可使用别名编译或运行


flutter create hello --platforms ohoscd hello# 编译debug版本fbuildD# 运行debug版本frunD
复制代码

应用编译成功,安装后出现白屏的情况

日志信息:


Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x00000086e3272bf8LastFatalMessage:Thread:547846269584[FATAL:flutter/runtime/dart_vm_initializer.cc] Error while initializing the Dart VM: Wrong full snapshot version, expected '8af474944053df1f0a3be6e6165fa7cf' found 'adb4292f3ec25074ca70abcd2d5c7251'
复制代码


问题分析:


使用的 engine 产物和运行模式不一致,导致运行白屏。


解决方案:


运行或编译命令中,使用的 engine 产物和运行模式需要保持一致。 参考命令:


flutter run -d --debugflutter run -d --releaseflutter run -d --profile
复制代码

应用编译报错,flutter 插件结构重构前的版本使用了重构后的插件库

报错日志:


Oops; flutter has exited unexpectedly: "type 'Null' is not a subtype of type 'List<dynamic>' in type cast".
复制代码


解决方案:flutter_flutter 更新到 master 或 dev 的最新版本。(45bd5e627e1f1e5f4d335f205781565f576acc60, 2024-05-10)

flutter pub get 依赖冲突报错

报错日志:


Resolving dependencies...Because flutter_cache_manager >=3.0.0-nullsafety.0 <3.3.2 depends on path_provider from hosted and flutter_cache_manager depends on path_provider from git, flutter_cache_manager >=3.0.0-nullsafety.0 <3.3.2 forbidden.So bedause xxx depends on flutter_cache_manager 3.3.1, version solving failed.pub get failed...exit code: 1
复制代码


解决方案:


使用 dependency_overrides 消除依赖冲突


dependencies:  flutter:    sdk: flutterdependency_overrides:  path_provider:    git:      url: https://gitee.com/openharmony-sig/flutter_packages.git      path: packages/path_provider/path_provider  path_provider_ohos:    git:      url: https://gitee.com/openharmony-sig/flutter_packages.git      path: packages/path_provider/path_provider_ohos
复制代码

The SDK license agreement is not accepted

日志信息:


hvigor install success.> hvigor ERROR: Cause: The SDK license agreement is not accepted.
复制代码


问题分析:ohos 工程的结构还是 api11 的,但是使用的 sdk 是 api12 的,这种情况下就会出现这个报错信息。


解决方案:将 ohos 工程结构升级为 api12。操作步骤:


  1. DevEco-Studio -> Migrate Assistant -> 5.0.0 -> Migrate

  2. DevEco-Studio -> File -> Project Structure -> Compatible SDK -> 5.0.0(12)

通过 flutter build hap -release 编译版本 会导致 app.json versionName 字段重置

背景:查看 app.json 下的 versionName 字段,然后执行 flutter build hap -release 编译版本进行出包


现象:发现次字段 再次被重置 1.0.0;


原因:当前规格,目前默认 build 会使用这个版本号


解决:需要指定 versionName 和 versionCode 可以在 build 指令时加上指定版本


参考:flutter build hap --build-name=4.0.3 --build-number=10000


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙Flutter生成hap包编译过程可能遇到的问题_flfljh_InfoQ写作社区