一.运行flutterfire configure 命令报错无法找到 build.gradle 文件:
当你使用 xx.build.kts ,而非传统dsl构建脚本可能遇到的问题
PathNotFoundException: Cannot open file, path = '/Users/*****/android/build.gradle' (OS Error: No such file or directory, errno = 2)
原因:Android Studio已经升级kts构建脚本,但是Firebase 配置命令无法准确的区分,还认为你用的是传统DSL,所以去解析build.gradle 文件,此时千万别想着退回到传统DSL,如果你退回去,Gradle 工具链又让你升级到最新的kts构建,坑死你。
解决办法:放3个模版文件(尽量少,但不好报错)让命令执行成功,然后再删除这3个文件
1.1. Android项目 app下的build.gradle 文件,不放其他的东西,
// android/build.gradle (临时文件,只用于 flutterfire configure)
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.0'
}
}
1.2. Android项目根目录下的build.gradle 文件
// android/build.gradle (临时文件,只用于 flutterfire configure)
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.3.15'
// END: FlutterFire Configuration
classpath 'com.android.tools.build:gradle:8.1.0'
}
}
1.3. Android项目根目录下的settings.gradle 文件
// android/settings.gradle
include ':app'
rootProject.name = 'lyfyapp'
增加这3个文件后我的项目能正常运行Flutterfire 相关命令,配置Firebase相关参数了,成功后,便可以把这3个文件删除掉(建议改个名字留着这个文件)
二、Firebase 无法成功配置
报错 [FirebaseCore][I-COR000005] No app has been configured yet.
奇怪的是Android真机,ios模拟器可以,但是iOS真机不行(就是这么屌)
经查:还需要手动填2行代码 (在IOS项目中AppDelegate源码中)
三、网络问题
以下步骤,大多需要科学上网(尤其是terminal的网络)
安装FireBase cli过程
firebase login
flutterfire configure
都需要科学上网,然而你以为你有了科学上网就万事大吉了,那就大错特错,你开启了科学上网,虽然可以通过网页访问谷歌,但不代表你的的terminal 也能科学上网,可以用curl命令测试一下
curl google.com
如果半天没反应,那说明terminal仍然被墙,需要为你的terminal配置代理,接着问题又来了,我有了科学上网哪里去找代理,现在很多所有的科学上网都是通过设置系统代理的方式接管系统流量,当打开的时候可以,可以找到wifi设置里面的代理,清楚的看到使用的代理端口是多少,以我的Mac为例:
这里可以清楚的看到代理端口:
你需要用命令为terminal设置代理
在terminal中依次运行以下2行命令,分别为http和https设置代理
export http_proxy=http://localhost:端口号
export https_proxy=http://localhost:端口号
注意,这个设置是临时设置,只针对当前terminal窗口,如果要取消代理设置(下次再打开窗口需要重新设置),运行如下命令
unset http_proxy
unset https_proxy
另外:如果你的手机也需要科学上网,你也可以把手机的wifi代理设置到电脑上(需要在同一个局域网),ip部分就要设置成电脑的真实ip,另外注意忽略主机与域的代理设置,可能需要把127.0.0.1,localhost 这2种干掉。
如果还不行,可以手动把这几种代理关掉(注意是关闭电脑的代理(就是点那个toogle button),并不是关闭科学上网的软件),这样代理依然在后台工作,但是不拦截电脑流量,你把手机设置到这个代理点,只代理手机。
又或者想别的办法...,比如像我自己写了一个代理工具...
四、FireBase CLI 工具 很多bug,配置完了自己对应检查对应的原生工程配置文件
比如2个 build.gradle,settings.gradle, 文件中的依赖或者插件很多时候,没有自动加上
总结:
这些问题,有工具链的导致的,有Google的bug,有网络问题和经验问题,乱...