【发布时间】:2021-03-05 13:28:39
【问题描述】:
使用 Android 的 AOP gradle 插件 Ibotta,添加以下依赖项后似乎无法正常工作
implementation 'com.google.firebase:firebase-auth:20.0.3'
实际结果:
构建成功,似乎没有创建所有的 dex
运行时错误:
Application class not found in dex path list.
AOP 日志显示以下错误:
java.lang.IllegalStateException: Expecting .,<, or ;, but found - while unpacking <MessageType:Lcom/google/android/gms/internal/firebase-auth-api/zzaaa<TMessageType;TBuilderType;>;BuilderType:Lcom/google/android/gms/internal/firebase-auth-api/zzzw<TMessageType;TBuilderType;>;>Lcom/google/android/gms/internal/firebase-auth-api/zzyj<TMessageType;TBuilderType;>;
at org.aspectj.util.GenericSignatureParser.parseClassTypeSignature(GenericSignatureParser.java:204)
at org.aspectj.util.GenericSignatureParser.parseFieldTypeSignature(GenericSignatureParser.java:155)
at org.aspectj.util.GenericSignatureParser.parseFormalTypeParameter(GenericSignatureParser.java:130)
at org.aspectj.util.GenericSignatureParser.parseAsClassSignature(GenericSignatureParser.java:51)
at org.aspectj.weaver.UnresolvedType.forGenericTypeSignature(UnresolvedType.java:275)
at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:479)
at org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(BcelWorld.java:453)
at org.aspectj.weaver.bcel.BcelWeaver.addAspectsFromJarFile(BcelWeaver.java:265)
at org.aspectj.weaver.bcel.BcelWeaver.addLibraryJarFile(BcelWeaver.java:238)
下面添加了重现此所需的代码。
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
项目构建.gradle
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.ibotta:plugin:1.1.0"
}
应用构建.gradle
apply plugin: "com.ibotta.gradle.aop"
dependencies {
//AspectJ
implementation "org.aspectj:aspectjrt:1.9.6"
implementation 'com.google.firebase:firebase-auth:20.0.3'
}
AspectLogging 类
@Aspect
class AOPLog {
@Pointcut("within(com.example.aopdemo..*) && execution(* *(..))")
fun allMethods() {
}
@Around("allMethods()")
@Throws(Throwable::class)
open fun onMethodAdvice(joinPoint: JoinPoint?): Any? {
val methodSignature = joinPoint!!.signature as MethodSignature
val methodName = methodSignature.name
val startTime = System.currentTimeMillis();
val result = (joinPoint as ProceedingJoinPoint).proceed()
val endTime = System.currentTimeMillis() - startTime
Log.e("LoggingVM", "$methodName ---> $endTime")
return result
}
}
注意:Firebase 依赖项是刚刚添加的,并未在演示应用的任何地方使用。
com.example.aopdemo 包只有一个启动器活动,并在 onCreate 方法上调用一些方法。它在添加 firebase 之前跟踪所有方法。添加后,出现上述错误。
【问题讨论】:
-
你的MCVE在哪里?没有代码,没有构建配置,甚至没有这里提到的 AspectJ 版本。
-
“构建成功并且似乎没有创建所有 dex”是什么意思?什么不是你期望被创造的?
标签: android firebase aop aspectj