Flutter原生环境诊断插件native_doctor的使用

Flutter原生环境诊断插件native_doctor的使用

native_doctor 是一个工具,用于分析Flutter和Dart项目的依赖关系,查找对原生工具链的需求,并在可能的情况下解决问题。

目前支持的原生工具链包括:

  • NDK
  • Rust(通过rustup)

使用方法

在你的项目目录中,运行以下命令:

dart pub global activate native_doctor
dart pub global run native_doctor

特性

native_doctor 可以:

  • 检查已安装的NDK版本,并在缺少或过时的情况下安装NDK。
  • 检查是否安装了Rust,并在缺失时通过Rustup安装Rust。
  • 检查已安装的Rust工具链和目标,并在缺失时安装缺失的工具链和目标。

在Flutter或Dart包中支持native_doctor

如果你的包在编译过程中依赖于NDK或Rust的存在,则可以在包的根目录添加一个 native_manifest.yaml 文件。该文件包含所需的NDK和/或Rust工具链的最低版本。

示例 native_manifest.yaml 文件

如果项目同时需要NDK和Rust(稳定版):

version: 0.1.0
requirements:
  ndk:
    version: 26.0.0
  rust:
    stable:
      version: 1.77.2

如果项目只需要NDK:

version: 0.1.0
requirements:
  ndk:
    version: 26.0.0

如果项目需要NDK以及稳定版和夜间版的Rust:

version: 0.1.0
requirements:
  ndk:
    version: 26.0.0
  rust:
    stable:
      version: 1.77.2
    nightly:
      version: 1.79.0-nightly

运行 native_doctor 的示例输出

Project: native_toolchain_rust_test (Flutter)
Buildable platforms: macos, ios, android

Native toolchain: NDK

  [✗] NDK installed, but too old
       ! Installed versions: 25.1.8937393, 23.1.7779620
       ! Required minimum version: 26.0.0

Native toolchain: Rust

  [✓] Rustup installed
  [✗] Toolchain stable-aarch64-apple-darwin (version 1.77.2)
       • Required minimum version: 1.77.2
       • Installed targets: aarch64-apple-darwin, aarch64-apple-ios,
         aarch64-apple-ios-sim, aarch64-linux-android, arm-linux-androideabi,
         x86_64-linux-android
       ! Missing targets: i686-linux-android, x86_64-apple-ios, x86_64-apple-darwin

Proposed actions:

  • (NDK)  Install NDK 26.0.0 or newer
  • (Rust) Install targets i686-linux-android, x86_64-apple-ios, x86_64-apple-darwin
           for toolchain stable-aarch64-apple-darwin

Do you want native doctor to perform proposed actions? (y/N)

更多关于Flutter原生环境诊断插件native_doctor的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter原生环境诊断插件native_doctor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用native_doctor插件来进行原生环境诊断的详细代码案例。native_doctor是一个Flutter插件,用于帮助开发者诊断Flutter项目中的原生环境配置问题。

步骤一:添加依赖

首先,你需要在pubspec.yaml文件中添加native_doctor的依赖。

dependencies:
  flutter:
    sdk: flutter
  native_doctor: ^x.y.z  # 请替换为最新版本号

运行以下命令来获取依赖:

flutter pub get

步骤二:使用native_doctor插件

你可以在Flutter项目的任意位置使用native_doctor插件来执行诊断。通常,你会在一个Dart文件中编写代码来调用这个插件。

以下是一个简单的示例,展示了如何在Flutter应用中集成并使用native_doctor插件:

import 'package:flutter/material.dart';
import 'package:native_doctor/native_doctor.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _diagnosisResult = '';

  @override
  void initState() {
    super.initState();
    _runNativeDoctor();
  }

  Future<void> _runNativeDoctor() async {
    try {
      var result = await NativeDoctor.diagnose();
      setState(() {
        _diagnosisResult = result.toJson().toString();
      });
    } catch (e) {
      setState(() {
        _diagnosisResult = 'Error: ${e.toString()}';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Native Doctor Diagnosis'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: SingleChildScrollView(
            child: Text(_diagnosisResult),
          ),
        ),
      ),
    ),
  };
}

解释

  1. 依赖添加:首先在pubspec.yaml文件中添加native_doctor依赖。
  2. 导入包:在Dart文件中导入native_doctor包。
  3. 调用诊断方法:在_runNativeDoctor方法中调用NativeDoctor.diagnose(),这个方法会返回一个包含诊断结果的NativeDoctorResult对象。
  4. 显示结果:将诊断结果转换为JSON字符串并显示在UI上。如果诊断过程中出现错误,捕获异常并显示错误信息。

运行应用

确保你的Flutter开发环境已经正确配置,然后运行你的Flutter应用:

flutter run

应用启动后,你将看到原生环境诊断的结果显示在屏幕上。

注意事项

  • 请确保使用的是最新版本的native_doctor插件,因为插件的API可能会随着版本的更新而变化。
  • 诊断结果可能包含敏感信息,因此在生产环境中使用时请谨慎处理。

通过上述步骤,你可以在Flutter项目中集成并使用native_doctor插件来进行原生环境诊断。

回到顶部