新版Flutter集成到已有Android项目

简单介绍新版flutter和android原生混合开发的两种方式:

参考官网地址:https://flutter.cn/docs/development/add-to-app/android/project-setup#java-8-requirement

1.将flutter module 作为依赖项

这种方式会将 Flutter 库打包成由 AAR 和 POM artifacts 组成的本地 Maven 存储库。这种方案可以使你的团队不需要安装 Flutter SDK 即可编译宿主应用。之后,你可以从本地或远程存储库中分发更新 artifacts。

cd some/path/my_flutter
flutter build aar
然后,根据屏幕上的提示完成集成操作。

详细地说,该命令应用于创建(默认情况下创建 debug/profile/release 所有模式)本地存储库,主要包含以下文件:

content_copy

build/host/outputs/repo
└── com
    └── example
        └── my_flutter
            ├── flutter_release
            │   ├── 1.0
            │   │   ├── flutter_release-1.0.aar
            │   │   ├── flutter_release-1.0.aar.md5
            │   │   ├── flutter_release-1.0.aar.sha1
            │   │   ├── flutter_release-1.0.pom
            │   │   ├── flutter_release-1.0.pom.md5
            │   │   └── flutter_release-1.0.pom.sha1
            │   ├── maven-metadata.xml
            │   ├── maven-metadata.xml.md5
            │   └── maven-metadata.xml.sha1
            ├── flutter_profile
            │   ├── ...
            └── flutter_debug
                └── ...

要依赖 AAR,宿主应用必须能够找到这些文件。

为此,需要在宿主应用程序中修改 app/build.gradle 文件,使其包含本地存储库和上述依赖项:

android {
  // ...
}

repositories {
  maven {
    url 'some/path/my_flutter/build/host/outputs/repo'
    // This is relative to the location of the build.gradle file
    // if using a relative path.
  }
  maven {
    url 'https://storage.googleapis.com/download.flutter.io'
  }
}

dependencies {
  // ...
  debugImplementation 'com.example.flutter_module:flutter_debug:1.0'
  profileImplementation 'com.example.flutter_module:flutter_profile:1.0'
  releaseImplementation 'com.example.flutter_module:flutter_release:1.0'
}

 

2 - 依赖模块的源码 这个就没必要多说了

该方式可以使你的 Android 项目和 Flutter 项目能够同步一键式构建。当你需要同时在这两个项目中进行快速迭代时,这种方案非常方便,但是此时,你的团队必须安装 Flutter SDK 才能构建宿主应用程序。

 小提示

默认情况下,宿主应用程序已经提供了 Gradle 项目 :app。要更改该项目的名称,可以在 Flutter 模块的 gradle.properties 文件中设置 flutter.hostAppProjectName。最后,将该项目添加到下面提到的宿主应用的 settings.gradle 文件中。

将 Flutter 模块作为子项目添加到宿主应用的 settings.gradle 中:

content_copy

// Include the host app project.
include ':app'                                    // assumed existing content
setBinding(new Binding([gradle: this]))                                // new
evaluate(new File(                                                     // new
  settingsDir.parentFile,                                              // new
  'my_flutter/.android/include_flutter.groovy'                         // new
))                                                                     // new

假设 my_flutter 和 MyApp 是同级目录。

binding 和 evaluation 脚本可以使 Flutter 模块将其自身(如 :flutter)和该模块使用的所有 Flutter 插件(如 :package_info:video_player 等)都包含在 settings.gradle 的评估的上下文中。

在你的应用中引入对 Flutter 模块的依赖:

content_copy

dependencies {
  implementation project(':flutter')
}

此时,你的应用程序已将 Flutter 模块添加为依赖项,下面,你可以按照 向 Android 应用中添加 Flutter 页面 中的后续步骤继续操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值