【问题标题】:Calling native libraries in Flutter using Platform Channels使用 Platform Channels 在 Flutter 中调用原生库
【发布时间】:2018-10-05 19:36:18
【问题描述】:

使用platform channels,Flutter 可以与原生平台互操作(即读取电池电量)。在 Android 上,这需要调用 Java 方法。

我想使用第三方 Java 开发工具包(适用于 AWS Cognito)。我可以把这个库放在我的/android 的某个地方,并与之交互吗?如果是这样,我该怎么做?

【问题讨论】:

    标签: java android interop flutter


    【解决方案1】:

    是的,你可以。

    您可以在上面看到documentation,或者如果您愿意,您可以看到 tutorial。如果您使用的 SDK 可以为您提供 Android 和 iOS 的原生代码,否则会很困难。 祝你好运!

    【讨论】:

    • 谢谢!非常有帮助,应该是公认的答案
    【解决方案2】:

    如果您还没有启动插件项目,请创建一个。

    在某处收集第三方 jar - 不要将它们放在 pluginproject/android/... 文件夹中。

    在您的 IDE 中打开插件项目 - 在我的例子中是 IDEA - 并将第三方 jars 添加到 Java 类路径中。 (在 IDEA 中,单击 Project Structure / Modules / 选择 pluginName_android / Dependencies 选项卡 / 绿色 PlusSign / jars 或目录 - 并选择单个 jars 或整个文件夹。将范围保留为 compile 并且不要检查导出。)

    pluginproject/android/src/main/java/com/yourcompany.../... 中用 Java(或 Kotlin)实现您的 android 特定代码/PluginnamePlugin.java,您现在可以在其中使用第三方 jar 声明的类。

    将依赖项添加到 gradle 以便它可以编译。在 pluginproject/android/build.gradle 中(注意 - 有几个 build.gradle)在最后添加这个 - 在 android {} 部分之后

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

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

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

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

    我不确定为什么不能将第三方 jars 放入,例如 pluginproject/android/lib,但这会导致我的 dex 错误,而将它们留在外面pluginproject/ 文件夹有效。

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

    【讨论】:

    • 除非我将依赖项添加到 android/app/build.gradle 而不是 android/build.gradle,否则我没有让实现工作
    • 您好,请问您可以为此制作视频吗?我想使用 iText,但我不清楚 :(
    【解决方案3】:

    flutter 的 Android 端使用 Gradle(与任何其他 android 项目相同)。如果你有一个现有的 android 应用程序,你可能可以从你的 gradle 文件中移植大部分相同的设置。

    除非您已经这样做并且拥有管理 jar 的系统,否则我不建议将 jar 文件直接复制到您的项目中并因此进行源代码管理。

    改为使用 gradle 的内置依赖解析。你应该可以关注Amazon's android sdk set-up directions。不同之处在于您必须通过方法通道连接对 SDK 的调用并编写自己的互操作代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 2018-12-19
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2019-08-12
      • 1970-01-01
      相关资源
      最近更新 更多