Android应用启动触发NumberFormatException问题求助
问题背景
升级旧Android Java应用的Gradle及依赖后,应用编译正常但启动时立刻崩溃,触发NumberFormatException——系统尝试将google_app_id、google_api_key等字符串当作整数解析。经排查,Firebase初始化时调用getIdentifier查找资源失败,导致资源名被错误解析为整数。
解决方案
1. 修复google-services插件的重复配置
根目录build.gradle同时通过buildscript和plugins声明了google-services插件,引发版本冲突,需统一配置方式:
buildscript { repositories { mavenCentral() google() } dependencies { classpath 'com.android.tools.build:gradle:8.2.2' // 明确指定与plugins一致的AGP版本 classpath 'com.google.firebase:perf-plugin:1.4.2' // 移除重复的google-services依赖声明 } } plugins { id 'com.android.application' version '8.2.2' apply false id 'com.google.gms.google-services' version '4.4.0' apply false } allprojects { repositories { mavenCentral() google() } configurations.configureEach { resolutionStrategy { force 'com.android.support:recyclerview-v7:27.1.1' force 'com.android.support:support-v4:27.1.1' } } }
2. 验证google-services.json的包名匹配
确保google-services.json中client[0].client_info.android_client_info.package_name的值,与app模块build.gradle里的applicationId完全一致(包括大小写),插件仅为匹配的包名生成资源。
3. 调整sourceSets避免覆盖生成资源
当前sourceSets配置可能干扰插件生成的资源优先级,修改为:
sourceSets { debug { res.srcDirs = ['src/debug/res'] } release { res.srcDirs = ['src/release/res'] } main { res.srcDirs = ['src/main/res'] // 显式添加插件生成的资源目录,确保优先级 res.srcDirs += file("build/generated/res/google-services/${name}/values") } }
4. 强制清理并重建项目
- 执行
Build > Clean Project - 执行
Build > Rebuild Project - 重启Android Studio并清除缓存(
File > Invalidate Caches... > Invalidate and Restart)
5. 检查生成的资源文件
重建后查看app/build/generated/res/google-services/debug/values/values.xml(或release目录),确认包含以下内容:
<string name="google_app_id" translatable="false">你的mobilesdk_app_id</string> <string name="google_api_key" translatable="false">你的api_key</string> <string name="firebase_database_url" translatable="false">你的firebase_url</string>
若文件不存在或为空,需升级google-services插件版本(AGP 8.2.2建议搭配4.4.1及以上版本)。
6. 修复Firebase Perf插件配置
app模块中Perf插件声明方式错误,修改根目录build.gradle的buildscript依赖:
classpath 'com.google.firebase:perf-plugin:1.4.2'
再修改app模块的plugins:
plugins { id 'com.android.application' id 'com.google.firebase.firebase-perf' id 'io.sentry.android.gradle' version '4.2.0' id 'com.google.gms.google-services' }
内容的提问来源于stack exchange,提问作者balintn
相关产品推荐
相关产品推荐

