【问题标题】:Add Flutter module to native Android app via standalone .aar file通过独立的 .aar 文件将 Flutter 模块添加到原生 Android 应用程序
【发布时间】:2020-07-06 08:07:22
【问题描述】:

我正在尝试通过 .aar 文件将 Flutter 模块添加到原生 Android 应用程序。

我按照这里的步骤操作: https://flutter.dev/docs/development/add-to-app/android/project-setup

我创建了一个新的 Android 项目。我还独立创建了一个新的 Flutter Module(Android 项目之外的不同位置和 IDE 项目)。然后我通过模块的flutter build aar 构建了一个.aar。然后我从 Android 项目中的 .aar 文件创建了一个模块。

不幸的是,我无法让它工作。添加aar模块后,无法访问FlutterActivityFlutterEngine等,只有io.flutter.facade下的FlutterFragmentFlutter可用。我看不到io.flutter.embedding 包。

显然,.aar 存档中不包含 Flutter 依赖项。我尝试了各种“fat aar”构建脚本。没有成功。另外,据我了解,flutter build aar 所描述的方法应该包含所有必要的 Flutter 依赖项,对吧?

有些人似乎得到了它的工作。不幸的是,在任何地方都没有关于.aar 方法的示例项目或具体帮助。

有人可以帮忙吗?

【问题讨论】:

标签: android flutter native aar


【解决方案1】:

在你的 AndroidManifest.xml 中添加这个

<activity
android:name="io.flutter.embedding.android.FlutterActivity"
android:theme="@style/LaunchTheme"  android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"/>

参考下面的链接

https://flutter.dev/docs/development/add-to-app/android/add-flutter-screen?tab=custom-activity-launch-kotlin-tab

这可能会对你有所帮助。

【讨论】:

    【解决方案2】:

    你是对的,AAR 应该包含所有依赖项,所以从本机方面,你不需要做任何额外的步骤,也许你缺少包含其中之一

    maven {
        url "$project.rootDir/../duy_flutter_module/build/host/outputs/repo"
    }
    maven {
        url 'http://download.flutter.io'
    }
    

    请记住,如果您的 android 原生项目有 2 个模块,app 和第二个模块(包含一个活动宿主您的 Flutter),您需要将 AAR 添加到这两个模块或添加到 allprojects 块内的 build.gradle 根目录。 可以参考这里https://github.com/duytq94/demo-integrate-flutter

    【讨论】:

      【解决方案3】:

      我能够通过独立的 .aar 将 Flutter 模块添加到 Android。

      将 Flutter build aar 添加到 Android Native 的步骤

      1. 将 aar 添加到 app/libs 文件夹。如果没有 libs 文件夹,请创建一个。
      2. 在应用程序 build.gradle 下 添加


      存储库 {

      flatDir { 目录'库' }
      maven {
      网址“https://storage.googleapis.com/download.flutter.io”
      }
      maven {
      url 'https://maven.google.com'
      } }

      3.under build.gradle 中的依赖项。
      指定您提供的 aar


      依赖项{
      实施(名称:'flutter_release-1.0',分机:'aar')
      实现 'io.flutter:flutter_embedding_release:1.0.0-a9d'
      实现 'io.flutter:armeabi_v7a_release:1.0.0-a9d'
      实现 'io.flutter:arm64_v8a_release:1.0.0-a9d'
      实现'io.flutter:x86_64_release:1.0.0-a9d'

      }


      您可以在 output -> repo -> com.packagae --- -> /flutter_release/1.0{version}/flutter_release{version}.pom 文件下找到以下这些实现


      实现 'io.flutter:flutter_embedding_release:1.0.0-a9d'
      实现 'io.flutter:armeabi_v7a_release:1.0.0-a9d'
      实现'io.flutter:arm64_v8a_release:1.0.0-a9d'

      你可以找到如下图的pom

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 2020-02-23
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多