AndroidMechanic AndroidMechanic - 6 months ago 345
Android Question

No matching client found for package name (Google Analytics) - multiple productFlavors & buildTypes

Context:

I'm trying to set up Google Analytics for my app. (having 4 custom

buildTypes
and more than a few
productFlavors
)

It works fine when i select the
Build Variant
which has the
applicationId
set to
com.my.app.package.name
(the package name used when generating the
google-services.json
). But, my other flavors have different applicationIds.

I followed the offical devguide to set it up.

Error I get when any another build variant is selected in
Build Variants Tab
(which has a different
applicationId
(package name) is as follows:


Error:Execution failed for task
':app:processAllcategoriesDebugfreeGoogleServices'.


No matching client found for package name 'com.my.app.package.name.debug'



Explanation of Error Message:

In the task name in the error message above
Debugfree
is my custom
buildType
and
Allcategories
is one of my
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:

Now, the
google-services.json
resides in the
app
folder and hence i am not being able to separate them out for each product flavor by dropping them in the flavor specific source set folder.

Questions:


  1. My custom
    byildType
    for debugging suffixes
    .debug
    to the
    applicationId
    (package name). Is there a way i can make it work with the
    google-services.json
    which has my release
    applicationId
    (i.e. without the suffix
    .debug
    )

  2. Is there a way to have multiple product flavors configured in the same
    google-services.json
    file without using separate files and tasks to copy the required file to
    app
    folder. I know it can be done using
    task
    as mentioned in this post. Is there a simpler way to just have one file or pick right file based on gradle configuration?

  3. I see the
    package_name
    field in
    google-services.json
    has the package name
    com.my.app.package.name
    . Can i add multiple package names manually to work for all build variants? If yes, how to do that? Could not find any instructions in documentations.


Answer

Found this:

The google-services.json file is generally placed in the app/ directory, but as of version 2.0.0-alpha3 of the plugin support was added for build types, which would make the following directory structure valid:

app/src/
    main/google-services.json
    dogfood/google-services.json
    mytype1/google-services.json
    ...

Source

Source 2

Comments