2013-10-23 79 views
4

我正在尝试使用Proguard来混淆我的Android应用程序,该应用程序使用库jsch-1.50.jar将文件上传到SFTP服务器。无法在Android项目中启用Proguard,其中包含jsch lib

当我从Eclipse中进行导出时,出现警告“无法引用类”,也没有任何内容产生。我尝试了各种方法来告诉Proguard忽略jsch类,但它没有任何区别,因此我想知道我是否误解了这个方法。我并不太担心优化,但我希望代码被混淆。

我已经安装ProGuard的,属性如下:

-keep class com.jcraft.jsch.jce.* 
-keep class * extends com.jcraft.jsch.KeyExchange 
-keep class com.jcraft.jsch.** 
-keep class com.jcraft.jzlib.ZStream 
-keep class com.jcraft.jsch.Compression 
-keep class org.ietf.jgss.* 

-libraryjars /libs/jsch-0.1.50.jar 

该项目的属性文件包含 “proguard.config = proguard的-project.txt” 的条目。

从重复的出口输出中删除: -

Warning: com.jcraft.jsch.jcraft.Compression: can't find referenced class com.jcraft.jzlib.ZStream 
Warning: com.jcraft.jsch.jgss.GSSContextKrb5: can't find referenced class org.ietf.jgss.Oid 
Warning: com.jcraft.jsch.jgss.GSSContextKrb5: can't find referenced class org.ietf.jgss.GSSManager 
Warning: com.jcraft.jsch.jgss.GSSContextKrb5: can't find referenced class org.ietf.jgss.GSSException 
Warning: com.jcraft.jsch.jgss.GSSContextKrb5: can't find referenced class org.ietf.jgss.GSSContext 
Warning: com.jcraft.jsch.jgss.GSSContextKrb5: can't find referenced class org.ietf.jgss.MessageProp 
Warning: there were 44 unresolved references to classes or interfaces. 
You may need to specify additional library jars (using '-libraryjars'). 
Error: Please correct the above warnings first. 

将非常感谢任何指针。

感谢 迈克

回答

7

后多一点调查,我发现下面的...

我忘了包括与相应的

-libraryjars /libs/jzlib-1.1.1.jar 
jzlib-1.1.1.jar项目

条目在proguard-properties.txt中。

而且忽略警告关于对“类org.ietf.jgss中”,我试着不包括引用类

-libraryjars /libs/jsch-0.1.50.jar(!com.jcraft.jsch.jgss/GSSContextKrb5.class) 

的建议的方法,但没有帮助。最后,我去了: -

-dontwarn org.ietf.jgss.** 
+0

谢谢。不知道你如何计算出所有这些,但它似乎工作。 –

相关问题