首页 文章

找不到包名称(Google Analytics)的匹配客户端 - 多个productFlavors和buildTypes

提问于
浏览
245

Context:

我正在尝试为我的应用设置Google Analytics . (有4个自定义 buildTypes 和多个 productFlavors

当我选择 applicationIdapplicationId 设置为 com.my.app.package.name (生成 google-services.json 时使用的包名称)时,它工作正常 . 但是,我的其他风格有不同的applicationIds .

我按照offical devguide进行设置 .

Build Variants Tab (具有不同的 applicationId (包名)中选择任何其他构建变量时,我得到的错误如下:

错误:任务':app:processAllcategoriesDebugfreeGoogleServices'的执行失败 . 找不到包名称'com.my.app.package.name.debug'的匹配客户端

Explanation of Error Message:

在上面的错误消息中的任务名称 Debugfree 是我的自定义 buildTypeAllcategories 是我的 productFlavors 之一 .

I understand the error and know the package name is different from what i used when generating the json, but that is what I'm trying to figure a way around.

Problem:

现在, google-services.json 驻留在 app 文件夹中,因此我无法通过将它们放入特定于风味的源集文件夹中来将它们分离出来 .

Questions:

  • 我的自定义 byildType 用于调试后缀 .debugapplicationId (包名称) . 是否有一种方法可以使 google-services.json 使用我的版本 applicationId (即没有后缀 .debug

  • 有没有办法在同一个 google-services.json 文件中配置多个产品风格,而不使用单独的文件和任务将所需文件复制到 app 文件夹 . 我知道可以使用this post中提到的 task 来完成 . 是否有更简单的方法可以根据gradle配置选择一个文件或选择正确的文件?

  • 我看到 google-services.json 中的 package_name 字段的包名为 com.my.app.package.name . 我可以手动添加多个包名称以适用于所有构建变体吗?如果是的话,怎么做?在文档中找不到任何说明 .

28 回答

  • 30

    如果它们对你们其中一个人没有用,我的问题是包名不是以'com'开头的 . 改变它,现在它的工作原理 .

    希望有所帮助

  • -1

    我想你已经在新文件中添加了firebase json文件"google-services" .json . 确保创建一个新文件check the link on how to create json file from firebase,它应该与您的包名称匹配

    第二件事是,如果要更改包名,请在从下拉列表中选择项目时右键单击文件时使用“替换路径”选项 . 您必须在整个项目中搜索包名并替换它!

    希望这可以帮助 !

  • 3

    检查 google-services.json 上的包裹名称,它应与您应用的本地包裹名称相同

    Example

    "client_info": {
        "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
        "android_client_info": {
          "package_name": "com.my.app.package.name"
        }
    

    在这种情况下,我的本地包名称是 com.my.app.package.name 所以我也用我的本地包名更改了 google-services.json 中的包名

  • 4

    发现这个:

    google-services.json文件通常放在app /目录中,但是从版本2.0.0-alpha3开始,为构建类型添加了插件支持,这将使以下目录结构有效:app / src /
    主/谷歌services.json
    内部测试/谷歌-services.json
    mytype1 /谷歌-services.json
    ...

    Source

    Source 2

  • 14

    确保“google-services.json”文件中的包名与您应用的包名相同 .

  • 58

    我找到了解决方案:

    我们必须在firebase项目中创建两个“应用程序”,然后我们可以从任何一个应用程序(我从风味的应用程序下载)下载json文件 . 它将包含两个应用程序的数据 . 我们可以简单地将json文件复制到应用程序的根目录 .

    资料来源:https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html

  • 0

    No matching client found for package name 'com.tf' 我很确定google-services.json中的"package_name"与app gradle中的"applicationId"不匹配 .

    app gradle:

    defaultConfig {
            applicationId "com.tf" //replace with the package_name in google-services.json =
            minSdkVersion 23
            targetSdkVersion 26
            versionCode 7
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
    

    谷歌,services.json

    "client_info": {
            "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
            "android_client_info": {
              "package_name": "in.ac.geu.debug"
            }
          },
    

    Solution :只需确保 package_nameapplicationId 必须相同 .

  • 11

    你需要将 google-services.json 放入 app/ dir . 对于每种构建类型, app/src 文件夹中应该有一致的导演 .

    例如,如果您有发布和调试:

    app/google-services.json
    app/src/debug/google-services.json
    

    在所有google-services.json文件中,您应根据构建类型指定正确的 package_name .

    例如,在debug dir中它应该像 {com.myapp}.debug

  • 47

    每当您创建或更新包名时确保您的包名完全相同[大写和小写的事项]

    在下面步骤 .

    1). 检查应用级 gradle 文件中的 applicationId

    2). 检查 google-services.json 文件中的 package_name

    3). 检查 AndroidManifest 文件中的 package

    并且为了完全确认,使您的工作包目录名称("com.example.app")也相同 .

  • 13

    打开您的Google-services.json文件,在文件中查找此部分:

    "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
        "android_client_info": {
          "package_name": "com.example.duke_davis.project"
        }
      }
    

    检查包是否与包名相同 . 我是不同的,所以我改变它,它的工作 .

  • 2

    根据您的包名检查 google-services.json 中的 client_idpackage_name 是否具有正确的值 .

    您应该将提到的文件添加到flavors目录中,并使用相应的包名称在 client_idpackage_name 字段中 .

  • 25

    重命名包后,请确保在gradle文件中重命名ApplicationId

  • 26

    我来自本土的反应,但我认为这也适用于这个问题 . 要指定 .

    在文件 android/app/build.gradle 内搜索 applicationId (在 androiddefaultConfig 内)

    并确保该值与此相同

    client[0]client_info.android_client_info.package_name

    作为 google-services.json 内的值 .

  • 2

    如果您在Google-services.json文件上的包名称没问题,请转到gradle.properties文件 . 然后更改您的APPLICATION_ID =“com.yourpackage.name”

  • 215

    您还需要在 google-services.json 中更改包名称

  • 12

    首先,在Gradle中为应用程序包添加后缀:

    yourFlavor {
       applicationIdSuffix "yourFlavor"
    }
    

    这将导致您的包被命名

    com.domain.yourapp.yourFlavor
    

    然后转到当前项目下的Firebase,并使用此包名称添加另一个Android应用程序 .

    然后将现有的google-services.json文件替换为您使用新应用生成的新文件 .

    然后,您将得到具有多个“client_info”部分的内容 . 所以你应该得到这样的东西:

    "client_info": {
        "mobilesdk_app_id": "YOUR APP INFO",
        "android_client_info": {
          "package_name": "com.domain.yourapp"
        }
      }
    
    "client_info": {
        "mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
        "android_client_info": {
          "package_name": "com.domain.yourapp.yourFlavor"
        }
      }
    
  • 173
    android {
        compileSdkVersion 27
        defaultConfig {
            applicationId "com.package.name"
            minSdkVersion 19
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
    

    确保Gradle.app的applicationId与您的包名相同 . 我的问题是这个,我这样解决了

  • 1

    转到您的项目目录并在app / src路径上创建命名为您的产品风格的文件夹(如Alpha,Beta,Store或您的风味名称) . 然后将google-services.json文件复制到每个文件夹 . 不要忘记更改您子文件夹的每个产品flavor的google-services.json文件中的“package_name”字段 .

  • 1

    我通过制作两个源集来解决它,一个是免费的,一个是付费的 . 这两个文件夹都将包含所需的Java代码和资源文件,这些文件将根据特定风格的要求进行编辑 . 例如,您想从Java类和布局文件中删除付费中的AdMob代码 .

  • 8

    我通过重新同步文件 google-services.json 解决了同样的问题 .

    工具> Firebase>连接到Firebase>同步

  • 8

    我在这里解决了同样的问题是简单的解决方案:当你创建 firebase 连接时,请遵循以下准则:

    • 在firebase中添加您的应用程序名称

    • 添加您的应用程序包名称(写入相同的pakage名称,您在应用程序中使用)

    • 当firebase使 download 文件只是 download 它和 paste 它在你的app文件夹中

    • 同步你的项目问题解决了:)

    谢谢

  • 4

    转到google-services.json文件并在客户端部分检查包名称并将其与App包名称进行比较(如果它们不同),然后根据您的应用程序包名称更改客户端包名称,这对我来说运气好 .

    google-services.json file->“package_name”:“com.example.application.tracker”

    App package name-> package“com.example.application.tracker”;

  • 0

    这意味着您的google-services.json文件要么不属于您的应用程序(您是否为其他应用程序下载了google-services.json?)...所以要解决此问题,请执行以下操作:

    1:Sign in to Firebase and open your project. 2:Click the Settings icon and select Project settings. 3:In the Your apps card, select the package name of the app you need a config file for from the list. 4:Click google-services.json. 下载完成后,将新的google-services.json添加到项目根文件夹中,替换现有的文件夹 . 或者只删除旧文件夹 . 为您的第一个项目下载google-services.json非常正常,然后假设或忘记这个特定的google-services.json是为您当前的项目量身定制的,因为所有项目都有一个独特的包名称 .

  • -1

    当我更改应用程序的包名时,我也会遇到此问题 .

    在你的android studio项目中找到“google-services.json”文件 . 打开它 . 并检查您的应用程序的包名是否与此文件中写入的相同 .

    用“google-services.json”文件编写的应用程序包名称必须相同 .

  • 2

    在应用程序的build.gradle文件中检查 applicationIdSuffix . 看看是不是将任何文本连接到 applicationId . 如果是这样,请将其删除 .

  • 5

    1.验证 Package nameApplication ID 应该相同

    2.验证app文件夹中提供的 google-services.json package name

  • 7

    简单 . 从Android Studio注销,完全关闭它 . 重新打开Android工作室,然后再次登录Android Studio .

    然后尝试从Android studio IDE连接到firebase . 这个程序对我有用 .

  • 2

    解决这个问题很简单:只需确保app / build.gradle文件中的软件包名称与App Manifest文件中的软件包名称相同 . 并确保包名称正确 . 那应该解决这个问题

相关问题