我正在寻找一种将字符串解析为整数的方法,并偶然发现: NumberUtils.toInt("blah",99); 我在我的集成开发环境中输入了这个,它自动为我导入了这个: import autovalue.shaded.org.apache.commons.lang.math.NumberUtils; 我很好奇知道 autovalue.shaded 是什么,为什么它要“遮蔽”org.apache.commons?同时,使用它来满足我的NumberUtils需求是安全的吗?我尝试搜索,但不熟悉搜索结果中提到的假定知识,如 shaded jar 和 uber jar。
"Shading" 是将依赖类嵌入到您自己的 jar 文件中的过程。AutoValue 这样做部分是为了限制短暂依赖,但也是为了确保其依赖项的版本稳定性。您可以在这里阅读更多关于 Shading 的信息: https://maven.apache.org/plugins/maven-shade-plugin/ 我强烈建议您不要在代码中使用 shaded 依赖项,因为这意味着您不再控制依赖项的版本。您可以直接添加依赖项,以便控制其更新时间。您还可以检查您的 gradle 依赖项,确保您的 compile 目标中没有 AutoValue。我从您的其他依赖项中看到这是一个 Android 项目,如果 AutoValue 在 compile 目标上,则 APK 将比您想要的要大得多。它应该通过 apt 在注释处理器类路径中包含,以便其类不包含在最终产品中。Hugo Visser 有一个很好的 gradle 插件,可以为 Android 项目启用 apt 目标。
apt
,但我正在使用 Proguard,那样做是否可以达到同样的效果 - 防止不良的 JAR 包出现在最终的 APK 中? - Mendhak