美文网首页
flutter打包aar

flutter打包aar

作者: 居叶乐 | 来源:发表于2021-02-04 11:02 被阅读0次

                                        Flutter项目打成AAR供Android原生使用步骤

一、打成本地AAR步骤详解

1、用Android Studio工具打开已有或者新建 Flutter项目,

如上图所示,带x的是未安装的环境,根据提示安装即可,这里特别强调一点,如果已经配置了Flutter插件,还提示插件未安装,输入

 ln -s ~/Library/Application\ Support/Google/AndroidStudiox.x/plugins ~/Library/Application\ Support/AndroidStudiox.x命令回车,命令成功之后再次执行,flutter doctor检测环境是否正常,其中x.x代表的Android Studio版本

2、打开flutter项目中 android 选项里面app里面的 build.gradle文件

复制如下代码到该文件指定的位置当中,

其中applicationId 是你自己项目配置的

  embed "io.flutter:flutter_embedding_release:1.0.0-xxx",中xxx的版本需要自己电脑中搜索,搜索engine.version这个文件,文本编辑打开复制粘贴即可。

def isLib=true

if(isLib){  

  apply plugin: 'com.android.library'

           }else {    

apply plugin: 'com.android.application'

                 }

删除原有的

  apply plugin: 'com.android.application'

defaultConfig目录下面粘贴下面代码

if(!isLib){       

     applicationId "xxxxxx"

}

if(isLib){  

  ndk{        abiFilters 'armeabi','armeabi-v7','x86'    }

}

if (isLib) {    

apply plugin: 'com.kezong.fat-aar'

}

复制下面的代码到最下面

dependencies {

//    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"   

 //新增:将libflutter.so  和 flutter_embedding.jar ,同时和第三方插件打包到aar中    

if (isLib) { 

// 添加 flutter_embedding.jar release 注释

  embed "io.flutter:flutter_embedding_release:1.0.0-xxx"        

// 添加各个 cpu 版本 flutter.so 注释

//embed "io.flutter:x86_64_debug:1.0.0-c8e3b9485386425213e2973126d6f57e7ed83c54"

// embed "io.flutter:x86_debug:1.0.0-c8e3b9485386425213e2973126d6f57e7ed83c54"        

embed "io.flutter:arm64_v8a_release:1.0.0-xxx"        

embed "io.flutter:armeabi_v7a_release:1.0.0-xxx"        

//添加fat-aar处理flutter打包成aar中三方依赖        

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()        

def plugins = new Properties()        

def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')       

 if (pluginsFile.exists()) {       

     pluginsFile.withReader('UTF-8')

reader -> plugins.load(reader) 

                                                       }        

                                    }       

 plugins.each { name, _ ->           

 embed project(path: ":$name", configuration: 'default')       

                      }  

           }

  }

3、打开android 下面 build.gradle文件,修改配置如下,

classpath "com.kezong:fat-aar:1.2.15"

maven { url "http://download.flutter.io" }

maven { url 'https://maven.aliyun.com/repository/google' }

maven { url 'https://maven.aliyun.com/repository/jcenter' }

maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }

 

4、打开如图所示AndroidManifest.xml文件

删掉application的配置项,删掉主入口页面的配置项

5、打开Terminal窗口,cd到android目录下,如果不会请自行百度,

懒人方法(mac):控制板左边长按,拖动到terminal中即可

输入命令flutter pub get,命令执行完如上图所示,再执行下面打包命令

 ./gradlew assembleRelease

Windows 命令 去掉 ./即可,打包成功之后如下图所示

6、打包成功之后,在build目录下面app目录下面outputs下面aar下面找到xxx-release.aar扔给安卓工程师使用即可

注意:flutter项目中所有引用的classpath "com.android.tools.build:gradle:4.1.1"

compileSdkVersion 28buildToolsVersion "28.0.3"

minSdkVersion 16targetSdkVersion 28

需要一致

如若上述打包发生未知错误,备用方式,把flutter项目下android包作为一个安卓原生项目打开,点击下图操作进行手动打包,生成的aar文件在同上面的方式当中

二、Man远程包

plugins {

    id 'maven'

}

 

//上传maven服务

uploadArchives {

    configuration = configurations.archives

    repositories {

        mavenDeployer {

            repository(url: “需要上传的库的地址”) {

                authentication(userName: 'xxx', password: xxx)

            }

            pom.project {

                //版本名称

                version '1.1.1'

                //aar文件名称

                artifactId 'libandroid'

       //aar文件所在maven包路径

groupId 'com.beijiait.android_lib'

                packaging 'aar'

                //更新描述

//                description 'update version 1.1.0 add new method'

                         }

        }

    }

}

重复上面第二步配置,然后输入 ./gradlew uploadArchives进行上传

三、引用所上传的maven包

project标签下面的gradle  allprojects里面添加

maven {    url 'maven私服路径'}

 app下面的 gradle     dependencies里面添存储路径

implementation 'com.xxx:libandroid:1.1.1@aar'

其中@不能省略(需要额外配置才可以省略)

android标签里面添加如下代码

repositories {    

            flatDir {        dirs 'libs'    }

                }

点击Sync Now 等待编译完成

 

相关文章

网友评论

      本文标题:flutter打包aar

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