Flutter三方库适配OpenHarmony【apple_product_name】环境搭建与依赖配置

前言

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

在使用apple_product_name 库之前,需要正确搭建OpenHarmony 开发环境并配置相关依赖。环境搭建是所有开发工作的基础,一个正确且完整的开发环境能够避免后续开发过程中出现各种问题。本文将详细介绍从零开始的环境搭建流程,涵盖开发工具安装SDK配置项目依赖管理插件注册等各个环节,确保开发者能够顺利搭建起完整的开发环境并成功运行该库。

本文是apple_product_name OpenHarmony适配系列的第2篇,共30篇,从环境搭建到依赖配置全面覆盖开发准备工作。

一、开发环境总览

1.1 环境版本要求

在开始搭建环境之前,首先需要了解该库对开发环境的具体要求。以下是从项目pubspec.yaml中提取的真实版本约束

yaml 复制代码
environment:
  sdk: ">=3.5.0 <4.0.0"
  flutter: ">=3.22.0"

该库要求Dart SDK 版本在3.5.0及以上且低于4.0.0,Flutter版本在3.22.0及以上。这些版本约束确保了库能够使用最新的Dart语言特性(如增强的模式匹配、sealed class等),同时保持向前兼容性。

1.2 完整环境要求表

环境项 最低版本 推荐版本 说明
Dart SDK 3.5.0 3.5.0+ 支持最新语言特性
Flutter SDK 3.22.0 3.22.0+ 官方稳定版
Flutter OHOS 3.35.7-dev 3.35.7-dev 鸿蒙适配分支
DevEco Studio 6.0.2 Release 6.0.2.640 华为官方IDE
OpenHarmony SDK API 20 API 20 系统能力支持
ROM版本 6.0.0.130 SP8 6.0.0.130 SP8+ 设备系统版本

重要提示 :Flutter OHOS是由开源鸿蒙社区维护的Flutter适配分支,与官方Flutter SDK不同,需要单独克隆和配置。

1.3 环境依赖关系

各环境组件之间存在依赖关系,安装顺序很重要:

  1. 首先安装DevEco Studio(提供OpenHarmony SDK和hdc工具)
  2. 然后克隆Flutter OHOS仓库并配置环境变量
  3. 接着创建项目并配置pubspec.yaml依赖
  4. 最后执行flutter pub get安装所有依赖包

二、Flutter OHOS环境配置

2.1 克隆Flutter OHOS仓库

bash 复制代码
# 克隆Flutter OHOS仓库
git clone https://gitee.com/openharmony-sig/flutter_flutter.git

# 切换到稳定分支
git checkout ohos-3.35.7-dev

# 配置环境变量(写入.zshrc永久生效)
echo 'export PATH="$PATH:/path/to/flutter_flutter/bin"' >> ~/.zshrc
source ~/.zshrc

Flutter OHOS是专门为OpenHarmony平台适配的Flutter版本,它在官方Flutter SDK的基础上增加了对OpenHarmony平台的编译构建运行 支持。需要特别注意的是,环境变量的配置必须将Flutter OHOS的bin目录添加到系统的PATH中,建议写入到shell配置文件中永久生效。

2.2 验证Flutter环境

bash 复制代码
# 验证Flutter环境
flutter doctor

# 预期输出示例:
# Doctor summary (to see all details, run flutter doctor -v):
# [✓] Flutter (Channel ohos, 3.35.7-dev)
# [✓] OpenHarmony toolchain - develop for OpenHarmony devices
# [✓] DevEco Studio (version 6.0.2)
# [✓] Connected device (1 available)

运行flutter doctor可以检查所有必要工具和SDK是否正确安装。如果某一项显示[✗],需要根据提示信息逐一解决后再继续。

上图展示了flutter doctor命令的预期输出结果,所有检查项都应显示绿色对勾。

提示 :如果flutter doctor报告DevEco Studio未找到,请检查DevEco Studio的安装路径是否正确,并确保已在DevEco Studio中安装了OpenHarmony SDK。

三、项目pubspec.yaml配置

3.1 库的pubspec.yaml分析

以下是apple_product_name 库自身的pubspec.yaml完整配置(来自项目根目录):

yaml 复制代码
name: apple_product_name
description: Library for translating Apple machine identifiers into Apple product names (e.g. 'iPhone17,1' to 'iPhone 16 Pro')
version: 3.7.0
homepage: https://github.com/kyle-seongwoo-jun/flutter_apple_product_name

