本文主要是介绍Android和flutter交互,maven库的形式导入aar包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
记录遇到的问题,在网上找了很多资料,都是太泛泛了,使用后,还不能生效,缺少详细的说明,或者关键代码缺失,我遇到的问题用红色的标注了
导入aar包有两种模式
1.比较繁琐的,手动将aar包放在libs下面,so包放在jniLibs下面
在build.gradle中,以及导入aar包
其中第三行的获取方式
2.导入flutter打包好的maven库,这个非常检查,不需要自己导入aar和so
我这个放在本地
在app的build.gradle两个方法都加上
defaultConfig {
......
ndk {
abiFilters "arm64-v7a"
}
}
到这里包就导入成功了
下面是代码部分
首先在清单文件下配置
第一个是原生的,第二个是我自定义的
下面说说几种打开flutteractivity页面,我在这上面遇到很多坑
1.默认启动的,利用路径直接打开FlutterActivity,没有缓存的Engine
2.带有缓存的Engine在application中设置,其中engine_id自定义唯一值,记得要销毁engine
其实到这里都没什么问题,下面遇到坑了,就是和flutter 的插件交互,我用的 pigeon
首先说遇到问题
1自定义的FlutterAppActivity,用上面的方式,不走生命周期,导致无法在定义的页面设置插件
解决:
1.最重要一点要重写FlutterActivity的getInitialRoute方法,这个相当于上面跳转的路由,不设置,页面空白
跳转时,我将路劲存在了INIT_PARAMS中
2.打开方式要修改,上面不适用,可以用原生的Intent跳转到FlutterAppActivity
initParams是跳转路劲
3.自定义的如何使用缓存的engine
上面有图,在application中设置存储
在自定义页面中
到这里打打开页面是完成了,下面时交互
首先Flutter开发给了我一份用pigeon生成的java文件
类似
我们要自定类去实现他
这时候自定的FlutterAppActivity作用体现出来了
我们在自定义的FlutterAppActivity中
setUp使方法生效
当时没有自定义的时候,我将代码写在application中,导致,页面还没打开,flutter就能调用Android方法,等于提前了
Android调用flutter的方法
目前还遇到一个问题,异步的ApiHost我无法调用,解决后会在这里记录原因和解决方法,有知道的可以告诉我一下
在网上看,异步和同步写法一样,只是最后回调时要在主线程,可是我现在连方法都进不去,苦恼
这篇关于Android和flutter交互,maven库的形式导入aar包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!