You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:34:51