如何在Flutter中使用Native Application SDK

cclgggtu  于 2023-04-07  发布在  Flutter
关注(0)|答案(2)|浏览(106)

我有一个原生的sdk,我正在flutter中集成那个sdk,但是它给出了错误。有没有其他的方法可以在flutter中集成第三方sdk

pcww981p

pcww981p1#

要集成第三方原生SDK,您必须遵循Platform Channel方法。
关于如何集成第三方SDK的分步指南,我写了这篇文章。https://www.solutelabs.com/blog/integrating-third-party-native-sdks-in-flutter

gkl3eglg

gkl3eglg2#

经过一番研究和分析。我成功地将sdk(.aar)文件集成到Flutter应用程序中。第三方SDK是其中一个产品。SDK是用纯JAVA编写的。
在flutter中,我们必须使用Methodchannel来将flutter应用与原生模块进行交互或扩展功能。
下面是集成SDK的步骤。
步骤:1
文档会说创建一个flutter插件 Package 器。但我已经做了非常基本和直接的集成。
首先在android studio中打开你的android文件夹(根目录)。
把你的.aar文件放到libs文件夹中(如果没有就创建)。示例路径:project〉android〉app〉libs
第二步:
打开app文件夹中的build.gradle文件并添加以下行

rootProject.allprojects{
          ...       
          repositories {
              flatDir {
                 dirs 'libs'
              }
          }
     }
     dependencies {
         ...
          // add your sdk dependencies too
          implementation files("libs/app-release.aar")
     }

之后,同步项目。
步骤:3
现在在新窗口中打开flutter项目

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文件,在项目〉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并重新运行应用程序。
我的flutter版本是1.22.6和Dart 2.10.5

相关问题