没有find匹配的客户端软件包名称(Google Analytics) – 多个productFlavors&buildTypes
语境:
我正在尝试为我的应用设置Google Analytics(分析)。 (有4个自定义的buildTypes
和多个productFlavors
)
当我select具有applicationId
设置为com.my.app.package.name
(生成google-services.json
时使用的软件包名称)的Build Variant
时,它工作正常。 但是,我的其他口味有不同的applicationIds。
我按照官方的指导来设置它。
在Build Variants Tab
(具有不同的applicationId
(包名称))中select任何其他Build Variants Tab
时出现的错误如下所示:
错误:任务“:app:processAllcategoriesDebugfreeGoogleServices”的执行失败。
找不到匹配的包名“com.my.app.package.name.debug”
错误消息的解释:
在Debugfree
上面的错误消息中的任务名称是我的自定义buildType
, Allcategories
是我的productFlavors
。
我明白了这个错误,并知道包名与我在生成json时使用的不同,但这正是我想要解决的问题。
问题:
现在, google-services.json
驻留在app
文件夹中,因此我无法通过将它们放在特定于风味的源文件夹中将它们分离出来。
问题:
- 我的自定义
byildType
debugging后缀.debug
到applicationId
(包名称)。 有没有一种方法,我可以使它与我的发布applicationId
(即没有后缀.debug
)的google-services.json
工作, - 有没有一种方法可以在同一个
google-services.json
文件中configuration多个产品风格,而无需使用单独的文件和任务将所需的文件复制到app
文件夹。 我知道这可以使用本文中提到的task
来完成。 有没有简单的方法来只有一个文件或基于gradleconfigurationselect正确的文件? - 我看到
google-services.json
的package_name
字段的包名称为com.my.app.package.name
。 我可以手动添加多个包名称以适用于所有构build变体吗? 如果是的话,该怎么做? 在文档中找不到任何说明。
find这个:
google-services.json文件通常放在app /目录中, 但是从版本2.0.0开始,插件支持的alpha3被添加到构buildtypes中 ,这将使得以下目录结构有效:
app/src/ main/google-services.json dogfood/google-services.json mytype1/google-services.json ...
资源
来源2
检查您的包名称在您的google-services.json
例
"client_info": { "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145", "android_client_info": { "package_name": "com.my.app.package.name" }
确保“google-services.json”文件中的软件包名称与应用程序的软件包名称相同。
我find了解决办法:
我们必须在firebase项目中创build两个“应用程序”,然后我们可以从任何一个应用程序(我从风味应用程序下载)下载json文件。 它将包含这两个应用程序的数据。 我们可以简单地将json文件复制到应用程序的根目录。
来源: https : //firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
您需要将google-services.json
放入app/
dir。 并且对于每个构buildtypes, app/src
文件夹中应该有一致的导向器。
例如,如果你有释放和debugging:
app/google-services.json app/src/debug/google-services.json
在所有的google-services.json文件中,您应该根据构buildtypes指定正确的package_name
。
例如,在debugging目录里应该是{com.myapp}.debug
根据你的包名检查google-services.json中的client_id
和package_name
是否有正确的值。
您应该将所提到的文件添加到与client_id
和package_name
字段中相应的包名称相关的flavors目录中。
打开你的Google-services.json文件,在文件中find这个部分:
"client": [ { "client_info": { "mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11", "android_client_info": { "package_name": "com.example.duke_davis.project" } }
检查包是否与包名相同。 矿是不同的,所以我改变了它,它的工作。
确保在重命名包后,将Gradle文件中的ApplicationId重命名
如果您在Google-services.json文件中的包名称没有问题,请转到gradle.properties文件。 然后改变你的APPLICATION_ID =“com.yourpackage.name”
如果其中一个没有为你们工作,我的问题是一个包的名称不是以“COM”开头。 改变它,现在它工作。
希望有所帮助
我来自原生的反应,但我认为这也适用于这个问题。 指定。
在文件android/app/build.gradle
searchapplicationId
(在android
, defaultConfig
)
并确保这个价值是一样的
client[0]client_info.android_client_info.package_name
作为google-services.json
的值。
我通过制作两个源代码集,一个免费和一个付费来解决这个问题。 这两个文件夹都将包含必需的java代码和资源文件,这些文件将根据特定风格的要求进行编辑。 例如,您希望从“Java类”和“布局文件”中删除“付费”中的AdMob代码。
我通过重新同步文件google-services.json
解决了同样的问题。
工具> Firebase>连接到Firebase>同步
去你的项目目录,并在app / srcpath上创build名为产品风味的文件夹(如Alpha,Beta,Store或者你的风味的名字)。 然后将您的google-services.json文件复制到每个文件夹。 不要忘记更改您所关联的每个产品口味的google-services.json文件中的“package_name”字段。