首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法必须在[proguard.optimize.peephole.ClassMerger]中重写,如果在Android中调用“

问方法必须在[proguard.optimize.peephole.ClassMerger]中重写,如果在Android中调用“
EN

Stack Overflow用户
提问于 2014-06-08 15:45:05
回答 3查看 1.6K关注 0票数 3

至少看到了两个类似的问题,但都考虑了eclipse的非gradle构建。

我正在尝试使用以下方法来组装gradle版本:

代码语言:javascript
复制
./gradlew myapp:assembleRelease --stacktrace

除了最新的Google程序示例外,我的proguard.txt还包含:

代码语言:javascript
复制
# ButterKnife
-keep class *$$ViewInjector{}
-dontwarn butterknife.Views$InjectViewProcessor
-dontwarn butterknife.internal.**

#JodaTime
-dontwarn org.joda.time.**

#Apache
-dontnote org.apache.**
-dontwarn org.apache.**

这似乎消除了所有的警告,但现在与神秘的斗争。

代码语言:javascript
复制
Caused by: java.lang.UnsupportedOperationException: Method must be overridden in [proguard.optimize.peephole.ClassMerger] if ever called

...and,我不知道这是什么意思。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-18 22:06:18

以下是这3个库的正确的proguard配置:

代码语言:javascript
复制
# ButterKnife
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepnames class * { @butterknife.InjectView *;}

#JodaTime
-dontwarn org.joda.time.**

#Apache
-keep public class org.apache.commons.io.**
-keep class org.apache.** { *; }
-dontnote org.apache.**
-dontwarn org.apache.**

不确定这是否是升级,但这不再发生了

票数 1
EN

Stack Overflow用户

发布于 2014-06-30 15:24:13

我也有同样的问题,但从未发现问题的根源。我确实发现,如果您添加了一条规则来跳过优化过程,那么它将阻止生成错误的发生。

代码语言:javascript
复制
-dontoptimize
票数 5
EN

Stack Overflow用户

发布于 2015-01-10 10:43:51

-dontoptimize指定不优化输入类文件,我不确定禁用优化是个好主意,最好是启用或禁用单个优化。

在您的情况下,您可以使用-optimizations optimization_filter

代码语言:javascript
复制
-optimizations !class/merging/vertical*,!class/merging/horizontal*

Proguard将执行所有的优化,但垂直合并类和水平合并类的优化除外。

这里有更多的信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24107860

复制
相关文章

相似问题

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