Flutter设备安全检查插件safe_device_check的使用

Flutter设备安全检查插件safe_device_check的使用

safe_device_check (null-safety)

检查设备是否满足以下标准:

  • Root/Jail break
  • 是模拟器
  • 开发者模式(仅限Android)
  • 应用程序是否安装在外部存储上(仅限Android)

使用方法

1. 添加导入

import 'package:safe_device_check/device_check.dart';

2. 检查所需的标准

例如:

// 检查设备是否已root或越狱
bool _isRooted = await DeviceCheck.isRooted; // true 或 false

// 检查设备是否为模拟器
bool _isEmulator = await DeviceCheck.isEmulator; // true 或 false

// 检查开发者模式是否开启(仅限Android)
bool _isDeveloperModeOn = await DeviceCheck.isDeveloperModeOn; // true 或 false

// 检查应用程序是否安装在外部存储上(仅限Android)
bool _isInstalledOnExternalStorage = await DeviceCheck.isInstalledOnExternalStorage; // true 或 false

特性

属性 Android iOS
isRooted ✔ true/false ✔ true/false
isEmulator ✔ true/false ✔ true/false
isDeveloperModeOn ✔ true/false 始终 false
isInstalledOnExternalStorage ✔ true/false 始终 false

完整示例代码

import 'package:flutter/material.dart';
import 'package:safe_device_check/device_check.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('设备安全检查'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  bool _isRooted = await DeviceCheck.isRooted;
                  bool _isEmulator = await DeviceCheck.isEmulator;
                  bool _isDeveloperModeOn = await DeviceCheck.isDeveloperModeOn;
                  bool _isInstalledOnExternalStorage = await DeviceCheck.isInstalledOnExternalStorage;

                  print("是否已root或越狱: $_isRooted");
                  print("是否为模拟器: $_isEmulator");
                  print("是否开启了开发者模式: $_isDeveloperModeOn");
                  print("是否安装在外部存储上: $_isInstalledOnExternalStorage");
                },
                child: Text('检查设备安全状态'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter设备安全检查插件safe_device_check的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设备安全检查插件safe_device_check的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


safe_device_check 是一个用于 Flutter 应用的插件,主要用于检测设备是否处于安全环境,例如是否在模拟器上运行、是否被 root 或越狱等。这个插件可以帮助开发者增强应用的安全性,防止应用在不受信任的设备上运行。

以下是如何在 Flutter 项目中使用 safe_device_check 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 safe_device_check 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  safe_device_check: ^0.1.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在需要使用 safe_device_check 的 Dart 文件中导入插件:

import 'package:safe_device_check/safe_device_check.dart';

3. 使用插件

safe_device_check 提供了多个方法来检查设备的安全性。以下是一些常用方法的示例:

检查设备是否为模拟器

bool isEmulator = await SafeDeviceCheck.isEmulator;
if (isEmulator) {
  print("设备是模拟器");
} else {
  print("设备不是模拟器");
}

检查设备是否被 root 或越狱

bool isRooted = await SafeDeviceCheck.isRooted;
if (isRooted) {
  print("设备被 root 或越狱");
} else {
  print("设备未被 root 或越狱");
}

检查应用是否在调试模式下运行

bool isDebug = await SafeDeviceCheck.isDebug;
if (isDebug) {
  print("应用在调试模式下运行");
} else {
  print("应用不在调试模式下运行");
}

检查应用是否被篡改

bool isTampered = await SafeDeviceCheck.isTampered;
if (isTampered) {
  print("应用被篡改");
} else {
  print("应用未被篡改");
}

4. 处理不安全设备

根据检查结果,你可以决定如何处理不安全的设备。例如,你可以阻止应用继续运行,或者向用户显示警告信息。

void checkDeviceSafety() async {
  bool isEmulator = await SafeDeviceCheck.isEmulator;
  bool isRooted = await SafeDeviceCheck.isRooted;
  bool isDebug = await SafeDeviceCheck.isDebug;
  bool isTampered = await SafeDeviceCheck.isTampered;

  if (isEmulator || isRooted || isDebug || isTampered) {
    print("设备不安全,应用将退出");
    // 你可以选择退出应用或显示警告
    // SystemNavigator.pop(); // 退出应用
  } else {
    print("设备安全,继续运行");
  }
}

5. 注意事项

  • safe_device_check 插件的功能依赖于平台的原生实现,因此在某些设备或系统版本上可能无法完全准确检测。
  • 使用该插件时,确保你了解其局限性,并根据实际需求进行调整。

6. 示例代码

以下是一个完整的示例代码,展示了如何使用 safe_device_check 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String _deviceStatus = "正在检查设备状态...";

  [@override](/user/override)
  void initState() {
    super.initState();
    checkDeviceSafety();
  }

  void checkDeviceSafety() async {
    bool isEmulator = await SafeDeviceCheck.isEmulator;
    bool isRooted = await SafeDeviceCheck.isRooted;
    bool isDebug = await SafeDeviceCheck.isDebug;
    bool isTampered = await SafeDeviceCheck.isTampered;

    setState(() {
      if (isEmulator || isRooted || isDebug || isTampered) {
        _deviceStatus = "设备不安全";
      } else {
        _deviceStatus = "设备安全";
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("设备安全检查"),
      ),
      body: Center(
        child: Text(_deviceStatus),
      ),
    );
  }
}
回到顶部