environment:
  sdk: ">=3.5.0 <4.0.0"
  flutter: ">=3.22.0"

dependencies:
  flutter:
    sdk: flutter
  device_info_plus: ">=10.0.0 <12.0.0"

库名虽然包含"Apple",但OpenHarmony适配版本 已全面扩展到华为和荣耀设备。当前版本3.7.0 ,依赖device_info_plus获取Apple设备信息,鸿蒙平台则通过自己的MethodChannel实现。

3.2 鸿蒙平台插件声明

yaml 复制代码
flutter:
  plugin:
    platforms:
      ohos:
        pluginClass: AppleProductNamePlugin

pubspec.yaml中通过flutter.plugin.platforms.ohos声明了鸿蒙平台的插件入口类为AppleProductNamePlugin 。Flutter框架在应用启动时会根据这个配置自动加载并注册原生插件。这是Flutter插件机制的标准做法,每个平台都有对应的pluginClass声明。

3.3 在应用项目中引入依赖

在你自己的应用项目中,需要通过Git方式引入该库:

yaml 复制代码
# 你的应用项目 pubspec.yaml
dependencies:
  flutter:
    sdk: flutter
  apple_product_name:
    git:
      url: https://gitcode.com/oh-flutter/flutter_apple_product_name.git
      ref: main

由于OpenHarmony适配版本尚未发布到pub.dev官方仓库,需要通过Git依赖 引入。ref: main指定主分支最新代码,确保获取最新的设备映射数据。

依赖方式 语法 适用场景
pub.dev apple_product_name: ^3.7.0 官方版本(仅iOS/macOS)
Git主分支 ref: main 开发阶段,获取最新代码
Git标签 ref: v3.7.0 生产环境,锁定版本
Git提交 ref: abc1234 精确锁定某次提交
本地路径 path: ../apple_product_name 本地开发调试

生产建议 :在正式项目中,建议将ref指向具体的tag或commit hash,避免因上游代码更新引入不可预期的变化。

四、执行依赖安装

4.1 安装依赖包

bash 复制代码
# 获取依赖包
flutter pub get

# 查看依赖树
flutter pub deps

# 查看过期依赖
flutter pub outdated

执行flutter pub get命令后,Flutter会根据pubspec.yaml中的配置自动从Git仓库拉取代码并完成依赖解析。这个过程中,Flutter会分析所有直接依赖和传递依赖之间的版本约束关系,找到一组满足所有约束的版本组合,并将解析结果记录在pubspec.lock文件中。

4.2 示例工程的依赖配置

以下是项目中example应用pubspec.yaml真实配置:

yaml 复制代码
name: apple_product_name_example
description: Demonstrates how to use the apple_product_name plugin.
publish_to: "none"

environment:
  sdk: ">=3.5.0 <4.0.0"

dependencies:
  flutter:
    sdk: flutter
  apple_product_name:
    path: ../
  cupertino_icons: ^1.0.2
  device_info_plus: ^11.0.0

示例工程使用path: ../引用父目录的库源码,这是Flutter插件开发中的标准做法。同时依赖了cupertino_icons提供iOS风格图标,以及device_info_plus ^11.0.0用于获取Apple设备信息。

4.3 依赖安装常见问题

如果网络环境受限导致下载缓慢,可以配置国内镜像源:

bash 复制代码
# 配置Flutter中国镜像
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# 重新获取依赖
flutter pub get

常见问题及解决方案:

  • 网络超时:配置上述镜像源后重试
  • 版本冲突 :运行flutter pub deps查看依赖树,找到冲突点
  • 缓存损坏 :执行flutter pub cache repair修复缓存

五、OpenHarmony模块配置

5.1 oh-package.json5配置

以下是项目中ohos/oh-package.json5真实内容

json5 复制代码
{
  "name": "apple_product_name",
  "version": "1.0.0",
  "description": "Library for translating Apple machine identifiers into Apple product names for OpenHarmony.",
  "main": "index.ets",
  "author": "",
  "license": "MIT",
  "dependencies": {
    "@ohos/flutter_ohos": "file:./har/flutter.har"
  }
}

oh-package.json5是OpenHarmony模块的核心配置文件,其作用类似于Node.js生态中的package.json。各字段含义如下:

字段 说明
name apple_product_name 模块名称,其他模块引用时使用
version 1.0.0 模块版本号
main index.ets 模块入口文件
license MIT 开源许可证
dependencies @ohos/flutter_ohos Flutter鸿蒙运行时依赖

