首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ProGuard中排除批注处理器依赖项

如何从ProGuard中排除批注处理器依赖项
EN

Stack Overflow用户
提问于 2017-09-27 02:21:03
回答 2查看 1.5K关注 0票数 4

当我试图创建一个阻止构建成功完成的Android项目发布时,我收到了一个ProGuard警告。

警告:库类com.google.googlejavaformat.java.filer.FormattingJavaFileObject$1$1扩展或实现了程序类com.google.common.io.CharSink

在稍微挖掘和运行了gradlew :app:dependencies之后,我发现google-java格式已经被包含了,因为它被AutoFactory使用了,它最近被添加到了项目中。

代码语言:javascript
复制
+--- com.google.auto.factory:auto-factory:1.0-beta5
|    +--- com.google.auto:auto-common:0.6 (*)
|    +--- com.google.auto.value:auto-value:1.1 -> 1.3
|    +--- com.google.googlejavaformat:google-java-format:1.1

AutoFactory只作为一个annotationProcessor包含在我的build.gradle文件中,所以我不明白为什么ProGuard会处理它。

代码语言:javascript
复制
provided "com.google.auto.factory:auto-factory:1.0-beta5"
annotationProcessor "com.google.auto.factory:auto-factory:1.0-beta5"

我尝试将一个-dontwarn com.google.gooogleformat.**添加到我的ProGuard配置文件中,指出库只在代码生成过程中使用,而实际上并不是发行版所必需的。这没有效果。

我还查看了在线帮助,但不清楚如何按照建议将该依赖项指定为-libraryjars文件。

如何配置应用程序的ProGuard配置文件或build.gradle文件以防止ProGuard被此库阻塞?如果这很重要,我只是使用ProGuard删除未使用的代码,而不执行任何混淆操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-14 15:08:25

在使用Android3.0.0 Gradle插件和Gradle 4.1升级到AndroidStudio3.0之后,我们重新讨论了这个问题。现在看来,在proguard-rules.pro中添加以下内容可以解决这个问题:

代码语言:javascript
复制
-dontwarn com.google.googlejavaformat.**
-dontwarn com.google.common.**

考虑到我最初的问题,似乎在最初试图解决这个问题时,我们可能将名称空间错误地输入为com.google.googlejavaformat

票数 1
EN

Stack Overflow用户

发布于 2017-11-02 03:26:12

代码语言:javascript
复制
// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46438502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档