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

102
我使用Android Studio将我的安卓应用与Firebase链接,这样就可以创建并设置我的google-service.json到我的项目中。当我在logcat中调试事件日志时,我得到了:
V/FA-SVC: Successful upload. Got network response. code, size: 204, 0

但是在 Firebase 控制台的调试视图中没有显示任何内容


2
你需要为你的应用启用它:adb shell setprop debug.firebase.analytics.app ***package_name*** - Michael Sotnikov
6
我已经完成了。我还激活了额外的日志记录,以提供我所提到的那一行。 - mvand
2
{btsdaf} - Lokesh Tiwari
14
对我也没用-按照文档做了一切。 DebugView始终在左上角选择器中显示“无可用设备”。 - ubuntudroid
8
对我来说,解决问题的步骤是这样的:“重启设备、卸载并重新安装应用”,然后设备就出现在DebugView中了。 - Anton
显示剩余6条评论
26个回答

109

测试设备设置

为了在配置了 Firebase Analytics 应用的连接 Android 测试设备上启用发送 DebugView 数据,您可以按照以下步骤进行:

  1. 如果您只是使用单个构建变体,请执行以下命令:

adb shell setprop debug.firebase.analytics.app [your_app_package_name]
  • 但如果您使用不同于应用程序包名称的多个构建变体,确保执行以下命令:

  • 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.
    

    4
    如果您同时运行多个模拟器,您需要使用 adb -s SERIAL (SERIAL 为模拟器的唯一 ID)。如果连接了一个设备和一个模拟器,您可以使用快捷方式:adb -d ... 表示设备,adb -e ... 表示模拟器。 - friederbluemle
    1
    我已经安装了应用程序并且模拟器处于调试模式,是否需要其他前提条件才能在Firebase中查看数据?该应用程序是一个React Native Android应用程序,对于React Native iOS应用程序,所有数据都从真实设备跟踪。 - Saif Siddiqui
    1
    Firebase控制台调试视图中显示未连接设备。 - Rhn Bhadani
    5
    如何添加另一个测试设备?其他设备并不在我这里,它在测试团队那里。他们没有安装 Android Studio。请帮忙。我能够看到从我的手机触发的调试事件,但无法看到从其他手机触发的事件。 - Vijai Gunasekar
    我的问题是多个构建变体,我该如何知道我的 [your_application_id]? - nikeru8
    有人能找到@VijaiGunasekar提到的问题的解决方案吗?我正在寻找相同问题的解决方案。 - AkshayDoshi

    54
    1. 以调试模式运行您的应用程序
    2. 转到开发者选项选择调试应用程序→选择

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


    1
    每次 Android Studio 进行完整重建时,我们都需要这样做吗?考虑到应用程序被删除并重新安装。 - giorgio79
    我认为这是正确的答案,因为它将确认您当前运行的变体,包括完整的应用程序名称。 - ant2009
    3
    这很有帮助。可惜它没有出现在官方文档中。 - Michał Dobi Dobrzański
    4
    开发者选项在哪里? - iDecode
    在您的设备上可以找到开发者选项。它位于设置/系统/(高级)下,但前提是您已启用开发者模式。要启用开发者模式,请转到设置/关于手机并连续点击七次版本号。这将显示一个确认提示。 - Roland van der Linden
    这是我的解决方案。谢谢,伙计! - undefined

    35

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

    如果更正日期和时间后事件仍未显示在DebugView上,请清除应用程序存储。然后重新启动应用程序并重试。


    确保手机/模拟器时间与AndroidStudio时间完全一致。 - KingKongCoder
    1
    清除应用程序存储是唯一有效的方法,谢谢! - chichilatte
    对我来说,清除应用程序存储是唯一有效的方法。同时,重新安装应用程序也是必要的。谢谢! - Manasranjan

    27

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

    您可以使用以下命令通过adb执行此操作:

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

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


    2
    Gradle文件中应该定义包名 ;) - mrroboaat
    1
    我该如何在iOS上实现这个? - Nabeel K
    1
    你是在安卓设备/模拟器上执行adb命令,还是在开发机的终端上执行?如果是后者,它如何知道要影响哪个模拟器,还是会对所有模拟器都生效? - CodeGrue
    1
    为了回答自己的问题,你需要在开发机器的终端中输入它。然而,packagename周围的引号是问题所在。对我来说,没有引号也可以工作。 - CodeGrue
    还要确保您有正确的包名。我的调试包名不同,因为我使用了构建变体,因此在我的调试构建中添加了 .dev。 - saintjab

    24

    在我的情况下,即使运行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有所帮助,我随后能够看到我的设备。


    1
    谢谢。这对我来说非常有效,适用于Unity 2020.3.20f1操作系统Windows。另外,我找到了关于这些命令的最佳视频 https://www.youtube.com/watch?v=JDxXiarsrHk。 - dev-siberia
    1
    谢谢。这很有帮助!下次我遇到分析问题时,我会检查这个。这应该写在文档中。 - leb1755

    16

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

    然后从终端运行以下命令:

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

    然后在您的设备/模拟器上重新构建/调试应用程序。
    最后,您的调试数据将显示在Firebase > Analytics > DebugView中。
    有人说“擦除内容和设置”和“清除应用程序存储”等等,但我不明白,并花了几个小时尝试让它工作。要清除这些内容,您只需要从设备中删除该应用程序。除非清除所有应用程序数据,否则调试将无法正常工作。
    如果您正在寻找your_app_package_name,它位于AndroidManifest.xml文件的package下。
    2023年更新:如果您正在寻找your_app_package_name,现在可能位于build.gradle文件的applicationId下。

    10

    同时确保您的设备/模拟器上已安装最新版本的Google Play服务,否则无法保证任何功能可用。

    如果您进入模拟器的设置中,会有更新按钮。不幸的是,它需要您通过Google帐户进行登录。

    输入图片描述


    这在我的模拟器上不是一个选项,截至2022年12月。 - Matt Booth

    5
    对我来说,问题在于使用adb命令中文档建议的“包名”。但是你必须使用你构建的应用程序ID。虽然它们经常相同,但如果你在build.gradle文件中指定了另一个appId或为某些特定的构建变体添加后缀,它们可能不同。
    我不知道为什么他们总是用“包名”这个词来表示它,因为它只是我们组织代码的方式的意思。

    5

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

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


    5
    正如其他人所提到的,我认为这里通常的问题是使用了错误的包名。我最近开始合作的一个应用程序也遇到了这个问题,使用AndroidManifest.xml中的package属性并没有起作用。我怀疑构建过程会将一些内容附加到包名中,但找不到定义这些内容的地方。我发现最简单的方法是在Android Studio顶部栏中启动“Attach debugger to Android process”,然后显示带有其关联包名称的进程列表。果然,使用从此列表中获取的正确附加的包名称确实会使Firebase Analytics Debug View唤醒。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接