@ohos/flutter_ohos通过file:./har/flutter.har引用本地的Flutter HAR包,这是Flutter OHOS插件开发中的标准做法,确保插件能够正确链接Flutter运行时库。

5.2 插件入口文件

ohos/index.ets是插件的导出入口,内容非常简洁:

typescript 复制代码
import AppleProductNamePlugin from './src/main/ets/components/plugin/AppleProductNamePlugin';
export default AppleProductNamePlugin;
export { AppleProductNamePlugin };

这个文件的职责是将AppleProductNamePlugin 类从内部路径导出为模块的公开接口。export default提供默认导出,export { AppleProductNamePlugin }提供命名导出,两种方式都可以在其他模块中使用。

六、模块构建配置

6.1 build-profile.json5

以下是ohos/build-profile.json5真实内容

json5 复制代码
{
  "apiType": "stageMode",
  "buildOption": {
  },
  "targets": [
    {
      "name": "default"
    }
  ]
}

apiType设置为stageMode表示使用Stage模型 ,这是OpenHarmony从API 9开始推荐的应用开发模型。相比早期的FA模型,Stage模型提供了更加灵活的组件化开发能力和更完善的生命周期管理机制。targets数组定义了构建目标,default是标准构建目标。

6.2 模块描述文件

ohos/src/main/module.json5定义了模块的基本属性:

json5 复制代码
{
  "module": {
    "name": "apple_product_name",
    "type": "har",
    "deviceTypes": [
      "default",
      "tablet"
    ]
  }
}

各字段说明:

  • name :模块名称,需与oh-package.json5中的名称一致
  • typehar表示这是一个HAR(Harmony Archive)共享包,类似Android的AAR
  • deviceTypes :支持的设备类型,default表示手机,tablet表示平板

扩展提示 :如果未来需要支持智慧屏、手表等设备,只需在deviceTypes数组中添加对应的设备类型标识(如tvwearable)即可。

6.3 hvigor构建脚本

ohos/hvigorfile.ts是hvigor构建系统的配置文件:

typescript 复制代码
export { harTasks } from '@ohos/hvigor-ohos-plugin';

hvigor是OpenHarmony官方提供的构建工具,类似于Android生态中的Gradle 。通过导出harTasks,该模块将按照HAR模块的标准构建流程进行编译和打包。这一行代码包含了HAR模块构建所需的所有任务定义,包括代码编译、资源处理、模块打包等步骤。

七、示例工程配置

7.1 应用级配置

以下是example/ohos/AppScope/app.json5真实内容

json5 复制代码
{
  "app": {
    "bundleName": "com.example.apple_product_name_example",
    "vendor": "example",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name"
  }
}

app.json5定义了应用的全局信息。bundleName是应用的唯一标识符,类似Android的applicationIdversionCode使用整数表示版本号(1000000对应1.0.0),iconlabel通过资源引用的方式指定应用图标和名称。

7.2 构建产品配置

以下是example/ohos/build-profile.json5真实内容

json5 复制代码
{
  "app": {
    "signingConfigs": [],
    "products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "5.0.5(17)",
        "runtimeOS": "HarmonyOS"
      }
    ],
    "buildModeSet": [
      { "name": "debug" },
      { "name": "profile" },
      { "name": "release" }
    ]
  },
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        {
          "name": "default",
          "applyToProducts": ["default"]
        }
      ]
    }
  ]
}

这个配置文件定义了应用的构建产品和模块结构:

配置项 说明
compatibleSdkVersion 5.0.5(17) 兼容的最低SDK版本
runtimeOS HarmonyOS 目标运行系统
buildModeSet debug/profile/release 三种构建模式
modules.entry ./entry 主入口模块路径

八、插件注册配置

8.1 GeneratedPluginRegistrant

以下是example/ohos/entry/src/main/ets/plugins/GeneratedPluginRegistrant.ets真实源码

typescript 复制代码
import { FlutterEngine, Log } from '@ohos/flutter_ohos';
import AppleProductNamePlugin from 'apple_product_name';

const TAG = "GeneratedPluginRegistrant";

export class GeneratedPluginRegistrant {

  static registerWith(flutterEngine: FlutterEngine) {
    try {
      flutterEngine.getPlugins()?.add(new AppleProductNamePlugin());
    } catch (e) {
      Log.e(
        TAG,
        "Tried to register plugins with FlutterEngine ("
          + flutterEngine
          + ") failed.");
      Log.e(TAG, "Received exception while registering", e);
    }
  }
}

