最近,我们被要求执行上的Android应用“火力地堡性能监视”,但它已经引起我们许多不同的问题。 用于工作得很好的应用,但在加入“火力-PERF”,它编译,但随后在运行时,我们发现了让插件停止工作,与@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'
}
}
这些都是我们在应用级gradle这个定义的火力依赖关系:
dependencies {
compile 'com.google.firebase:firebase-core:16.0.7'
compile 'com.google.firebase:firebase-perf:16.2.3'
}
有没有人有一个可能的修复的想法?
编辑:有一个人在另一个线程 ,谁声称已经解决了下面的代码的问题,但我不知道如何使用它。 任何人都可以更摇篮精明能解释这是哪里声明应该去什么我应该用它做什么?
我试图把它放在我的gradle这个文件的许多不同的地方,但我得到这个错误:“没有这样的属性:类路径类:org.gradle.api.tasks.compile.JavaCompile”
def filtered_class_filetree = javaCompile.classpath.asFileTree.filter {
!it.canonicalPath.contains("firebase-perf")
}