一尘不染

使用平台通道在Flutter中调用本机库

flutter

使用平台通道,Flutter可以与本机平台互操作(即读取电池电量)。在Android上,这需要调用Java方法。

我想使用第三方Java SDK(适用于AWS Cognito)。我可以将此库放在我的某个位置/android并与之交互吗?如果是这样,我该怎么做?


阅读 250

收藏
2020-08-13

共1个答案

一尘不染

如果尚未启动插件项目,请创建一个。

在某个地方收集第三方罐子-不要将它们放在 pluginproject / android / …文件夹中。

在您的IDE中打开插件项目(在我的示例中为IDEA),然后将第三方jar添加到Java类路径中。(在IDEA中,单击项目结构/模块/选择
pluginName _android / Dependencies选项卡/绿色PlusSign / jar或目录-
并选择单个jar或整个文件夹。将范围保留为可编译状态,而不检查导出。)

pluginproject / android / src / main / java / com / yourcompany … /
… / Pluginname
Plugin.java中以Java(或Kotlin)实现您的Android专用代码,现在您可以在其中使用声明的类由第三方罐子。

将依赖项添加到gradle中,以便进行编译。在 pluginproject /android/build.gradle中(注意-
有多个build.gradles),在android {}部分之后添加此内容

dependencies {
    implementation files('../../../java/someapi/somejar.jar')
}

该路径必须相对于 pluginproject / android文件夹。您可以使用此语法指定整个文件夹

implementation fileTree(dir: '../../../somewhere/somefolder', include: ['*.jar'])

运行插件项目中提供的示例应用程序。

我不确定为什么无法将第三方jar放入例如 pluginproject / android / lib,但这对我造成了dex错误,而将它们放在
pluginproject /文件夹之外是 可行的

我只使用过行为良好的第三方jar(没有JNI,请勿创建自己的线程等)。

2020-08-13