美文网首页
flutter 编译aar 文件 供原生调用

flutter 编译aar 文件 供原生调用

作者: 不问出路 | 来源:发表于2020-12-23 17:21 被阅读0次

    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 文件 供原生调用

          本文链接:https://www.haomeiwen.com/subject/lvhunktx.html