安卓原生集成flutter,通过flutter扩展调用原生项目代码
前言
flutter的试错过程
需求架构
通过
flutter module
集成到安卓原生,但是这个module的安卓代码是可变或者说会被覆盖的,所以不能在这个模块里写原生调用。在这个
flutter module
创建一个本地扩展,通过这个扩展的android模块调用主项目的代码,它在项目中扮演一个代理者的角色。
问题与方案
在本地扩展中,如果只运行
flutter module
,扩展的安卓模块就无法调用到主项目的代码,这里指的是项目的:app
模块代码。如果以依赖的方式引入:app
模块,会导致环形依赖,导致sync失败无法运行。- 解决方案:将
:app
中需要被flutter调用的代码,拆分成一个新的安卓模块:abc
,然后在flutter扩展的android依赖中添加这个模块,此时不会出现环形依赖,sync
可顺利通过。
- 解决方案:将
运行
flutter module
时,出现找不到我们主项目拆分的:abc
模块- 解决方案:在
flutter module
的.android
目录的setting.gradle
引入:abc
,即:
- 解决方案:在
此时单独运行flutter模块进行调试已经没问题了,但是如果增删flutter依赖时,
flutter module
的setting.gradle
配置会被重置,需要手动重新把上述的代码加回去。
结语
写flutter必须要有一点原生基础,不然很多稀奇古怪的问题你根本没办法处理。
安卓原生集成flutter,通过flutter扩展调用原生项目代码
http://blog.icy8.cn/posts/1881310679/