|
|
@@ -193,15 +193,18 @@ public class EncryptExecutor {
|
|
|
public String process() {
|
|
|
// step0. 解压jar到jarRootDir下
|
|
|
JarUtil.unJarWar(originJarOrWar, targetRootDir);
|
|
|
+
|
|
|
// step1. jar中的某些lib可能也需要加密,这里先(将那些需要加密的lib)进行解压,(解压到对应的临时目录,以便后面进行加密处理)
|
|
|
unLibJar();
|
|
|
+
|
|
|
// step2. 找到需要加密混淆的class文件
|
|
|
File targetRootDirFile = new File(targetRootDir);
|
|
|
List<File> allFiles = IOUtil.listSubFile(targetRootDirFile, 1);
|
|
|
List<File> allNeedEncryptedClassFileList = filterClasses(allFiles);
|
|
|
+
|
|
|
// step3.1. 根据原.class文件,生成加密后的.class文件,并存至Constant.ENCRYPTED_CLASSES_SAVE_DIR
|
|
|
List<String> allAlreadyEncryptedClassFileList = encryptClasses(allNeedEncryptedClassFileList, new File(targetRootDir,
|
|
|
- Constant.MANIFEST_FILE));
|
|
|
+ Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR));
|
|
|
// step3.2. 生成记录已加密class的全类名的清单文件
|
|
|
generateChecklistFile(allAlreadyEncryptedClassFileList);
|
|
|
|
|
|
@@ -335,8 +338,8 @@ public class EncryptExecutor {
|
|
|
}
|
|
|
// 形如: META-INF/winter/abc-1.0.0_jar/
|
|
|
String nonSuffixLibName = libJarName.substring(0, libJarName.length() - 4);
|
|
|
- String dirRelativePathForLib = Constant.MANIFEST_FILE + nonSuffixLibName + "_jar" + Constant.LINUX_FILE_SEPARATOR;
|
|
|
- String dirAbsolutePathForLib = this.targetRootDir + File.separator + Constant.MANIFEST_FILE + nonSuffixLibName + "_jar" + File.separator;
|
|
|
+ String dirRelativePathForLib = Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixLibName + "_jar" + Constant.LINUX_FILE_SEPARATOR;
|
|
|
+ String dirAbsolutePathForLib = this.targetRootDir + File.separator + Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixLibName + "_jar" + File.separator;
|
|
|
|
|
|
/*
|
|
|
* my-project依赖的lib包本身可以是被class-winter混淆后的,但是这个lib包依赖的lib包不能是被class-winter混淆后
|
|
|
@@ -366,7 +369,7 @@ public class EncryptExecutor {
|
|
|
String[] libClassesArr = libChecklist.split(",");
|
|
|
byte[] libClazzByte;
|
|
|
for (String nonSuffixClassLongName : libClassesArr) {
|
|
|
- libClazzByte = IOUtil.readFileFromWorkbenchRoot(lib, Constant.MANIFEST_FILE + nonSuffixClassLongName);
|
|
|
+ libClazzByte = IOUtil.readFileFromWorkbenchRoot(lib, Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixClassLongName);
|
|
|
IOUtil.toFile(libClazzByte, new File(dirAbsolutePathForLib, nonSuffixClassLongName), true);
|
|
|
}
|
|
|
}
|