Flutter安卓ADB工具插件android_adb_tool的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter安卓ADB工具插件android_adb_tool的使用

android_adb_tool

adb connect tool

Preview

image

API

init

void main() {
  
  // 添加这一行
  AndroidAdbTool.instance.init();
  runApp(const MyApp());
}

1. connect

DeviceHost host = DeviceHost(addr: "127.0.0.1", port: 5037);
AdbDevice _device =  host.connectToDevice();// 连接设备

3. run shell

String output = _device.executeHostShellCommand(shell: shellCommand);// 输出结果


// 或者

String output = _device.executeHostCommand(shell: shellCommand, hasOutput: true, hasLen: true);

4. get devices

List<AdbDeviceInfo> devices = host.devices();
for (var element in devices) {
    print(element.data);// 输出设备信息
}

输出:

I/flutter (15113): {model: sdk_gphone64_arm64, product: sdk_gphone64_arm64, device: emu64a, transport_id: 1}

5 more…

Full example

以下是一个完整的示例代码,展示了如何使用 android_adb_tool 插件来连接设备并运行命令。

import 'package:android_adb_tool/android_adb_tool.dart';
import 'package:android_adb_tool/api/tool.dart';
import 'package:flutter/material.dart';

void main() {
  AndroidAdbTool.instance.init();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  TextEditingController controller = TextEditingController(text: '127.0.0.1');
  TextEditingController portController = TextEditingController(text: '5037');
  TextEditingController shellController = TextEditingController(text: '');
  String? output;

  AdbTcpConnection? connection;

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('ADB Tool Example'),
        ),
        body: SingleChildScrollView(
          child: Container(
            padding: const EdgeInsets.all(10),
            child: Column(
              children: [
                TextField(
                  controller: controller,
                  decoration: const InputDecoration(labelText: '地址'),
                ),
                TextField(
                  controller: portController,
                  decoration: const InputDecoration(labelText: '端口'),
                ),
                ElevatedButton(
                    onPressed: _connect, child: const Text('ADB Connect')),
                TextField(
                  controller: shellController,
                  decoration: const InputDecoration(labelText: '运行ADB shell命令'),
                ),
                FilledButton(
                    onPressed: connection == null ? null : run,
                    child: const Text('执行Shell命令')),
                if(output != null)
                  Card(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text('输出'),
                          SelectableText(output!),
                        ],
                      ),
                    ),
                  )
              ],
            ),
          ),
        ),
      ),
    );
  }

  Future<void> _connect() async {
    connection = await AndroidAdbTool.instance
        .connect(controller.text, int.parse(portController.text));
    setState(() {});
  }

  Future<void> run() async {
    if (connection != null) {
      final shellCommand = shellController.text.split(" ");
      try {
        final result = await connection!.runShellCommand(shellCommand);
        setState(() {
          output = result.toStringValue;
        });
      } catch (e) {
        print("错误: $e");
      }
    }
  }
}

示例代码说明

上述代码实现了一个简单的 Flutter 应用程序,用于通过 android_adb_tool 插件连接到 Android 设备并运行 ADB 命令。以下是关键步骤的说明:

  1. 初始化插件

    AndroidAdbTool.instance.init();
  2. 连接设备

    DeviceHost host = DeviceHost(addr: "127.0.0.1", port: 5037);
    AdbDevice _device = host.connectToDevice();
  3. 运行 ADB 命令

    String output = _device.executeHostShellCommand(shell: shellCommand);
  4. 获取设备列表

    List<AdbDeviceInfo> devices = host.devices();
    for (var element in devices) {
        print(element.data);
    }

更多关于Flutter安卓ADB工具插件android_adb_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter安卓ADB工具插件android_adb_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


android_adb_tool 是一个 Flutter 插件,用于在 Flutter 应用中与 Android 设备进行交互,通过 ADB(Android Debug Bridge)执行各种命令。这个插件可以帮助开发者在 Flutter 应用中直接调用 ADB 命令,而无需离开应用或使用命令行工具。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 android_adb_tool 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  android_adb_tool: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装插件。

使用插件

在 Flutter 应用中使用 android_adb_tool 插件的基本步骤如下:

  1. 导入插件

    在你的 Dart 文件中导入 android_adb_tool 插件:

    import 'package:android_adb_tool/android_adb_tool.dart';
  2. 初始化插件

    在使用插件之前,通常需要初始化它:

    AndroidAdbTool.initialize();
  3. 执行 ADB 命令

    你可以使用 AndroidAdbTool.executeCommand 方法来执行 ADB 命令。例如,获取设备列表:

    String result = await AndroidAdbTool.executeCommand('devices');
    print(result);

    你也可以执行其他 ADB 命令,例如安装 APK、卸载应用、启动 Activity 等。

    String installResult = await AndroidAdbTool.executeCommand('install /path/to/your/app.apk');
    print(installResult);
    
    String uninstallResult = await AndroidAdbTool.executeCommand('uninstall com.example.package');
    print(uninstallResult);
    
    String startActivityResult = await AndroidAdbTool.executeCommand('shell am start -n com.example.package/.MainActivity');
    print(startActivityResult);
  4. 处理结果

    executeCommand 方法返回一个 String,表示命令的执行结果。你可以根据需要对结果进行处理。

示例代码

以下是一个完整的示例,展示如何使用 android_adb_tool 插件获取设备列表并打印结果:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ADB Tool Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              AndroidAdbTool.initialize();
              String result = await AndroidAdbTool.executeCommand('devices');
              print(result);
            },
            child: Text('Get Devices'),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!