接着上篇介绍了flutter插件和Android原生交互的几种方式 接下来讲一下在flutter插件中添加aar导致的一系列问题以及解决方法
按照Android原生的写法 在插件的Android目录下 新建libs文件夹 然后将导入的aar文件放进去 然后在build.gradle去引入 这个时候 插件这里是不会报错的 但是当你运行flutter项目的时候 就会提示你
Execution failed for task ':baidu_face:bundleDebugAar'.
> Error while evaluating property 'hasLocalAarDeps' of task ':baidu_face:bundleDebugAar'
> Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :baidu_face project caused this error: E:\jxq_project\flutter_class_brand\baidu_face\android\libs\FaceSDK_8.1_20230216-release.aar因为flutter插件 是以library的形式被flutter引用的 所以在library中是不支持添加本地aar的
然后我查了下资料 这种情况下 google推荐的是通过maven引入 于是 说干就干
我的是windows电脑
首先 如果你的电脑没有maven 下载maven
地址:maven的下载地址:Maven – Download Apache Maven
选择最新版本的下载 下载完之后 新建个文件夹 然后把解压后的maven放进去
然后在系统环境变量 添加MAVEN_HOME 把maven所在的文件地址填进去
然后 编辑系统环境变量的path路径 把刚才的MAVEN_HOME添加进去
完了之后 在cmd 输入 mvn -v 能整个输入mvn的版本号 就说明配置成功了
ok 配置好maven 后 我们把本地的aar打包到本地maven
添加的命令行如下
mvn install:install-file -Dfile=你的aar文件路径加上aar文件名称.aar -DgroupId=项目的 Group ID -DartifactId=项目的 Artifact ID -Dversion=版本号-Dpackaging=aar
比如我这里测试的命令行是mvn install:install-file -Dfile=D:\baidu_sdk\FaceSDK_8.1_20230216-release.aar -DgroupId=jxq -DartifactId=baiduface -Dversion=8.1 -Dpackaging=aar
这里的 Group ID Artifact ID 以及version对应的值 都是自己定义的
然后回车
这样就已经成功了 默认的安装地址就在.m2\repository目录下
然后 回到我们插件的Android目录下
这里注意 他默认是没有rootProject.allprojects的 这里要新建rootProject.allprojects 然后添加mavenLocal的本地依赖 如果不添加这个 这里插件运行是没问题 但是flutter项目在运行的时候会报找不到这个插件
然后再dependencies中 引入我们本地依赖 这里的
jxq:baiduface:8.1 分别对应我们命令行中输入的GroupId ArtifactId 和version
编译一下 这个时候就搞定了 flutter项目运行也没问题了