Flutter应用保护插件flutter_appguard的使用

Flutter应用保护插件flutter_appguard的使用

简介

• NHN AppGuard 是一个移动应用安全解决方案,可以保护您的应用免受各种滥用行为的影响。

• 其强大的安全功能可以保护您的应用。

• Web控制台可实时提供滥用日志。

• 实时策略设置帮助您限制滥用者。

如何导入SDK以使用插件

下载SDK导入

Android

  1. libs文件夹添加到项目的Android/app目录底部,并复制appguard-{VERSION}.aar文件。
    dependencies {
        implementation files("libs/appguard-0.2.0.aar")
    }
    

iOS

  1. 使用Open in Xcode打开项目中的ios目录,或在Xcode中加载Runner.xcworkspace
  2. AppGuard.xcframework拖放到Runner目标中。
  3. 在弹出的Choose options for adding these files:对话框中,勾选Copy items if needed,并确保在Add to targets中选择了Runner目标。
  4. 确认AppGuard.xcframework已作为Do Not Embed添加到Runner目标的General/Frameworks, Libraries, and Embedded Content部分。

示例代码

import 'dart:convert';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:flutter_appguard/flutter_appguard.dart';

import 'component.dart';

bool get isAndroid => defaultTargetPlatform == TargetPlatform.android;
bool get isIOS => defaultTargetPlatform == TargetPlatform.iOS;

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _i = '-';
  String _callbackLog = '';

  final LabelCheckbox _ucCheckbox = LabelCheckbox("uc");
  final LabelCheckbox _uaCheckbox = LabelCheckbox("ua");
  final LabelTextField _uTextField = LabelTextField("u", "Input u");
  final LabelTextField _eTextField = LabelTextField("e", "Input e");

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

    _uTextField.textEditingController.text = "USERID";
    _eTextField.textEditingController.text = "Test String";

    FlutterAppguard.callbackStream().listen((callback) {
      debugPrint('callback: $callback');

      setState(() {
        _callbackLog = callback;
      });
    });
  }

  void _oCall() {
    bool uc = _ucCheckbox.isChecked;
    FlutterAppguard.o(uc);
  }

  void _pCall() {
    bool ua = _uaCheckbox.isChecked;
    FlutterAppguard.p(ua);
  }

  void _sCall() {
    String u = _uTextField.textEditingController.text;
    FlutterAppguard.s(u);
  }

  Future<String> _iCall() async {
    String i;
    try {
      i = await FlutterAppguard.i() ?? '';
    } on PlatformException catch (e) {
      i = 'Failed to i.';
      if (kDebugMode) {
        print(e.message);
      }
    }

    setState(() {
      _i = i;
    });

    return i;
  }

  void _eCall() {
    String eStr = _eTextField.textEditingController.text;
    List<int> data = utf8.encode(eStr);

    FlutterAppguard.e(data);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        resizeToAvoidBottomInset: false,
        appBar: AppBar(
          title: const Text('Appguard Plugin example app'),
        ),
        body: SingleChildScrollView(
            child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: [
              const HorizontalSplitLine(),
              Text(
                Platform.version,
                style: const TextStyle(fontSize: 10, color: Colors.blue),
                textAlign: TextAlign.center,
              ),
              Text(
                FlutterAppguard.version,
                style: const TextStyle(fontSize: 10, color: Colors.red),
                textAlign: TextAlign.center,
              ),
              _ucCheckbox,
              CustomButton("O", Colors.blue, Colors.white, _oCall),
              const HorizontalSplitLine(),
              _uaCheckbox,
              CustomButton("P", Colors.blue, Colors.white, _pCall),
              const HorizontalSplitLine(),
              _uTextField,
              CustomButton("S", Colors.blue, Colors.white, _sCall),
              const HorizontalSplitLine(),
              CustomButton("I", Colors.blue, Colors.white, _iCall),
              Text(_i,
                  style: const TextStyle(fontSize: 10, color: Colors.blue)),
              const HorizontalSplitLine(),
              if (isAndroid) _eTextField,
              if (isAndroid)
                CustomButton("E", Colors.blue, Colors.white, _eCall),
              if (isAndroid) const HorizontalSplitLine(),
              const Text(
                'Callback',
                style: TextStyle(fontSize: 12, color: Colors.red),
                textAlign: TextAlign.center,
              ),
              TextView(
                _callbackLog,
              ),
              const HorizontalSplitLine(),
            ])),
      ),
    );
  }
}

更多关于Flutter应用保护插件flutter_appguard的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用保护插件flutter_appguard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_appguard 是一个用于保护 Flutter 应用的插件,旨在增加应用的安全性,防止反编译、代码混淆、调试等常见的攻击手段。以下是如何使用 flutter_appguard 的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_appguard 依赖:

dependencies:
  flutter_appguard: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 Flutter 应用的主入口文件(通常是 main.dart)中,初始化 flutter_appguard

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 AppGuard
  await FlutterAppGuard.initialize();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter AppGuard Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter AppGuard Example'),
        ),
        body: Center(
          child: Text('App is protected by Flutter AppGuard!'),
        ),
      ),
    );
  }
}

3. 配置保护选项

flutter_appguard 提供了多种保护选项,你可以根据需要进行配置。例如,启用代码混淆、防止调试、防止反编译等。

await FlutterAppGuard.initialize(
  enableObfuscation: true,  // 启用代码混淆
  enableDebugProtection: true,  // 防止调试
  enableAntiTamper: true,  // 防止应用被篡改
);

4. 处理异常

flutter_appguard 可能会在某些情况下检测到异常(例如应用被篡改或被调试),你可以通过监听异常来处理这些情况:

FlutterAppGuard.onException.listen((exception) {
  print('AppGuard Exception: $exception');
  // 你可以在这里处理异常,例如退出应用或显示警告
});

5. 构建应用

在完成上述步骤后,你可以正常构建你的 Flutter 应用。flutter_appguard 将在构建过程中自动应用相应的保护措施。

flutter build apk --release
回到顶部