Android Studio编译时Error: app:transformClassesAndResourcesWithProguardFor 的解决

╰半夏微凉° 2022-07-14 23:09 199阅读 0赞

最近在弄Android Studio的Gradle文件,发现自己的项目有个地方一直编译不过去,报的错误如下:

  1. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response$Builder Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Headers
  2. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.ResponseBody Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response$Builder
  3. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.ResponseBody Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response
  4. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response$Builder Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response
  5. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response$Builder Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response
  6. Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response$Builder Warning:io.bugtags.agent.instrumentation.okhttp3.ResponseBuilderExtension: can't find referenced class okhttp3.Response
  7. Warning:there were 528 unresolved references to classes or interfaces.
  8. Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
  9. Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForDfy_dev_Release'.
  10. > java.io.IOException: Please correct the above warnings first.
  11. Information:BUILD FAILED
  12. Information:Total time: 1 mins 22.716 secs
  13. Information:1 error
  14. Information:278 warnings
  15. Information:See complete output in console

可以看到错误是出在app:transformClassesAndResourcesWithProguard阶段,也就是Proguard混淆可能出现了问题。同时从上面的logcat可以看出,错误的地方应该是bugtags下面相应的逻辑。
bugtags是一个捕捉bug的sdk,那么在它的文档里应该在proguard-rules.pro有相应的配置,那么找到配置,如下:

  1. # ProGuard configurations for Bugtags
  2. -keepattributes LineNumberTable,SourceFile
  3. -keep class com.bugtags.library.** {*;}
  4. -dontwarn org.apache.http.**
  5. -dontwarn android.net.http.AndroidHttpClient
  6. -dontwarn com.bugtags.library.**
  7. # End Bugtags

那么经过查阅资料,改为下面的代码可以通过编译:

  1. # ProGuard configurations for Bugtags
  2. -keepattributes LineNumberTable,SourceFile
  3. -keep class com.bugtags.library.** {*;} -keep class io.bugtags.** {*;} -dontwarn io.bugtags.** -dontwarn org.apache.http.** -dontwarn android.net.http.AndroidHttpClient -dontwarn com.bugtags.library.** # End Bugtags

可以看到,加了中间的两行:

  1. -keep class io.bugtags.** {*;} -dontwarn io.bugtags.**

这两行代码可以保证我们的应用编译通过,而不会导致出现由于库找不到而产生的崩溃性bug。
gradle文件和我们所加的第三方库经常会有一些冲突,上面的问题可能只是其中一种情况。如果大家对我的解决方法有什么建议的话,希望提出来。

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读