如何在 flutter 中使用原生应用 sdk
How to Use Native application sdk in flutter
我有一个本机 sdk,我正在将该 sdk 集成到 flutter 中,但它会出错。
有没有其他方法可以在flutter中集成第三方sdk
要集成第三方原生 SDK,您需要遵循 Platform Channel 方法。
关于如何集成第三方SDK的分步指南,我写了这篇文章。
https://blog.solutelabs.com/integrating-third-party-native-sdks-in-flutter-df418829dcf7
经过一些研究和分析。我成功地将 sdk(.aar) 文件集成到 flutter 应用程序中。第三方SDK就是其中的一个产品。 SDK是纯JAVA.
写的
在 flutter 中我们必须使用 Methodchannel 来与原生模块交互 flutter 应用程序或扩展功能。
以下是集成SDK的步骤。
步骤:1
文档会说要创建一个 flutter 插件包装器。但我已经完成了非常基本和直接的集成。
首先打开 android 工作室中的 android 文件夹(根目录)。示例路径项目>android
将您的.aar 文件放入libs 文件夹(如果不存在则创建)。
示例路径:project>android>app>libs
第 2 步:
打开应用程序文件夹中的 build.gradle 文件并添加以下行
rootProject.allprojects{
...
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
...
// add your sdk dependencies too
implementation files("libs/app-release.aar")
}
之后,同步项目。
步骤:3
现在在新 window 中打开你的 flutter 项目。编辑您的 MainActivity.kt 文件
import com.mypackage.MySDKStartActivity;
private val CHANNEL = "yourMethodChannelName"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "methodName") {
val arg1 : String? = call.argument("arg1");
val arg2 : String? = call.argument("arg2");
startNewActivity(arg1, arg1); // Method to start the SDK
}
}
}
private fun startNewActivity(arg1: String?, arg2: String?) {
val intent = Intent(context, MySDKStartActivity::class.java)
intent.putExtra("param1",arg1); // send some data to the sdk if it required
intent.putExtra("param2",arg2);
startActivity(intent);
}
步骤:4
编辑您的飞镖文件。例如我的 flutter 项目 main.dart 文件在 project>lib>main.dart
static const platform = const MethodChannel('smsAggregationChannel');
@override
Widget build(BuildContext context) {
…
ElevatedButton(
child: Text('Start Aggregate'),
onPressed: _startAggregation,
)
}
Future<void> _startAggregation() async {
try {
final String arg1 = "<arg1>";
final String arg2 = "<arg2>";
await platform.invokeMethod('startAggregation', {// start the aggregation with args
'arg1': arg1,
'arg2': agr2
});
} on PlatformException catch (e) {
print("Failed to start SDK");
}
}
完成所有更改后。 运行 你在 android studio 或 intelliji 中的 flutter 项目。使用 main.dart 启动应用程序您可以在按下按钮时调用 sdk。
如果出现任何问题,请尝试清除 (flutter clean
) 抖动并重新 运行 应用程序。
我的flutter版本是1.22.6,Dart是2.10.5
我有一个本机 sdk,我正在将该 sdk 集成到 flutter 中,但它会出错。 有没有其他方法可以在flutter中集成第三方sdk
要集成第三方原生 SDK,您需要遵循 Platform Channel 方法。
关于如何集成第三方SDK的分步指南,我写了这篇文章。 https://blog.solutelabs.com/integrating-third-party-native-sdks-in-flutter-df418829dcf7
经过一些研究和分析。我成功地将 sdk(.aar) 文件集成到 flutter 应用程序中。第三方SDK就是其中的一个产品。 SDK是纯JAVA.
写的在 flutter 中我们必须使用 Methodchannel 来与原生模块交互 flutter 应用程序或扩展功能。
以下是集成SDK的步骤。
步骤:1
文档会说要创建一个 flutter 插件包装器。但我已经完成了非常基本和直接的集成。
首先打开 android 工作室中的 android 文件夹(根目录)。示例路径项目>android
将您的.aar 文件放入libs 文件夹(如果不存在则创建)。 示例路径:project>android>app>libs
第 2 步:
打开应用程序文件夹中的 build.gradle 文件并添加以下行
rootProject.allprojects{
...
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
...
// add your sdk dependencies too
implementation files("libs/app-release.aar")
}
之后,同步项目。
步骤:3
现在在新 window 中打开你的 flutter 项目。编辑您的 MainActivity.kt 文件
import com.mypackage.MySDKStartActivity;
private val CHANNEL = "yourMethodChannelName"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "methodName") {
val arg1 : String? = call.argument("arg1");
val arg2 : String? = call.argument("arg2");
startNewActivity(arg1, arg1); // Method to start the SDK
}
}
}
private fun startNewActivity(arg1: String?, arg2: String?) {
val intent = Intent(context, MySDKStartActivity::class.java)
intent.putExtra("param1",arg1); // send some data to the sdk if it required
intent.putExtra("param2",arg2);
startActivity(intent);
}
步骤:4
编辑您的飞镖文件。例如我的 flutter 项目 main.dart 文件在 project>lib>main.dart
static const platform = const MethodChannel('smsAggregationChannel');
@override
Widget build(BuildContext context) {
…
ElevatedButton(
child: Text('Start Aggregate'),
onPressed: _startAggregation,
)
}
Future<void> _startAggregation() async {
try {
final String arg1 = "<arg1>";
final String arg2 = "<arg2>";
await platform.invokeMethod('startAggregation', {// start the aggregation with args
'arg1': arg1,
'arg2': agr2
});
} on PlatformException catch (e) {
print("Failed to start SDK");
}
}
完成所有更改后。 运行 你在 android studio 或 intelliji 中的 flutter 项目。使用 main.dart 启动应用程序您可以在按下按钮时调用 sdk。
如果出现任何问题,请尝试清除 (flutter clean
) 抖动并重新 运行 应用程序。
我的flutter版本是1.22.6,Dart是2.10.5