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

使用Fastlane构建不同buildTypes APK时Firebase分发异常问题

解决Fastlane上传Firebase应用分发时选错APK的问题

问题现象

使用Fastlane脚本上传debug构建的APK到Firebase应用分发时,实际总是上传Android Studio最后一次构建的APK:若最后构建的是QA版本则上传QA包,若最后是Release版本则因包名冲突报错。

用到的Fastlane脚本

desc "Build dev"
lane :build_dev do
  gradle(
     task: "assemble",
     build_type: "debug", # 预期构建debug包
   )
end

desc "Deploy a new debug version to the Firebase"
lane :distribute_FB_dev do
  build_dev
  firebase_app_distribution(
    service_credentials_file: "firebase_credentials_Dev.json",
    app: "1:12345678910myFBAppID",
    testers: "myMail@gmail.com",
    release_notes: "Dev FB distribution"
  )
end

Android Studio的buildTypes配置

buildTypes {
    release {
        buildConfigField "String", "SERVER_URL", '"https://MyURL.com"'
      
        resValue "string", "app_name", "MyAPP"
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release

    }

    debug {
        buildConfigField "String", "SERVER_URL", '"https://myURL.com"'

        resValue "string", "app_name", "MyApp Debug"
        minifyEnabled false
        debuggable true
        applicationIdSuffix '.dev'
        signingConfig signingConfigs.release
    }
}

问题原因

firebase_app_distribution动作默认会扫描项目中最新生成的APK文件,而非仅识别当前lane构建的包。如果之前有其他构建任务生成的APK(比如Release或QA版本),就会优先选择最新的那个,导致上传错误的包。

解决方法

方法1:明确指定APK路径

在firebase_app_distribution中添加apk参数,直接指定debug构建的APK路径(默认模块为app时,路径通常如下):

desc "Deploy a new debug version to the Firebase"
lane :distribute_FB_dev do
  build_dev
  firebase_app_distribution(
    service_credentials_file: "firebase_credentials_Dev.json",
    app: "1:12345678910myFBAppID",
    testers: "myMail@gmail.com",
    release_notes: "Dev FB distribution",
    apk: "app/build/outputs/apk/debug/app-debug.apk" # 强制指定debug包路径
  )
end

方法2:构建前清理旧文件

修改build_dev lane,先执行clean动作清理旧构建产物,确保最新生成的只有debug包:

desc "Build dev"
lane :build_dev do
  gradle(
     task: "clean", # 先清理旧构建文件
     build_type: "debug"
  )
  gradle(
     task: "assemble",
     build_type: "debug"
   )
end

方法3:用build_android_app自动获取APK路径

Fastlane的build_android_app动作会返回构建后的APK路径,直接传给firebase_app_distribution更可靠,无需手动维护路径:

desc "Deploy a new debug version to the Firebase"
lane :distribute_FB_dev do
  apk_path = build_android_app(
    task: "assemble",
    build_type: "debug"
  )
  firebase_app_distribution(
    service_credentials_file: "firebase_credentials_Dev.json",
    app: "1:12345678910myFBAppID",
    testers: "myMail@gmail.com",
    release_notes: "Dev FB distribution",
    apk: apk_path
  )
end

内容的提问来源于stack exchange,提问作者Wahab Khan Jadon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:50:27