flutter调用c/c++方法并在项目中使用(记录)

flutter调用c/c++方法并在项目中使用(记录)

参考
官方文档
做人要简单的帖子

1、在vscode中使用指令新建一个plugin项目:flutter create -t plugin native_add
2、在新建的native_add项目中,新建native_add.cpp文件,并放到ios/Classes/,如下图
在这里插入图片描述
3、native_add.cpp添加两个方法

#include <stdint.h>

extern "C" {
// __attribute__((visibility("default"))) __attribute__((used))
int32_t native_add(int32_t x, int32_t y) { return x + y; }

double double_add(double x, double y) { return x + y; }
}

4、在andriod目录下,新建CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)  # for example

add_library( native_add

    # Sets the library as a shared library.
    SHARED

    # Provides a relative path to your source file(s).
    ../ios/Classes/native_add.cpp )

在这里插入图片描述
5、android/build.gradle文件

android{
    // ...
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
}

在这里插入图片描述
6、在lib/native_add.dart下添加内容

import 'dart:async';

import 'package:flutter/services.dart';

import 'dart:ffi'; // For FFI
import 'dart:io'; // For Platform.isX

final DynamicLibrary nativeAddLib = Platform.isAndroid
    ? DynamicLibrary.open("libnative_add.so")
    : DynamicLibrary.process();

final int Function(int x, int y) nativeAdd =
  nativeAddLib
    .lookup<NativeFunction<Int32 Function(Int32, Int32)>>("native_add")
    .asFunction();

class NativeAdd {
  static const MethodChannel _channel =
      const MethodChannel('native_add');

  static Future<String> get platformVersion async {
    final String version = await _channel.invokeMethod('getPlatformVersion');
    return version;
  }
}

在这里插入图片描述
7、在example/lib/main.dart中使用
在这里插入图片描述
8、在vscode的terminal窗口,使用cd example,进入native_add项目的example目录,并执行flutter run,测试是否能成功调用nativeAdd方法
在这里插入图片描述
9、测试结果:nativeAdd(1,2)等于3
在这里插入图片描述
10、在新的flutter项目中引用native_add项目插件,先新建flutter项目:flutter_app_1
在这里插入图片描述
11、flutter_app_1项目的pubspec.yaml文件添加依赖包
参考
flutter依赖包
在这里插入图片描述

  native_add:
    path: ../native_add/

在这里插入图片描述
12、flutter_app_1项目main.dart文件,引入native_add包,并在Text组件调用nativeAdd(1,2)方法

import "package:native_add/native_add.dart";

在这里插入图片描述
13、运行flutter_app_1项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值