我想在使用模块的大型 android multidex 应用程序中使用 firebase性能监控。所以我将apply plugin和添加dependencies到我的gradle文件中。但是我的构建时间增加了太多。所以告诉我如何在调试版本中创建一个无操作版本。我的问题是我不想apply plugin在调试和发布版本中使用 gradle 文件(因为它仍然是 BETA),只在 alpha 版本中。
在我将Android studio更新到3.0并按照此说明迁移我的项目后
我得到了这样的错误:
* What went wrong:
Execution failed for task
':app:transformClassesWithFirebasePerformancePluginForDevDebug'.
> SHA-256 digest error for org/jacoco/agent/rt/RT.class
Run Code Online (Sandbox Code Playgroud)
我跟踪并发现根本原因来自build.gradle文件中的此代码.
debug {
...
// Run code coverage reports by default on debug builds.
testCoverageEnabled = true
}
Run Code Online (Sandbox Code Playgroud)
因为当我评论这行代码时,项目很好.我使用Android Studio 2.3时没遇到这个问题.
我搜索了一些相关的主题,发现有人说禁用即时运行会解决但不幸的是我的情况不适用.
任何人都有任何建议来解决这个问题?
谢谢
我正在尝试升级支持Android Gradle Plugin版本的firebase-plugins依赖版本,但Gradle构建配置会一直失败,除非我使用的是不推荐使用的版本.我正在使用Play服务版本,并且我添加了依赖项,因此失败了:1.1.23+compile11.4.2firebase-perf
implementation "com.google.firebase:firebase-perf:$playServicesVersion"
Run Code Online (Sandbox Code Playgroud)
修复它的唯一方法是将上面的内容更改implementation为compile.有没有人找到解决方案来解决这个问题?(除了降级到firebase-plugins版本1.1.0-alpha1?)
这是错误消息:
* What went wrong:
A problem occurred configuring project ':app'.
> To use the Firebase Performance Plugin, the Firebase Performance Monitoring SDK must be added to the app's build.gradle. Please add compile 'com.google.firebase:f
irebase-perf:VERSION_NUMBER_GREATER_THAN_OR_EQUAL_TO_11.0.4' to the app's build.gradle.
Run Code Online (Sandbox Code Playgroud)
编辑:已修复此问题firebase-plugins:1.1.3.
android firebase build.gradle android-gradle-plugin firebase-performance
我开始在Fabric上遇到以下问题:
Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by java.lang.NoClassDefFoundError: com.google.firebase.perf.internal.RemoteConfigManager
at com.google.firebase.perf.internal.FeatureControl.<init>(Unknown Source:2)
at com.google.firebase.perf.internal.FeatureControl.zzar(Unknown Source:10)
at com.google.firebase.perf.internal.GaugeManager.<init>(Unknown Source:4)
at com.google.firebase.perf.internal.GaugeManager.zzbf(Unknown Source:22)
at com.google.android.gms.internal.firebase-perf.zzat.<init>(Unknown Source:2)
at com.google.android.gms.internal.firebase-perf.zzat.zza(Unknown Source:1)
at com.google.firebase.perf.network.FirebasePerfUrlConnection.instrument(Unknown Source:9)
at io.branch.referral.network.BranchRemoteInterfaceUrlConnection.doRestfulPost(BranchRemoteInterfaceUrlConnection.java:127)
at io.branch.referral.network.BranchRemoteInterfaceUrlConnection.doRestfulPost(BranchRemoteInterfaceUrlConnection.java:45)
at io.branch.referral.network.BranchRemoteInterface.make_restful_post(BranchRemoteInterface.java:136)
at io.branch.referral.Branch$BranchPostTask.doInBackground(Branch.java:2860)
at io.branch.referral.Branch$BranchPostTask.doInBackground(Branch.java:2835)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)
使用以下配置:
在根build.gradle上
classpath 'com.google.gms:google-services:4.1.0'
classpath 'com.google.firebase:firebase-plugins:1.1.5'
Run Code Online (Sandbox Code Playgroud)
并在应用程序build.gradle中
apply plugin: 'com.google.firebase.firebase-perf'
... …Run Code Online (Sandbox Code Playgroud) 我正在使用 implementation 'com.google.firebase:firebase-perf:19.0.5'
我应用了插件: apply plugin: 'com.google.firebase.firebase-perf'
在我的项目级别gradle中: classpath 'com.google.firebase:perf-plugin:1.3.1'
我遇到了一些问题。1) 在我的构建过程中,我看到了很多这样的Can't instrument异常:
Can't instrument: kotlin/reflect/jvm/internal/impl/load/java/lazy/descriptors/LazyJavaClassMemberScope$nestedClasses$1$enumMemberNames$1.class
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:79)
at com.google.firebase.perf.plugin.instrumentation.InstrumentationVisitor.<init>(InstrumentationVisitor.java:55)
at com.google.firebase.perf.plugin.instrumentation.Instrument.instrument(Instrument.java:170)
at com.google.firebase.perf.plugin.instrumentation.Instrument.instrumentClassesInJar(Instrument.java:117)
at com.google.firebase.perf.plugin.FirebasePerfTransform.performTransformationFor(FirebasePerfTransform.java:563)
at com.google.firebase.perf.plugin.FirebasePerfTransform.transformJarInputs(FirebasePerfTransform.java:445)
at com.google.firebase.perf.plugin.FirebasePerfTransform.transform(FirebasePerfTransform.java:416)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.GeneratedMethodAccessor190.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at
Run Code Online (Sandbox Code Playgroud)
2)我只看到日志TraceMetric,没有NetworkRequestMetric。API 调用使用 Retrofit2,它使用 OkHttp3
如果我什至只包含 Firebase 性能库,我几乎无法构建该项目,它会因以下异常而失败,我不知道如何解决这个问题,因为它在较旧的 Android Studio 版本上运行良好(我不确定哪个一),我使用的是性能插件 1.2.1 和性能库 17.0.2,这是这篇文章的最新版本
com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process /app/build/intermediates/transforms/FirebasePerformancePlugin/debug/10
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:149)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getInitalGraphData(DesugarIncrementalTransformHelper.java:162)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.makeDesugaringGraph(DesugarIncrementalTransformHelper.java:130)
at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:167)
at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getDependenciesPaths(DesugarIncrementalTransformHelper.java:231)
at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.getD8DesugaringCacheInfo(DexArchiveBuilderTransform.java:467)
at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.transform(DexArchiveBuilderTransform.java:390)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at …Run Code Online (Sandbox Code Playgroud) android performance-testing firebase firebase-performance android-r8
从 firebase 的帮助文档https://firebase.google.com/docs/perf-mon/network-traces?platform=android中,它指出
对于所有应用程序类型,性能监控会自动收集应用程序发出的每个网络请求的跟踪,称为 HTTP/S 网络请求跟踪 性能监控会自动收集使用以下网络库的网络请求的指标:OkHttp3、Java 的 URLConnection、Apache HttpClient
他们如何在不使用任何拦截器的情况下自动跟踪 http 请求?他们是否使用任何字节码操作来跟踪他们?
当我添加时,implementation 'com.google.firebase:firebase-perf-ktx:19.1.0'我无法启动浓缩咖啡仪器测试(“应用程序”方案构建正常)。当我尝试开始 Espresso 测试时,我有
Test running failed: Process crashed.
java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite
Run Code Online (Sandbox Code Playgroud)
但如果我删除implementation 'com.google.firebase:firebase-perf-ktx:19.1.0'一切正常。如何保留 Firebase 性能库和 Espresso Instrumented 测试?
我已使用以下 iOS 文档安装并配置了 Firebase Performance SDK: https ://firebase.google.com/docs/perf-mon/get-started-ios
但是,我注意到将其添加到我的应用程序以及简单的跟踪并等待 24 小时后,性能数据没有出现在 Firebase 控制台中。经过进一步调查,我注意到我在 XCode 控制台中收到以下错误消息:
[Firebase/Performance][I-PRF300005] URL 长度超出限制,截断记录的 URL - https://settings.crashlytics.com/spi/v2/platforms/ios/apps/com.[mycompany].[app_id]/settings。
所以我的问题是: 1. 如何以及在哪里增加 crashlytics 的 url 限制?2. 这是性能数据未出现在 Firebase 控制台中的唯一原因吗?对于这一重要问题,我们非常感谢任何见解和帮助。
每个人。我正在使用 gradle 版本 5.6.2。我像这样更新了我的 android studio 项目依赖项:
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
classpath 'com.google.gms:google-services:4.3.2'
classpath "com.google.firebase:perf-plugin:1.3.1"
}
Run Code Online (Sandbox Code Playgroud)
我应用这样的插件:
apply plugin: 'com.google.firebase.firebase-perf'
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
但是现在当我编译我的项目时,这个错误出现了:
Illegal class file: Class module-info is missing a super type. Class file version 53. (Java 9)
Run Code Online (Sandbox Code Playgroud)
它说问题出在 app\build\intermediates\transforms\FirebasePerformancePlugin\bus\debug\9\module-info.class
里面是这样的:
module com.google.gson {
requires transitive java.sql;
exports com.google.gson;
exports com.google.gson.annotations;
exports com.google.gson.reflect;
exports com.google.gson.stream;
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是 firebase 开始使用 Java 9,但我的项目目前正在使用 Java 8。我尝试将版本更改为 9,但出现此错误:
Could not target platform: 'Java SE 9' using tool chain: 'JDK 8 (1.8)'.
Run Code Online (Sandbox Code Playgroud) firebase ×9
android ×8
android-r8 ×1
build.gradle ×1
bytecode ×1
gradle ×1
gson ×1
ios ×1
performance ×1
swift ×1