我正在尝试使用Proguard来混淆我的Android应用程序,该应用程序利用库jsch-1.50.jar将文件上传到SFTP服务器.
当我从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
Run Code Online (Sandbox Code Playgroud)
项目属性文件包含"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.
Run Code Online (Sandbox Code Playgroud)
非常感谢任何指针.
谢谢迈克
经过一番调查,我发现了以下......
我忘了在项目中包含相应的jzlib-1.1.1.jar
-libraryjars /libs/jzlib-1.1.1.jar
Run Code Online (Sandbox Code Playgroud)
在proguard-properties.txt中输入.
另外要忽略关于"class org.ietf.jgss"引用的警告,我尝试了排除引用类的建议方法
-libraryjars /libs/jsch-0.1.50.jar(!com.jcraft.jsch.jgss/GSSContextKrb5.class)
Run Code Online (Sandbox Code Playgroud)
但这没有帮助.最后,我去了: -
-dontwarn org.ietf.jgss.**
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |