如何在Flutter中使用本地应用程序SDK

3

我有一个原生 SDK,想在 Flutter 中集成,但出现了错误。是否有其他方法可以将第三方 SDK 集成到 Flutter 中?


1
发布错误也 - Sanjeev S
2个回答

6

Solute实验室链接已损坏: 新链接:https://www.solutelabs.com/blog/integrating-third-party-native-sdks-in-flutter - Digvijayad

3
经过一番研究和分析,我成功地将sdk(.aar)文件集成到flutter应用程序中。第三方SDK是其中之一,该SDK纯粹使用JAVA编写。
在flutter中,我们必须使用“Methodchannel”来与本机模块交互或扩展功能。
以下是集成SDK的步骤。
步骤1:
文档会说要创建一个flutter插件包装器。但我已经进行了非常基本和直接的集成。
首先,在android studio中打开您的android文件夹(根级别)。示例路径:project>android
将.aar文件放入libs文件夹中(如果不存在,则创建)。 示例路径:project>android>app>libs
步骤2:
在app文件夹中打开您的build.gradle文件,并添加以下行。
    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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接