我最近在我的Android应用程序中添加了firebase性能,并且在2天内我没有在firebase控制台上看到任何更新.我能够看到崩溃,控制台和日志猫的分析.我还在log cat中看到firebase性能自定义跟踪,但是我无法在控制台上看到更新的那些.有什么我想念的吗?
以下是log cat中的日志:
06-16 07:07:33.511 2325 3121 I Firebase性能:记录TraceMetric - test_trace 1678ms 06-16 07:08:13.726 2325 2325 D Firebase性能:onActivityStopped _fs:63836414 06-16 07:08:13.776 2325 3787 I Firebase性能:记录TraceMetric - _fs 63836ms 06-16 07:08:16.999 2325 2325 D Firebase性能:onActivityResumed _bs:3272685 06-16 07:08:16.999 2325 3787 I Firebase性能:记录TraceMetric - _bs 3272ms 06-16 07:08:47.439 2325 2325 D Firebase性能:onActivityStopped _fs:30441313 06-16 07:08:47.443 2325 4259 I Firebase性能:记录TraceMetric - _fs 30441ms 06-16 07:20:28.401 2325 2325 D Firebase性能:onActivityResumed _bs:700961680 06-16 07:20:28.414 2325 13828 I Firebase性能:记录TraceMetric - _bs 700961ms 06-16 07:20:31.903 2325 …
在 v21 之前的所有版本(即 16-19)上,由于以下错误,我的应用程序在启动时崩溃:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to get provider com.google.firebase.perf.provider.FirebasePerfProvider: java.lang.ClassNotFoundException: com.google.firebase.perf.provider.FirebasePerfProvider
at android.app.ActivityThread.installProvider(ActivityThread.java:4563)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4190)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)
at android.app.ActivityThread.access$1300(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.google.firebase.perf.provider.FirebasePerfProvider
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.ActivityThread.installProvider(ActivityThread.java:4548)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4190)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)
at android.app.ActivityThread.access$1300(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at …Run Code Online (Sandbox Code Playgroud) 该插件已正确安装,并在 Firebase 控制台上提供了一些统计信息。但网络请求未列出。我正在使用 Dio 插件来管理 http 请求。
是否有关于此 pb 的任何已知问题?有人成功让它发挥作用吗?
我正在使用Firebase 性能监控 SDK(在 Android 上,但也会在 iOS 上),对于一个特定的用例,很难知道启动的Trace是否会停止。鉴于没有明显的方法如何取消已经运行的跟踪,我想我每次都会启动它,然后最终仅在正确的情况下停止它。(否则保持原样)。
我会期待问题吗?我认为如果不停止,跟踪就不会被记录(这就是我需要的),但我担心内存泄漏和一些一般资源浪费。
我还可以清除对跟踪的引用,并希望让 GC 扫描它(假设 Firebase 不存储对每个正在运行的跟踪的引用)
在我的应用程序中集成性能 sdk 后,gradle 在构建项目时打印以下警告:
java.lang.IllegalStateException: Expecting .,<, or ;, 但在解包时发现 firebaseperf ;BuilderType:Lcom/google/android/gms/internal/firebase-perf/zzam;>Ljava/lang/Object;Lcom/google/android /gms/internal/firebase-perf/zzdf;
虽然它没有使构建失败,但我不确定这意味着什么,因此在我确定它不会导致任何问题之前不想将其推入生产。
有人可以在这里帮忙吗?
Performance sdk version: 15.2.0
Firebase core version: 15.0.2
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个库,该库使 QA 或开发人员能够在他们的应用程序中调试网络流量,我们目前使用 OKHttp,我知道如何创建拦截器并将所有请求数据分派到库。这样开发人员或 QA 可以查看此类数据(有效负载/URL/大小/响应代码/持续时间...等),但是我想创建一个更通用的解决方案来侦听 HTTP 流量甚至 TCP 流量,然后从那里获取数据,但是我找不到起点,我知道这是可能的,因为 Firebase Performance 正在这样做,但我仍然找不到 API 或无论如何都无法监听此类流量。
我希望来自 Google Firebase 性能团队的人员分享一些有关他们如何做到这一点的信息(如果这不是商业秘密的话):)
我遇到了这个解决方案: https: //github.com/cyruliu/Sensitive_API_Monitor/blob/master/app/src/main/java/com/android/reverse/apimonitor/NetWorkHook.java 但是,反射看起来有点糟糕,我希望找到更好的方法。
我正在尝试使用以下代码创建一个非常简单的 Firebase 性能跟踪:
let trace = Performance.startTrace(name: "setup")
setup()
trace?.stop()
Run Code Online (Sandbox Code Playgroud)
我希望此跟踪要做的就是跟踪 setup() 函数运行所需的时间。它似乎是第一次工作,但在那之后,我将此消息打印到控制台:[Firebase/Performance] Failed to start trace setup because it has already been started and stopped.
这个警告值得关注吗?如果是这样,我做错了什么导致此警告?
更新
classpath 'com.android.tools.build:gradle:3.5.3'到classpath 'com.android.tools.build:gradle:3.6.1'
下面出现编译错误后......
导致:org.gradle.tooling.BuildException:无法处理/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/2
导致:com.android.builder.dexing.DexArchiveBuilderException:无法处理/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/2
原因:com.android.builder.dexing.DexArchiveBuilderException:dexing 时出错。
引起:java.lang.NoSuchMethodError:com.android.tools.r8.D8Command$Builder.setIncludeClassesChecksum(Z)Lcom/android/tools/r8/BaseCompilerCommand$Builder;
导致:org.gradle.tooling.BuildException:无法处理/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/121
导致:com.android.builder.dexing.DexArchiveBuilderException:无法处理/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/121
引起:java.lang.NoSuchMethodError:com.android.tools.r8.D8Command$Builder.setIncludeClassesChecksum(Z)Lcom/android/tools/r8/BaseCompilerCommand$Builder;
原因:com.android.builder.dexing.DexArchiveBuilderException:dexing 时出错。
我应该怎么办?
java android gradle android-gradle-plugin firebase-performance
我对 firebase 还是个新手。有没有什么方法可以让我们使用 Firebase 性能监控从控制台自动逐屏监控我们的 Web 应用程序?我检查了文档,它说我们需要在代码中添加一些痕迹来跟踪(如果我错了,请纠正我)。
使用
com.squareup.retrofit2:retrofit:2.9.0
com.squareup.okhttp3:okhttp:4.4.0
com.google.firebase:firebase-perf-ktx (bom version is 29.0.4)
Run Code Online (Sandbox Code Playgroud)
我无法在 Firebase 性能网络请求部分中看到任何网络请求。自定义跟踪工作正常,但网络请求为空。我也看不到任何I/FirebasePerformance表明正在记录 http 请求的 logcat 日志。
该应用程序使用简单的改造服务来发出如下所示的请求:
Retrofit.Builder()
.baseUrl("https://myurl.com")
.client(get())
.addConverterFactory(MoshiConverterFactory.create(get()))
.build()
.create(MyService::class.java)
Run Code Online (Sandbox Code Playgroud)
这OkHttpClient:
OkHttpClient.Builder()
.addInterceptor(UserAgentHeaderInterceptor())
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
})
.build()
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下操作: