【发布时间】:2015-01-20 21:58:30
【问题描述】:
我看到了几个关于这个问题的问题,但它们是针对旧版本的 Netty。
我已经尝试了他们的答案,将 org.jboss.netty 换成 io.netty,但出现了同样的错误。
我正在尝试编译一个使用 Netty 5.0.0Alpha2 (build #16) 并启用 Proguard 的 Android 应用程序。
没有 Proguard,应用程序运行良好。
启用 Proguard 后,它会在尝试使用 Netty 时出现此异常:
java.lang.IllegalStateException: unknown type parameter 'I': class io.netty.channel.SimpleChannelInboundHandler
at io.netty.util.internal.TypeParameterMatcher.find0(Unknown Source)
at io.netty.util.internal.TypeParameterMatcher.find(Unknown Source)
at io.netty.channel.SimpleChannelInboundHandler.<init>(Unknown Source)
at io.netty.channel.SimpleChannelInboundHandler.<init>(Unknown Source)
...
这是我的 Proguard 配置:
# billing
-keep class com.android.vending.billing.**
# butterknife
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector {
*;
}
-keepnames class * {
@butterknife.InjectView *;
}
# admob
-keep public class com.google.android.gms.ads.** {
public *;
}
-keep public class com.google.ads.** {
public *;
}
# logging
-assumenosideeffects class android.util.Log
# netty (partial)
-dontwarn io.netty.**
-dontwarn sun.**
我已经在没有 -dontwarn 选项的情况下对其进行了测试,以查看警告是否会为我指明正确的方向,但它都缺少 slf4j 和 Tomcat 等可选依赖项。
我也尝试过像这样排除所有 Netty 类:
-keep class io.netty.** {
*;
}
...但这似乎也无法解决问题。
【问题讨论】:
-
我不知道netty可以在Android设备上使用,谢谢
标签: android netty proguard obfuscation