【问题标题】:How to Use Native application sdk in flutter如何在 Flutter 中使用 Native 应用程序 sdk
【发布时间】:2020-03-08 20:17:37
【问题描述】:

我有一个本机 sdk,我正在将该 sdk 集成到颤振中,但它给出了错误。 有没有其他方法可以将第三方sdk集成到flutter中

【问题讨论】:

  • 也发布错误

标签: android flutter flutter-dependencies


【解决方案1】:

经过一些研究和分析。我成功地将 sdk(.aar) 文件集成到颤振应用程序中。第三方SDK就是其中一种产品。 SDK 是用纯 JAVA 编写的。

在 Flutter 中,我们必须使用 Methodchannel 将 Flutter 应用与原生模块进行交互或扩展功能。

以下是集成 SDK 的步骤。

步数:1

文档会说要创建一个颤振插件包装器。但我已经完成了非常基本且直接的集成。

首先在 android studio 中打开你的 android 文件夹(根目录)。示例路径项目>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

编辑你的飞镖文件。例如,我的颤振项目 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 中运行你的颤振项目。使用 main.dart 启动应用程序 您可以在按下按钮时调用 sdk。

如果出现任何问题,请尝试清除 (flutter clean) 抖动并重新运行应用程序。

我的flutter版本是1.22.6和Dart 2.10.5

【讨论】:

    【解决方案2】:

    要集成第三方原生 SDK,您必须遵循 Platform Channel 方法。

    关于如何集成第三方 SDK 的分步指南,我已经写了这篇文章。 https://blog.solutelabs.com/integrating-third-party-native-sdks-in-flutter-df418829dcf7

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 2020-02-23
      • 1970-01-01
      • 2022-12-21
      • 2018-10-08
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多