背景:

  1. 我正在开发一个链接到firebase的kotlin android应用程序,该应用程序已上传到谷歌Playstore.我需要将相同的应用程序上传到具有不同ID和名称以及新的firebase帐户的Google Playstore .而且我不想维护多个代码库.

我做了一些研究,发现在应用程序级别gradle中使用不同的产品风格,我可以创建具有不同应用程序ID的多个apk.

示例:app/gradle

productFlavors {
    pro {
        applicationId = "com.example.my.pkg.pro"
    }
    free {
        applicationId = "com.example.my.pkg.free"
    }
}

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}

我想知道的是,我计划为每种apk使用不同的firebase项目

举个例子,让我们说

  1. com.google.abc对于此apk,我需要链接abc firebase项目-google-services_abc.json
  2. com.google. dev-对于这个apk,我需要链接edf firebase项目-google-services_def.json
  3. com.google.ghi -对于这个apk,我需要链接ghi firebase项目-google-services_ghi.json

我需要维护单个代码库,但需要具有不同的应用程序ID才能作为不同的应用程序发布到Playstore.我需要让每个应用程序使用不同的firebase项目.

谢谢你

推荐答案

利用app/Build.gradle文件中的产品风格来定义不同的应用程序变体.该策略在不影响核心代码库的情况下分离每个变体的配置. Gradle

productFlavors {
    pro {
        applicationId "com.example.my.pkg.pro"
    }
    free {
        applicationId "com.example.my.pkg.free"
    }
    // Add more flavors as needed
}

然后关于firebase文件

app/
  - google-services.json   // (Optional) Default for 'debug' build type
  - pro/
      - google-services_pro.json
  - free/
      - google-services_free.json
  // ... (other flavor directories)

Android相关问答推荐

列表的可变状态未正确更新

Jetpack编写使用自定义主题覆盖库中主题部分

Android Studio中的Kotlin版本不兼容错误:需要元数据1.9.0,但找到1.6.0

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

在以XML格式设置完整屏幕视图时可见App Compat按钮

如何在Android Studio的LinearLayout中禁用阴影

为什么我有多个Player实例?

为什么它显示我的空白屏幕?

Android 应用程序从 Android Studio 安装,但不是作为 .apk 在外部安装.抛出java.lang.UnsatisfiedLinkError

java.lang.ExceptionInInitializerError -- 原因:java.lang.NullPointerException

为什么我要使用 $version 而不是2.7.0?

Android CompanionDeviceManager 永远找不到任何附近的蓝牙设备

在 Kotlin 中设置 startActivity() 时类型不匹配

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

为片段设置主题

如何在 Android 应用程序未激活/未聚焦时显示视图?

为 AlertDialog 的消息文本设置自定义字体

为什么我在 Jetpack Compose 中被警告可选修饰符参数应该具有默认值修饰符?

compose FontFamily 错误:必须初始化变量

如何使伴奏导航 BottomSheet 完全展开?