Proguard 使用 DNSJava 库混淆 Android 代码

Posted

技术标签:

【中文标题】Proguard 使用 DNSJava 库混淆 Android 代码【英文标题】:Proguard to obfuscate Android code with DNSJava library 【发布时间】:2013-02-22 06:11:56 【问题描述】:

我有一个 dnsjava.jar 在项目的 /libs/ 目录中的 android 应用程序。一切都很好,可以打包成APK(没有proguard)。

但是,当我将 proguard 引入 project.properties(在 Eclipse 中)时,我收到以下警告:

[2013-03-07 14:16:08 - ] Proguard returned with error code 1. See console
[2013-03-07 14:16:08 - ] Warning: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor: can't find superclass or interface sun.net.spi.nameservice.NameServiceDescriptor
[2013-03-07 14:16:08 - ] Warning: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor: can't find referenced class sun.net.spi.nameservice.NameService
[2013-03-07 14:16:08 - ] Warning: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor: can't find referenced class sun.net.spi.nameservice.NameServiceDescriptor
[2013-03-07 14:16:08 - ] Warning: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor: can't find referenced class sun.net.spi.nameservice.NameService
[2013-03-07 14:16:08 - ] Warning: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor: can't find referenced class sun.net.spi.nameservice.NameService
[2013-03-07 14:16:08 - ]       You should check if you need to specify additional program jars.
[2013-03-07 14:16:08 - ] Warning: there were 5 unresolved references to classes or interfaces.
[2013-03-07 14:16:08 - ]          You may need to specify additional library jars (using '-libraryjars').
[2013-03-07 14:16:08 - ] java.io.IOException: Please correct the above warnings first.
[2013-03-07 14:16:08 - ]    at proguard.Initializer.execute(Initializer.java:321)

使用 -keep class org.xbill.** *; proguard-project.txt 中的 似乎没有解决这个问题。

【问题讨论】:

您好,您如何在 Eclipse 中为您的应用启用 proguard 设置...... 嗯,翻阅了一下,发现添加 -dontwarn org.xbill.** 似乎可以解决问题。哎呀... 尝试在你的 proguard.config 文件中添加-dontwarn 标签。 也不要混淆你使用库dnsjava.jar的类,保持它就像-keep class sun.net.spi.nameservice.NameService *; 一样 【参考方案1】:

这是用 proguard 和 DNSJava 测试的。希望能帮助到你。复制自 asmack 自述文件

# This dnsjava class uses old Sun API
-dontnote org.xbill.DNS.spi.DNSJavaNameServiceDescriptor
-dontwarn org.xbill.DNS.spi.DNSJavaNameServiceDescriptor

# See http://***.com/questions/5701126, happens in dnsjava
-optimizations !code/allocation/variable

【讨论】:

以上是关于Proguard 使用 DNSJava 库混淆 Android 代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 proguard 的 Android 混淆应用程序会不断混淆库 jar - 是吗?

如何使用 proguard 混淆 android 库(.aar)?

使用 ProGuard 混淆 Android 库项目源代码

如何在 Eclipse 中使用 Proguard 混淆 Android 库(.jar 文件)

Proguard 可以混淆 Android 库项目 (APKLIB) 吗?

使用 ProGuard 混淆时暴露内部类