简单介绍新版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 页面 中的后续步骤继续操作。