【问题标题】:Link Firebase for each build types为每种构建类型链接 Firebase
【发布时间】:2022-01-25 06:59:52
【问题描述】:

我有 3 种构建类型模式 - 调试、阶段、发布。 FCM、Firebase 分析已集成到我的应用程序中。 我的目标是在我的构建的每种模式中链接不同的 Firebase 项目。 例如,如果我在阶段模式下构建我的应用程序,那么 Firebase 项目 project_stage 应该链接到我的应用程序,因此所有 firebase 设置都应该与 project_stage 一起使用。 如果我做一些动作,那么分析将被记录到 project_stage,我需要从 project_stage 获得通知。 project_live 和 project_debug 相同。 我尝试了几种方法,但都没有为我工作。

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: android firebase


【解决方案1】:

将所需名称传递为buildConfigField FIREBASE_APP_NAMER.string.firebase_app_name

android {
    // default configuration, don't touch.
    defaultConfig {
        buildConfigField "String", "FIREBASE_APP_NAME", "\"default\""
        resValue("string", "firebase_app_name", "default")
    }
    buildTypes {
        debug {}
        staging {}
        release {}
    }
    sourceSets {
        main {} // default source-set
        foo {}
        bar {}
    }
    productFlavors {
        foo {
            buildConfigField "String", "FIREBASE_APP_NAME", "\"foo\""
            resValue("string", "firebase_app_name", "foo")
        }
        bar {
            buildConfigField "String", "FIREBASE_APP_NAME", "\"bar\""
            resValue("string", "firebase_app_name", "bar")
        }
    }
}

除非组合应用名称,否则您可以配置 productFlavorsbuildTypes。但是,可以使用应用程序包中的名称来实例化FirebaseApp

FirebaseApp.getInstance(BuildConfig.FIREBASE_APP_NAME);

或者string资源:

FirebaseApp.getInstance(getString(R.string.firebase_app_name));

还有一个android.environments Gradle 插件用于生成这些buildConfigField


同样,可以只使用正确的res 目录中的string 资源。当productFlavorssourceSets 配置同名(当然还有对应的目录和文件)时,可以用string 资源配置其余所有资源,而不是Android DSL。

Gradle sourceSets 允许的不仅仅是备用 string 资源...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多