我有一个原生 SDK,想在 Flutter 中集成,但出现了错误。是否有其他方法可以将第三方 SDK 集成到 Flutter 中?
我有一个原生 SDK,想在 Flutter 中集成,但出现了错误。是否有其他方法可以将第三方 SDK 集成到 Flutter 中?
要集成第三方本地SDK,您必须遵循平台通道方法。
有关如何集成第三方SDK的逐步指南,我已经撰写了这篇文章。 https://www.solutelabs.com/blog/integrating-third-party-native-sdks-in-flutter
rootProject.allprojects{
...
repositories {
flatDir {
dirs 'libs'
}
}
}
dependencies {
...
// add your sdk dependencies too
implementation files("libs/app-release.aar")
}
接下来,同步项目。
步骤3:
现在在新窗口中打开你的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
编辑您的dart文件。例如,我的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或IntelliJ IDEA中运行Flutter项目。使用main.dart启动应用程序,您可以通过按下按钮来调用SDK。
如果遇到任何问题,请尝试清除(flutter clean
)Flutter并重新运行应用程序。
我的Flutter版本是1.22.6,Dart版本是2.10.5。