创建插件

flutter create --platforms=android,ios --template=plugin native_agradlewdd

增加C源代码文apple件到插件项目

在插件项目的ios/Classes文件夹里增加C源代码文件,如增加如下的native_add.c:

int native_add(int a, int b)
{
return a + b;
}

装备iOS主动编译

用Xcode翻开插件项目下的example/ios/Runner.xxcode怎样用cworkspace,在Xcode里的Runner文件夹上右击,经过Ad.gradle文件夹d Files to “Runner”增加native_add.c文件。

装备Android主动编检验网速

在插件项目的android文件夹里新建如下的CMaandroid是什么手机牌子keListsgradle怎样读.txt:

cmake_minimum_requirandroid是什么手机牌子ed(VERSION 3.4.1)
add_library( native_add SHARED ../ios/Classes/native_add.cpp )

在同目录的build.gradle文件里增加如下的externalNativeBuild部分:

androiandroid下载安装d {
// ...
externalNativeBuild {
cmake {
pathandroid体系 "CMakeLists.txtappear"
}
}
// ...
}

主动生成FFI绑定

增加头xcode轿车appreciate件到插件项目,如增加如下的nxcode教程ative_agradle菜鸟教程ddandroid手机.h到插件项目根目录:

int nat检验纸怎样看是否怀孕ive_add(int a, int b);

appearance加ffigen到插件项目pubspec.yaml的dev_dependencies,再增加ffigen装备信息到pubsappreciatepec.yaml:

ffigen:
name: 'NativeAdd'
llvm-path:
- 'llapplevm途径'
output: 'lib/generated_bindings.dart'
headers:
entry-points:
- 'native_add.h'

作业dart run ffigen主动生成FFI绑定(假如产生错误,能xcode怎样用够检验先作业flutter clean)。

加载编译后的库

可以把插件gradle是什么项目的lib/native_add.dart替换成如下内容:

import 'dart:ffi';
import 'dart:io';
import 'package:native_add/generated_xcode怎样编写c言语bindings.dart';
final nativeAdd = NativeAdd(Platform.isAndroid
? DynamicLibrary.open('lgradle是干什么的ibnative_add.so')
: DynamicLibrary.process(检验你的自卑程度));

批改test文件夹下android平板电脑价格的检验xcode轿车文件,之后可以把example/lib检验手机是否被监控/main.dart替换成如下内容:

import 'package:flutter/material.dart';
import 'package:native_add/native_add.gradle是干什么的dart';
void main() {
runApp(MyApp())android下载安装;
}
class MyApp extends StatelessWidgapproachet {
@override
Widget build(BuildContext context) {
return Matxcode教程erialApp(
home: Scaffold(
aandroidstudio安装教程ppBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('1 + 2 = ${naAndroidtiveAdd.naxcode轿车tive_add(1, 2)}'),
),
),
);
}
}

作业一下查看是否能正常gradle菜鸟教程调用。

在Flxcode下载utter项目里调用插件

增加插件的依赖:

dependencies:
# ...
native_add:
path: 插件途径

调用插件功用:

import 'package:flutter/mgradle怎样读aterial.dart';
import 'pacappointmentkage:native_add/native_add.dart';
void main() {
runApp(MyApp());
}
class MyApp extengradle教程ds StatelessWidget {
@override
Widget builapproachd(BuildCandroid什么意思ontext coxcode教程ntext) {
reappreciateturn MaterialApp(
ho检验纸怎样看是否怀孕me: Scaffold(
appBar: AppBar(
title: c检验纸怎样看是否怀孕onst Text('App'),
),
body: Center(
child: Text('1 + 2 = ${nativeAdd.native_add(1, 2)}'),
),gradle构建失败
),
);
}
}