And*_*tel 324 android google-analytics gradle android-studio android-productflavors
语境:
我正在尝试为我的应用设置Google Analytics.(有4个自定义buildTypes
和多个productFlavors
)
当我选择Build Variant
具有applicationId
设置的com.my.app.package.name
(生成时使用的包名称)时,它工作正常google-services.json
.但是,我的其他风格有不同的applicationIds.
我按照官方偏离进行设置.
选择任何其他构建变体时Build Variants Tab
(我有一个不同的applicationId
(包名)如下所示的错误如下:
错误:任务':app:processAllcategoriesDebugfreeGoogleServices'的执行失败.
找不到包名称'com.my.app.package.name.debug'的匹配客户端
错误消息的说明:
在上面的错误消息中的任务名称Debugfree
是我的自定义buildType
,Allcategories
是我的一个productFlavors
.
我理解错误并知道包名称与生成json时使用的不同,但这就是我想要解决的问题.
问题:
现在,google-services.json
驻留在app
文件夹中,因此我无法通过将它们放入特定于风味的源集文件夹中来将它们分离出来.
问题:
byildType
调试后缀.debug
为applicationId
(包名).有没有办法让它可以使用google-services.json
我的发布applicationId
(即没有后缀.debug
)google-services.json
文件中配置多个产品风格,而不使用单独的文件和任务将所需文件复制到app
文件夹.我知道这是可以做到用task
作为中提到的这个帖子.是否有更简单的方法可以根据gradle配置选择一个文件或选择正确的文件?package_name
字段中google-services.json
有包名com.my.app.package.name
.我可以手动添加多个包名称以适用于所有构建变体吗?如果是的话,怎么做?在文档中找不到任何说明.Muh*_*sil 316
在google-services.json上查看您的包裹名称, 它应与您应用的本地包裹名称相同
例
"client_info": {
"mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
"android_client_info": {
"package_name": "com.my.app.package.name"
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的本地包名是com.my.app.package.name所以我也用我的本地包名更改了google-services.json中的包名
And*_*tel 203
发现这个:
google-services.json文件通常放在app /目录中,但是从版本2.0.0-alpha3开始,为构建类型添加了插件支持,这将使以下目录结构有效:
Run Code Online (Sandbox Code Playgroud)app/src/ main/google-services.json dogfood/google-services.json mytype1/google-services.json ...
小智 70
找不到包名称'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"
}
Run Code Online (Sandbox Code Playgroud)
谷歌,services.json
"client_info": {
"mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
"android_client_info": {
"package_name": "in.ac.geu.debug"
}
},
Run Code Online (Sandbox Code Playgroud)
解决方案:确保package_name
并且applicationId
必须相同.
Usm*_*man 60
我找到了解决方案:
我们必须在firebase项目中创建两个"应用程序",然后我们可以从任何一个应用程序(我从风味的应用程序下载)下载json文件.它将包含两个应用程序的数据.我们可以简单地将json文件复制到应用程序的根目录.
资料来源:https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
Bog*_*yak 31
你需要google-services.json
放入app/
dir.对于每种构建类型,app/src
文件夹中应该有一致的导演
.
例如,如果您有发布和调试:
app/google-services.json
app/src/debug/google-services.json
Run Code Online (Sandbox Code Playgroud)
在所有google-services.json文件中,您应package_name
根据构建类型指定正确的.
例如,在debug dir里面应该是这样的 {com.myapp}.debug
Rav*_*iya 31
每当您创建或更新时
package name
确保您的包名称完全相同[大写和小写事项]
在下面步骤.
1).签applicationId
入应用级gradle
文件,
2).检查package_name
你的google-services.json
文件,
3).检查package
你的AndroidManifest
文件
并且为了完全确认,使您的工作包目录名称("com.example.app")也相同.
小智 17
打开您的Google-services.json文件,在文件中查找此部分:
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
"android_client_info": {
"package_name": "com.example.duke_davis.project"
}
}
Run Code Online (Sandbox Code Playgroud)
检查包是否与包名相同.我是不同的,所以我改变它,它的工作.
Sha*_*ani 16
检查client_id
并package_name
在谷歌,services.json根据你的包名有一个正确的值.
您应该将所提到的文件添加到flavors目录中,client_id
并在and package_name
字段中显示相应的包名称.
Dro*_*ris 15
首先,在Gradle中为应用程序包添加后缀:
yourFlavor {
applicationIdSuffix "yourFlavor"
}
Run Code Online (Sandbox Code Playgroud)
这将导致您的包被命名
com.domain.yourapp.yourFlavor
Run Code Online (Sandbox Code Playgroud)
然后转到当前项目下的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"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 13
只需两个简单的步骤即可更改包名称:
注意:如果您的“google-services.json”文件已添加到项目中,请在“client_info”内更改您的名称包名称
“google-services.json”内的包名称
就这样。无需在其他地方更改包名称。
Mic*_*551 12
在我的情况下,我忘记了应用程序根目录中的 google-services.json ,这是不同的风格。默认情况下使用它而不是使用存储在风味文件夹中的 json。这搞砸了插件,因为包名不匹配它失败了。
智慧我教,出现这个问题的时候,检查你的项目结构中所有的google-services.json。
Tho*_*ggi 11
我来自本土的反应,但我认为这也适用于这个问题.要指定.
在文件内android/app/build.gradle
搜索applicationId
(内android
,defaultConfig
)
并确保该值与此相同
client[0]client_info.android_client_info.package_name
作为内在的价值google-services.json
.
dev*_*jay 10
当您在项目中下载了Google Services Json文件时,如果程序包名称与项目的程序包名称不匹配,则会发生此错误。
最近重命名了该项目的包名称?它会更新所有类,但不会更新Gradle File。因此,请检查您的Gradle中的包名是否正确,以及清单是否也正确。
小智 8
如果您在Google-services.json文件上的包名称没问题,请转到gradle.properties文件.然后更改您的APPLICATION_ID ="com.yourpackage.name"
小智 5
我认为您已在新文件中添加了Firebase json文件“ google-services” .json。确保创建一个新文件,检查有关如何从firebase创建json文件的链接,该链接应与您的软件包名称匹配
第二件事是,如果要更改程序包名称,则在从下拉菜单中选择项目时,在文件下单击鼠标右键时,请使用“在路径中替换”选项。您必须在整个项目中搜索包名称并替换它!
希望这可以帮助 !
小智 5
如果有人更改了他们现有的包名,那么有时会出现这样的问题,因此您应该更改本地包名、build.gradle文件包名,如果您的项目有任何google-services.json文件,那么您只需要更改您的 JSON 文件包名也是。
旧文件看起来像那样
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:517104510151:android:8b7ed3989db24a6f928ae2",
"android_client_info": {
"package_name": "com.techsajib.oldapp"
}
},
Run Code Online (Sandbox Code Playgroud)
新文件看起来像这样
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:517104510151:android:8b7ed3989db24a6f928ae2",
"android_client_info": {
"package_name": "com.techsajib.newapp"
}
},
Run Code Online (Sandbox Code Playgroud)
注意:有时 JSON 文件有多个包名,因此将它们全部更改
归档时间: |
|
查看次数: |
318013 次 |
最近记录: |