插件注册是Flutter插件在OpenHarmony平台上正常工作的关键步骤。这段代码的核心逻辑:

  1. 通过import AppleProductNamePlugin from 'apple_product_name'导入插件类
  2. 调用flutterEngine.getPlugins()?.add()将插件实例注册到引擎
  3. 使用try-catch包裹注册逻辑,注册失败时通过Log.e输出错误日志

注意 :如果忘记了这一步注册操作,在Dart侧调用插件方法时会抛出MissingPluginException异常,这是开发过程中最常见的错误之一。

8.2 EntryAbility入口配置

以下是example/ohos/entry/src/main/ets/entryability/EntryAbility.ets真实源码

typescript 复制代码
import { FlutterAbility, FlutterEngine } from '@ohos/flutter_ohos';
import { GeneratedPluginRegistrant } from '../plugins/GeneratedPluginRegistrant';

export default class EntryAbility extends FlutterAbility {
  configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    GeneratedPluginRegistrant.registerWith(flutterEngine)
  }
}

EntryAbility 是应用的入口Ability,继承自FlutterAbility基类。在OpenHarmony的Stage模型中,Ability是应用的基本组成单元。configureFlutterEngine方法会在Flutter引擎创建完成后、Dart代码开始执行前被调用,确保所有插件在应用逻辑运行之前就已经准备就绪。

8.3 插件注册流程

完整的插件注册流程如下:

复制代码
应用启动
  → EntryAbility.configureFlutterEngine() 被调用
  → super.configureFlutterEngine() 初始化Flutter引擎
  → GeneratedPluginRegistrant.registerWith() 注册插件
  → flutterEngine.getPlugins()?.add(new AppleProductNamePlugin())
  → AppleProductNamePlugin.onAttachedToEngine() 被触发
  → MethodChannel("apple_product_name") 创建完成
  → Dart侧可以通过MethodChannel与原生层通信

这个流程保证了Dart侧在任何时候调用插件方法都能得到正确的响应。

九、Dart层API入口

9.1 OhosProductName类

以下是lib/apple_product_name_ohos.dart真实源码(完整文件):

dart 复制代码
/// HarmonyOS platform support for apple_product_name.
library apple_product_name_ohos;

import 'package:flutter/services.dart';

/// 鸿蒙平台设备名称获取工具类
class OhosProductName {
  static const MethodChannel _channel = MethodChannel('apple_product_name');

  static final _instance = OhosProductName._();
  OhosProductName._();

  /// Returns the singleton instance of [OhosProductName].
  factory OhosProductName() => _instance;

  /// 获取设备型号标识符,例如: "ALN-AL00"
  Future<String> getMachineId() async {
    final String? machineId = await _channel.invokeMethod('getMachineId');
    return machineId ?? 'Unknown';
  }

  /// 获取设备产品名称,例如: "HUAWEI Mate 60 Pro"
  Future<String> getProductName() async {
    final String? productName = await _channel.invokeMethod('getProductName');
    return productName ?? 'Unknown';
  }

  /// 根据型号标识符查找产品名称
  Future<String> lookup(String machineId) async {
    final String? productName = await _channel.invokeMethod('lookup', {
      'machineId': machineId,
    });
    return productName ?? machineId;
  }

  /// 返回产品名称,如果未找到则返回 null
  Future<String?> lookupOrNull(String machineId) async {
    final String? productName = await _channel.invokeMethod('lookup', {
      'machineId': machineId,
    });
    return productName;
  }
}

这是鸿蒙平台的完整Dart API入口 ,采用单例模式 设计。通过MethodChannel('apple_product_name')与原生层通信,提供了四个核心方法。所有方法都是异步的,返回值都做了null安全处理??兜底)。

9.2 API方法对比

方法 返回类型 未找到时返回 典型场景
getMachineId() Future<String> "Unknown" 获取型号标识符
getProductName() Future<String> "Unknown" 获取友好名称
lookup(id) Future<String> 原始id 查询任意型号
lookupOrNull(id) Future<String?> null 区分已知/未知设备

十、原生层插件核心结构

10.1 AppleProductNamePlugin类声明

以下是ohos/src/main/ets/components/plugin/AppleProductNamePlugin.ets中的插件类声明部分:

typescript 复制代码
import {
  FlutterPlugin,
  FlutterPluginBinding,
  MethodCall,
  MethodCallHandler,
  MethodChannel,
  MethodResult,
} from '@ohos/flutter_ohos';
import { deviceInfo } from '@kit.BasicServicesKit';

