Недавно нас попросили внедрить «Мониторинг производительности Firebase» в приложении для Android, но оно вызывает у нас много разных проблем.Приложение раньше нормально работало, но после добавления «firebase-perf» оно компилируется, но затем во время выполнения мы обнаружили, что плагин Let перестал работать, каждое разрешение, определенное с помощью аннотации @AskPermission, просто игнорируется..
Просматривая выходные данные сборки gradle, я наткнулся на эту трассировку стека:
java.lang.IllegalStateException: Expecting .,<, or ;, but found firebaseperf while unpacking <K:Ljava/lang/Object;>Lcom/google/android/gms/internal/firebase-perf/zzw<TK;>;
at org.aspectj.util.GenericSignatureParser.parseClassTypeSignature(GenericSignatureParser.java:204)
at org.aspectj.util.GenericSignatureParser.parseAsClassSignature(GenericSignatureParser.java:56)
at org.aspectj.weaver.UnresolvedType.forGenericTypeSignature(UnresolvedType.java:274)
at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:482)
at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:456)
at org.aspectj.weaver.bcel.BcelWeaver.addAspectsFromJarFile(BcelWeaver.java:263)
at org.aspectj.weaver.bcel.BcelWeaver.addLibraryJarFile(BcelWeaver.java:236)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(AjBuildManager.java:874)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:249)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:185)
at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
at org.aspectj.tools.ajc.Main.run(Main.java:371)
at org.aspectj.tools.ajc.Main$run.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
at com.canelmas.let.LetPlugin$_apply_closure2_closure3.doCall(LetPlugin.groovy:66)
...
Я видел некоторые подобные случаи здесь и там, но пока не нашел решения.На мой взгляд, это выглядит как конфликт между разными версиями aspectjs, определенными в разных путях классов.
Это релевантная часть нашего файла gradle уровня проекта:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.7.11'
classpath('com.canelmas.let:let-plugin:0.1.11')
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.google.firebase:firebase-plugins:1.1.5'
}
}
И это зависимости firebase, которые мы определили в gradle уровня приложения:
dependencies {
compile 'com.google.firebase:firebase-core:16.0.7'
compile 'com.google.firebase:firebase-perf:16.2.3'
}
У кого-нибудь есть идеи о возможном исправлении?
EDIT: Тамбыл кто-то в другом потоке , который утверждал, что решил проблему с кодом ниже, но я понятия не имею, как на самом деле его использовать.Может ли кто-нибудь более опытный Gradle объяснить, куда должна идти эта декларация и что я должен с ней делать?
Я пытался разместить ее в разных местах моего файла Gradle, но я получаюэта ошибка: «Нет такого свойства: classpath для класса: org.gradle.api.tasks.compile.JavaCompile»
def filtered_class_filetree = javaCompile.classpath.asFileTree.filter {
!it.canonicalPath.contains("firebase-perf")
}