本篇文章主要介绍基于android studio 已经配置好flutter项目的基础上,配置编写 android 原生代码的方式。以下是关于本篇内容使用到的一些工具版本,仅作参考,不代表其它版本不可。
Android studio:Android Studio Iguana | 2023.2.1
flutter:flutter_windows_3.22.0-stable
系统:windows 10
1、在Android studio中的flutter项目中,使用 Open Android module in Android Studio 方式,在新打开的界面中编写 Android 原生代码。右键项目内的android目录,如下图依次找到
Flutter -> Open Android module in Android Studio
2、如果你点击这个按钮后,打不开新的界面,执行以下操作:
(1)关闭 Android Studio
(2)删除项目内android目录下的 .gradle 和 .diea 文件夹(如下图)
(3)使用 AS 重新打开你的 flutter 项目
(4)再按照上图中的步骤点击 Open Android module in Android Studio,此时就能够打开新界面了,原因暂且不表。
3、在打开的新界面中gradle编译完可能会遇到如下错误:
Could not create task xxxxxxxx‘:‘.this and base files have different roots
错误原因:可能是升级了 Gradle 版本之后,编译出现了这个错误,某位大神在Flutter仓库的issue找到了问题(原Issue地址)。具体原因为项目路径和依赖路径不匹配,也就是PUB_CACNE(执行flutter pub get 后的缓存数据目录)跟项目目录不在同一个盘符导致。
根据错误原因,解决的思路大体分两种:
第一:降级Gradle 版本,我这里未尝试,据说把 gradle 版本改为 4.1.0 即可
第二:在项目所在的盘符下自定义 PUB_CACHE 目录
(1)在项目所在盘符下新建文件夹 flutter_pub_cache(名字仅供参考,可以自定义)
(2)新建系统环境变量。如下图
变量名:PUB_CACHE
变量值:flutter_pub_cache 文件所在的目录
(3)关闭 Android Studio,在项目所在根目录分别执行命令
flutter clean
flutter pub get
(4)删除 android 目录下的 .gradle 和 .idea 文件夹
(5)再次使用 AS 打开你的项目
最后,再次使用 Open Android module in Android Studio 打开 Android module 窗口,等待gradle同步成功后,就可以正常的编写android原生代码啦,毕竟 Flutter不能完全取代原生,例如有些三方库(涂鸦SDK等)都只支持原生接入。共勉之!