const TAG = "AppleProductNamePlugin";

export default class AppleProductNamePlugin implements FlutterPlugin, MethodCallHandler {
  private channel: MethodChannel | null = null;

  constructor() {
  }

  getUniqueClassName(): string {
    return TAG;
  }

  onAttachedToEngine(binding: FlutterPluginBinding): void {
    this.channel = new MethodChannel(binding.getBinaryMessenger(), "apple_product_name");
    this.channel.setMethodCallHandler(this);
  }

  onDetachedFromEngine(binding: FlutterPluginBinding): void {
    if (this.channel != null) {
      this.channel.setMethodCallHandler(null);
      this.channel = null;
    }
  }
}

插件类实现了两个关键接口:

  • FlutterPlugin :管理插件的生命周期(onAttachedToEngine/onDetachedFromEngine
  • MethodCallHandler :处理来自Dart层的方法调用(onMethodCall

onAttachedToEngine中创建了名为"apple_product_name"MethodChannel ,这个通道名称必须与Dart层的MethodChannel('apple_product_name')完全一致。

10.2 方法路由

typescript 复制代码
onMethodCall(call: MethodCall, result: MethodResult): void {
  switch (call.method) {
    case "getMachineId":
      this.getMachineId(result);
      break;
    case "getProductName":
      this.getProductName(result);
      break;
    case "lookup":
      this.lookup(call, result);
      break;
    default:
      result.notImplemented();
      break;
  }
}

onMethodCall方法通过switch语句将Dart层的方法调用路由到对应的原生实现。未识别的方法名会调用result.notImplemented()返回"方法未实现"错误。

十一、构建与运行

11.1 构建OpenHarmony应用

bash 复制代码
# 构建debug版本HAP包
flutter build hap --debug

# 构建release版本HAP包
flutter build hap --release

# 查看详细构建日志
flutter build hap --debug --verbose

flutter build hap命令会执行完整的编译和打包流程,生成可安装的HAP文件(Harmony Ability Package)。构建过程包括:

  1. Dart代码编译为字节码
  2. ArkTS原生代码编译
  3. 资源文件打包
  4. 签名和生成最终HAP文件

11.2 安装到设备

bash 复制代码
# 查看已连接的设备
hdc list targets

# 安装HAP包到设备
hdc install ./build/outputs/default/entry-default-signed.hap

# 启动应用
hdc shell aa start -a EntryAbility -b com.example.apple_product_name_example

hdc是OpenHarmony提供的设备连接工具,类似于Android的adb工具。主要功能对比:

功能 hdc命令 adb命令
查看设备 hdc list targets adb devices
安装应用 hdc install xxx.hap adb install xxx.apk
查看日志 hdc hilog adb logcat
文件传输 hdc file send adb push
远程Shell hdc shell adb shell

11.3 查看运行日志

bash 复制代码
# 查看所有日志
hdc hilog

# 过滤插件相关日志
hdc hilog | grep "AppleProductNamePlugin"

# 过滤Flutter相关日志
hdc hilog | grep "flutter"

通过hdc hilog可以查看设备的实时日志输出,使用grep过滤关键词可以快速定位插件相关的日志信息,这在调试阶段非常有用。

十二、快速验证安装

12.1 验证代码

安装完成后,可以用以下代码快速验证库是否正常工作:

dart 复制代码
import 'package:apple_product_name/apple_product_name_ohos.dart';

void main() async {
  final ohos = OhosProductName();

  // 验证三个核心方法
  final productName = await ohos.getProductName();
  print('设备名称: $productName');  // 例如: "HUAWEI Mate 60 Pro"

  final machineId = await ohos.getMachineId();
  print('型号标识: $machineId');  // 例如: "ALN-AL00"

  final lookupResult = await ohos.lookup('ALN-AL00');
  print('查询测试: $lookupResult');  // "HUAWEI Mate 60 Pro"
}

如果三个方法都能正常返回结果,说明库已经正确集成,环境搭建完成。

12.2 验证结果判断

验证项 预期结果 失败原因
getProductName() 返回设备友好名称 插件未注册或MethodChannel不匹配
getMachineId() 返回型号标识符 deviceInfo API权限问题
lookup("ALN-AL00") 返回"HUAWEI Mate 60 Pro" 映射表数据缺失

十三、常见配置问题排查

13.1 问题汇总与解决方案

bash 复制代码
# 问题1:找不到@ohos/flutter_ohos模块
ohpm install

# 问题2:清理并重新获取依赖
flutter clean
flutter pub get

# 问题3:MissingPluginException异常
# 检查GeneratedPluginRegistrant.ets是否正确注册了插件
# 检查EntryAbility是否调用了registerWith方法

开发过程中最常见的三类问题:

  1. 模块依赖找不到 :执行ohpm install安装OpenHarmony模块依赖
  2. MissingPluginException:检查插件注册链路是否完整
  3. 构建失败 :先flutter clean清理缓存,再重新构建

13.2 环境配置检查清单

在开始开发前,逐项确认以下配置:

  • Flutter OHOS已克隆并配置环境变量
  • flutter doctor所有检查项通过
  • pubspec.yaml中已添加apple_product_name依赖
  • flutter pub get执行成功
  • oh-package.json5配置正确
  • GeneratedPluginRegistrant.ets已注册插件
  • EntryAbility.ets已调用registerWith
  • flutter build hap --debug构建成功

经验分享:大多数配置问题都与依赖安装不完整或版本不匹配有关,耐心地按照错误提示逐一排查通常都能顺利解决。

十四、项目文件结构总览

14.1 完整目录结构

复制代码
apple_product_name/
├── lib/
│   ├── apple_product_name.dart          # Apple设备查询API
│   ├── apple_product_name.g.dart        # 自动生成的Apple设备映射表
│   └── apple_product_name_ohos.dart     # 鸿蒙平台API(OhosProductName类)
├── ohos/
│   ├── oh-package.json5                 # 鸿蒙包配置
│   ├── build-profile.json5              # 构建配置
│   ├── hvigorfile.ts                    # 构建脚本
│   ├── index.ets                        # 插件导出入口
│   └── src/main/
│       ├── module.json5                 # 模块描述文件
│       └── ets/components/plugin/
│           └── AppleProductNamePlugin.ets  # 原生插件实现
├── example/
│   ├── pubspec.yaml                     # 示例工程依赖
│   ├── lib/main.dart                    # 示例应用代码
│   └── ohos/
│       ├── AppScope/app.json5           # 应用级配置
│       ├── build-profile.json5          # 构建产品配置
│       └── entry/src/main/ets/
│           ├── entryability/EntryAbility.ets    # 应用入口
│           └── plugins/GeneratedPluginRegistrant.ets  # 插件注册
├── pubspec.yaml                         # 库的包配置
├── gen/                                 # Apple映射表生成脚本
└── test/                                # 单元测试

开发者日常使用只需关注以下核心文件:

  • lib/apple_product_name_ohos.dart:Dart层API入口
  • ohos/.../AppleProductNamePlugin.ets:原生层插件实现
  • ohos/oh-package.json5:鸿蒙包配置
  • example/:示例工程参考

总结

本文详细介绍了apple_product_name 库在OpenHarmony平台的完整环境搭建和依赖配置流程。从Flutter OHOS环境准备pubspec.yaml依赖配置oh-package.json5模块配置插件注册 到最终的构建运行验证,每个步骤都提供了项目中的真实代码和配置文件。正确的环境配置是后续所有开发工作的基础,只有在环境搭建完成且验证通过之后,才能开始进行功能开发和调试工作。

下一篇文章将介绍5分钟快速上手指南,通过简单的几个步骤即可在应用中获取设备的友好产品名称。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
钛态1 小时前
Flutter for OpenHarmony 实战:YAML — 结构化配置解析专家
flutter·ui·华为·架构·harmonyos
lqj_本人3 小时前
Flutter三方库适配OpenHarmony【apple_product_name】库简介与功能概述
flutter
sdff113964 小时前
【HarmonyOS】Flutter实战项目+校园通服务平台全解
flutter·华为·harmonyos
lqj_本人4 小时前
Flutter三方库适配OpenHarmony【apple_product_name】lookup查询方法使用技巧
flutter
lqj_本人5 小时前
Flutter三方库适配OpenHarmony【apple_product_name】设备型号标识符转换原理
运维·服务器·flutter
lqj_本人5 小时前
Flutter三方库适配OpenHarmony【apple_product_name】getMachineId方法深度解析
flutter
2401_892000525 小时前
Flutter for OpenHarmony 猫咪管家App实战:急救指南功能开发
flutter
钛态5 小时前
Flutter for OpenHarmony 实战:Pretty Dio Logger — 网络请求监控利器
flutter·microsoft·ui·华为·架构·harmonyos
lqj_本人6 小时前
Flutter三方库适配OpenHarmony【apple_product_name】OhosProductName类使用详解
flutter