1、创建flutter module 工程
2、配置app目录下的build.gradle文件
在Flutter的混合开发中,我们通过Flutter_module 嵌入原生,这样原生开发都需要配置Flutter环境,所以为了减少开发成本,我们需要把Flutter_module 打包成一个库直接供原生使用。
下面我们学习一下Flutter打包aar的步骤:
项目app下build.gradle配置
配置成 apply plugin: 'com.android.library',为了解决第三方库不能一起打包在aar的问题,需要配置 apply plugin: 'com.kezong.fat-aar' ,
def isLib =true
if(isLib) {
applyplugin:'com.android.library'
applyplugin:'com.kezong.fat-aar'
}else {
applyplugin:'com.android.application'
}
//library 需要屏蔽applicationId
if (isLib) {
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
} else {
defaultConfig {
applicationId "com.example.smart_library.host"
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
}
3、在项目根build.gradle 配置
为了解决第三方库,一起不能打包到aar文件中,还需要在项目根build.gradle 配置 classpath 'com.kezong:fat-aar:1.0.3'
classpath'com.kezong:fat-aar:1.0.3'
4、最后编译aar 文件
进入工程目录下,在控制台输入** flutter build aar ** 等待编译....
编译成功后会在工程目录下
5、集成到宿主工程当中
1、拷贝aar文件到lib库下引入到app.gradle配置文件当中
2、根build.gradle配置文件当中引用flutter 仓库
maven {
url "http://download.flutter.io"
}
3、app目录下的gradle配置
repositories {
flatDir {
dirs 'libs' // aar目录
}
}
4、引用aar文件
implementation(name: 'flutter-release', ext: 'aar')
//flutter 相关 根据需要引用对应的版本
implementation 'io.flutter:flutter_embedding_release:1.0.0-ae90085a8437c0ae94d6b5ad2741739ebc742cb4'
implementation 'io.flutter:armeabi_v7a_release:1.0.0-ae90085a8437c0ae94d6b5ad2741739ebc742cb4'
implementation 'io.flutter:arm64_v8a_release:1.0.0-ae90085a8437c0ae94d6b5ad2741739ebc742cb4'
implementation 'io.flutter:x86_64_release:1.0.0-ae90085a8437c0ae94d6b5ad2741739ebc742cb4'
注意以上的版本号 是通过打包的arr 配置文件下,选择对应的版本
6、原生调用flutter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FlutterMain.startInitialization(this);
setContentView(R.layout.activity_flutter_text);
findViewById(R.id.button).setOnClickListener(v -> {
startActivity(FlutterActivity.createDefaultIntent(this));
});
}