flutter 编译aar 文件 供原生调用

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'
image

4、最后编译aar 文件

进入工程目录下,在控制台输入** flutter build aar ** 等待编译....

编译成功后会在工程目录下

image

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 配置文件下,选择对应的版本


image.png

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));
        });
    }

你可能感兴趣的:(flutter 编译aar 文件 供原生调用)