Android Things通过服务账户连接Firebase数据库遇Gradle错误求助
解决Android Things通过服务账户连接Firebase数据库的问题,附Gradle错误修复
先搞定你遇到的Gradle版本错误
你碰到的Error:(56, 0) Version: 5.8.0 is lower than the minimum version (9.0.0) required for google-services plugin,本质是把Firebase Admin SDK和Android的google-services插件混在一起用了——Admin SDK是给后端/非Android环境设计的,完全不需要依赖Android的google-services插件来配置,这才导致了版本冲突。
修复这个错误的核心操作:
- 移除模块级
build.gradle里的apply plugin: 'com.google.gms.google-services'(如果之前加了的话) - 放弃旧版5.8.0的Admin SDK,直接引入最新稳定版,同时确保Gradle配置适配Java 8(Admin SDK的要求)
完整配置步骤(Android Things + Firebase Admin SDK)
1. 获取Firebase服务账户密钥
- 打开Firebase控制台进入你的项目
- 点击左侧「设置」→「服务账户」
- 切换到「Java」选项卡,点击「生成新的私钥」,下载JSON格式的密钥文件
2. 配置Android Things项目的Gradle
项目根目录build.gradle
确保Gradle插件和仓库配置正确,选和你项目兼容的版本即可:
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.0' // 建议用支持Java 8的版本 } } allprojects { repositories { google() mavenCentral() } }
模块级build.gradle
启用Java 8支持,并引入最新版Admin SDK:
android { compileSdk 33 // 匹配你的Android Things SDK版本 defaultConfig { applicationId "com.your.package.name" minSdk 24 // Android Things最低要求SDK 24 targetSdk 33 versionCode 1 versionName "1.0" } // 必须启用Java 8,否则Admin SDK编译报错 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation 'com.google.firebase:firebase-admin:22.0.0' // 用最新稳定版 implementation 'com.google.android.things:androidthings:1.0.1' // Android Things核心库 }
划重点:千万别加
apply plugin: 'com.google.gms.google-services',Admin SDK完全不需要这个插件。
3. 在Android Things应用中初始化Admin SDK
- 把下载的服务账户密钥JSON文件放到
app/src/main/res/raw目录(没有的话新建一个),建议重命名为service_account.json方便引用 - 在你的Application类或者启动Activity里初始化SDK:
import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; import com.google.firebase.database.FirebaseDatabase; import java.io.InputStream; public class ThingsApp extends android.app.Application { @Override public void onCreate() { super.onCreate(); try { // 读取服务账户密钥 InputStream serviceAccount = getResources().openRawResource(R.raw.service_account); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(com.google.firebase.auth.FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl("https://your-firebase-project.firebaseio.com/") // 替换成你的数据库URL .build(); // 初始化Firebase App FirebaseApp.initializeApp(options); // 获取数据库实例 FirebaseDatabase database = FirebaseDatabase.getInstance(); // 测试写入数据 database.getReference("test").setValue("Hello from Android Things!"); } catch (Exception e) { e.printStackTrace(); } } }
4. 关键注意事项
- 确保Android Things设备能正常访问互联网,网络权限要在Manifest里配置好
- 服务账户的权限要到位:在Firebase控制台的「服务账户」页面,确保该账户拥有「Firebase Admin SDK管理员」或对应的数据库读写权限
- 别在普通Android客户端里用Admin SDK!只有Android Things作为服务端角色时才用这个方案,普通客户端用常规的Firebase Auth和数据库依赖即可
内容的提问来源于stack exchange,提问作者stijnvn
相关产品推荐
相关产品推荐

