Leon406/AndResGuard

本地打包AndResGuard-cli-1.2.23.jar 命令行执行报错. java.lang.NoClassDefFoundError: org/apache/commons/io/input/CountingInputStream

Closed this issue · 4 comments

作者你好,我下载该项目代码在本地重新打jar包AndResGuard-cli-1.2.23.jar 只有133k, tool_ouput中自带的AndResGuard-cli-1.2.15 605K,少了几百K,且使用AndResGuard-cli-1.2.23 去命令行混淆,直接报错如下:
unziping apk to D:\soft\FireFox-download\other-codefile\init\TestResGuardTool\localGuardOuput\temp
decoding resources.arsc
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/input/CountingInputStream
at com.tencent.mm.androlib.ApkDecoder.decode(ApkDecoder.java:191)
at com.tencent.mm.resourceproguard.Main.decodeResource(Main.java:114)
at com.tencent.mm.resourceproguard.Main.resourceProguard(Main.java:98)
at com.tencent.mm.resourceproguard.Main.resourceProguard(Main.java:84)
at com.tencent.mm.resourceproguard.cli.CliMain.run(CliMain.java:243)
at com.tencent.mm.resourceproguard.cli.CliMain.main(CliMain.java:38)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.input.CountingInputStream
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more

使用自带的AndResGuard-cli-1.2.15.jar 则正常. (配置文件等均未修改)

打包步骤如下:
1、下载代码,导入Android Studio,直接执行AndResGuard-cli模块中的build.gradle中的task,即:
task buildJar(type: Copy, dependsOn: [build, jar]) {
from('build/libs') {
include '' + version + '.jar'
}
into('../tool_output')
}

(1)刚开始执行时,编译报错,将改build.gradle中的
from {
//configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) } //编译报错,改为下面这句.
configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) } //修改为这句
}

整个项目就修改了这一处,然后成功打包生成AndResGuard-cli-1.2.23.jar。

麻烦,大神帮我分析下,是我打包的方式不对吗?还是哪里出现问题了?谢谢!

少了common io库依赖

AndResGuard-cli 用旧版的吧

少了common io库依赖

AndResGuard-cli 用旧版的吧

意思是直接用自带的AndResGuard-cli-1.2.15.jar吗?还是AndResGuard-cli这个模块用旧版的?

用AndResGuard-cli-1.2.15.jar

好的,谢谢!