Firebase Analytics 调试视图不显示任何内容

我使用 Android Studio 将我的 Android 应用程序与 Firebase 连接起来 它创建并设置了我的 google-service. json 到我的项目中。

当我在 logcat 中调试我的事件日志时,我得到了:

V/FA-SVC: Successful upload. Got network response. code, size: 204, 0

但是在消防控制台调试视图中没有显示任何东西

108706 次浏览

启用调试日志记录与启用调试模式不同。正如 Frank van Puffelen 在他的评论中建议的那样,要启用调试模式,您需要将“ debug. firebase.analytics.app”属性设置为您的应用程序包名称。

您可以使用 adb 通过以下命令完成此操作:

adb shell setprop debug.firebase.analytics.app "your.app.package.name"

您可以在 AndroidManifest.xml中找到应用程序的包名作为 manifest元素(xml 文档中的第一个元素)的 package属性。

测试设备设置

要在已配置的 Firebase Analytics 应用程序的连接 Android 测试设备上发送 DebugView 数据,您可以按照以下步骤操作:

  1. 如果只使用单个生成变量,以下命令就足够了:

    adb shell setprop debug.firebase.analytics.app [your_app_package_name]
    
  2. 但是,如果您使用的是多个构建变体,它们具有不同的应用程序 ID,而这些应用程序 ID 与应用程序包名称不同,那么一定要执行以下命令:

    adb shell setprop debug.firebase.analytics.app [your_application_id]
    

    在这里,应用程序 ID 是在相应的 gradle 文件中找到的构建变量的应用程序 ID。例如,假设您有两个构建变量 x 和 y 的 x.gradle 和 y.gradle,还有一个通用 build.gradle 文件。要使用应用程序 ID com.abc.x 调试构建变量 x,命令将是:

    adb shell setprop debug.firebase.analytics.app com.abc.x
    

    类似地,要使用应用程序 ID com.abc.y 调试构建变量 y,命令将是:

    adb shell setprop debug.firebase.analytics.app com.abc.y
    

此行为一直存在,直到您通过执行以下命令显式禁用它:

adb shell setprop debug.firebase.analytics.app .none.

启用调试模式执行步骤之后,请确保在调试设备或模拟器上以及在 PC 上的 日期和时间是正确的。

如果在更正日期和时间事件之后,DebugView 仍然没有显示,请清除应用程序存储。然后重新启动应用程序,再试一次。

还要确保在设备/模拟器中安装了最新的 Google Play Services,否则就不能保证任何东西能正常工作。

如果转到模拟器上的设置,就会有相应的“更新”按钮。不幸的是,它需要您通过您的谷歌帐户登录。

enter image description here

正如其他人提到的,我认为这里的问题通常是使用错误的软件包名称。我最近开始协作的一个应用程序遇到了这个问题,使用 AndroidManifest.xml 中的 package 属性不起作用。我怀疑构建向包名添加了一些内容,但是找不到定义这些内容的位置。我发现发现实际包名称的最简单的方法是在 Android Studio 的顶部栏中启动“ Attach debug to Android process”,然后在 AVD 上显示与它们相关的包名称的进程列表。毫无疑问,使用正确附加的包名从这个列表,然后导致 Firebase 分析调试视图唤醒。

  1. 在调试模式下运行应用程序
  2. 前往 发展商方案-> 选择调试应用程序-> 选择

您将看到您的设备在 Firebase DebugView中列出

禁用调试设备中的任何广告阻塞机制。这就是问题所在。我启用了 AdAway。

我知道这个问题很老了,但是它可能对某人有帮助。

对我来说,问题是在 adb 命令中使用“包名”,就像他们在文档中建议的那样。但是必须使用构建的 applicationId。虽然它们在很多时候是相同的,但是如果在 build.gradle文件中指定另一个 appId,或者为一些特定的构建变体添加后缀,它们可能会有所不同。

我不知道为什么他们总是使用“软件包名称”的话,因为它只是意味着 我们组织代码的方式

在我的案例中,我替换了以前的谷歌服务。带有新文件的 json 文件。在这种情况下,我需要删除“ build”文件夹,重建项目,调试运行在设备上也遵循其他步骤,比如 adb shell setpropdeg.firebase.analytics.app“ your.app.package.name”。那就成功了。

我有问题的事件和设备没有显示在 FirebaseDebug 视图。

发现我网络上的小洞吞噬了所有的事件。 所以,如果你的网络上有任何类型的广告拦截器,禁用它,然后再试一次。

我正确地配置了所有东西,并且运行了一个模拟器和一个设备。出现了模拟器事件,但设备没有出现。两个小时后,我发现在 DebugView中有一个设备选择器,选择设备就会一直显示事件:

enter image description here

在我的情况下,甚至运行 adb shell setprop debug.firebase.analytics.app "your.app.package.name"也没有帮助。当我绝望地试图找到一些东西的时候,我决定检查一下 Android Studio 的 firebase 插件,看看有没有相关的东西,并在分析部分找到了详细的日志记录需要以下命令:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

我认为这可能是有帮助的,至少看看应用程序是否发送一些跟踪信息到服务器,并运行这些命令。令我大吃一惊的是,它还帮助 DebugView 和我能够看到我的设备。

在阅读了 给你注释之后,我发现从终端运行以下命令很有帮助:

adb kill-server
adb start-server
adb shell setprop debug.firebase.analytics.app package_name

然后我就可以从 Firebase 调试设备列表中选择我的模拟器,并从运行在 Android Studio Bumblebee | 2021.1.1 Beta 1中的应用程序中查看 Firebase 事件

如果你使用的是 iOS 模拟器,试试这个:

第一步: “擦除所有的内容和设置”模拟器,让模拟器再次启动

第二步: 启动你的应用程序

步骤3: 关闭 Firebase 调试选项卡并重新开始。

调试日志没有来找我,在这样做之后,我成功地得到了日志。

注: 以上事件在过去几天至少发生了7/8次。

首先删除设备/模拟器上的应用程序!

从终点站开始:

adb shell setprop debug.firebase.analytics.app [your_app_package_name]

然后在设备/模拟器上重新构建/调试应用程序。

最后,调试数据将显示在 Firebase > Analytics > DebugView 中

人们说“删除内容和设置”和“清除应用程序存储”... 等,但我没有得到它,并花了几个小时试图让这个工作。你需要做的就是清除 从你的设备上删除应用程序。除非清除所有应用程序数据,否则调试无法工作。

如果您正在寻找 Your _ app _ package _ name,它在包下的 AndroidManifest.xml 文件中。

首先检查你的调试设备是否连接到互联网,因为没有一个活跃的互联网连接 Firebase 当然不会收到任何调试数据。

其次,你的调试设备可能会在 FirebaseAnalyticsDebug 视图上显示多次,就像我的一样。

奇怪的是,您必须选择与当前运行的设备相对应的正确项,以便能够看到实时日志。看起来 Google 把你的设备从以前的调试会话中保存下来,而不是用当前的会话替换,我认为这是正确的方法。

enter image description here

我不确定你是否已经收到了你的回复,但是有一件事情让我很困惑,那就是所有的指示都说要做,那就是输入这个命令并使用你的软件包名称。但是,如果您正在使用风格和添加包后缀,那么您必须确保您在 shell 命令中也有这些内容。

如果有 dev/uat/prod 变体/风味组合,请确保添加了后缀(如果有的话)。在我的情况下,我有一个’。Dev’后缀,因此我的命令看起来如下:

adb shell setprop debug.firebase.analytics.app com.myapp.something.dev

我遇到了类似的情况

adb shell setprop debug.firebase.analytics.app "app_package_name"

您可以从 AndroidManifest.xml文件中找到答案。

enter image description here

成功了。

安装所需的 NDK 版本为您的项目。版本21.0.6113669为我工作

see this image for details installation

对我来说,我做了两件事:

首先

我在 android 工作室 Terminal 中添加以下命令

adb shell setprop debug.firebase.analytics.app [your_application_id]

第二:

我在我的物理设备上进入了开发者选项,我点击“选择调试应用”,然后我选择了我的应用。

然后我的设备出现在调试视图设备上。

如果一切都正确设置,而调试视图仍然无法工作

我面临这个问题,即使我已经启用调试视图通过命令和交叉检查一些其他设备和系统正常工作。但不知为何,它在我的模拟器上无法工作。这也可能发生在真正的设备上。

不能只在系统中的特定设备或模拟器上工作的解决方案:

在调试视图中查看日志和事件。我们需要确保模拟器或设备的日期和时间与时区设置为我们的本地时间,也应该是相同的分析控制台。在制定了相同的日期和时间后,我可以看到 Debug View 的日志和事件。

enter image description here

我希望这可以帮助那些正确跟踪所有事情但是错过了这个案子的人。

启用 Firebase 调试模式

使用此命令可以在设备上启用防火基地调试模式。

adb shell setprop debug.firebase.analytics.app yourappid

如果不确定,可以使用以下命令检查应用程序 ID (包名)。

aapt dump badging path-to-your-apk

例如: apatdump 标记 c: myapp.apk

检查 google _ app _ id 的正确性

并确保您的应用程序使用的是预期的谷歌应用程序的 ID,特别是当应用程序有变体。

您可以使用 apktool来解包您的 apk,并在 /res/values/strings中找到 google_app_id,它应该与 Firebase 项目设置中的应用程序 ID 相同。

如果您的 apk 的 google_app_id不是预期的,您可能需要检查它是否使用正确的 google-services.json

清理您的项目和重建,如果一切看起来很好。

Find google_app_id in your apk enter image description here enter image description here

我也遇到了同样的问题。 DebugView 在模拟器上运行得很好,但是分布式应用程序没有得到应用。 我检查了模式,其中包括标志:

         <CommandLineArgument
argument = "-FIRDebugEnabled"
isEnabled = "YES">

有什么办法可以让它在分布式应用程序上运行吗? 为了以防万一,我正在使用 AppCenter。

在网上尝试了所有可能的解决方案后,没有一个奏效。以下是我使用 DebugView 最终找到我的设备的步骤:

  1. 关闭您正在使用的设备上的应用程序

  2. 转到 Firebase 控制台并注销您的帐户

  3. 再次登录,转到控制台并选择正在进行的项目。

  4. 同样,不确定这是否有区别,但不要点击“项目快捷方式”列表下的 DebugView 项目。相反,点击“ Analytics”下拉列表并从中选择 DebugView。

这个过程可能会更新 DebugView 页面中使用的数据流——在完成这些步骤之后,我注意到最初错过的事件现在显示出来了——几乎就像事件被正确地发送/接收了一样,但是 DebugView 没有显示正确的数据流。

小贴士:

今天又遇到了这个问题,在注册/登录到 Firebase 之后,DebugView 仍然没有找到我的设备。修复它的是,在我的设备上,将应用程序移动到后台,即从底部向上滑动到主屏幕..。

当您重新打开应用程序到前台,DebugView 现在应该开始显示事件。我想这是因为将应用程序移动到后台的操作会触发设备上保存的任何事件发送到 Firebase,实际上就是刷新队列。

感谢 GETEM5的想法。我已经尝试了一切可能,但没有结果。 在将应用程序移动到后台之后,应用程序断开与调试器的连接,卸载,从应用程序图标再次启动应用程序,该设备实时出现在 DebugView... ... 但是我认为可以帮助只是移动到后台发送。