From f053349753db4c7149352f5dbea3105440ef1891 Mon Sep 17 00:00:00 2001 From: Mosect Date: Mon, 23 May 2022 22:08:17 +0800 Subject: [PATCH] 1.1.2-b1 fix debug mode multiclasses error --- plugin/build.gradle | 2 +- .../mosect/smali/plugin/SmaliPlugin.groovy | 24 ++++++++++++++++++- .../mosect/smali/plugin/dex/DexHandler.java | 1 - .../mosect/smali/plugin/dex/SmaliMerger.java | 7 +----- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/plugin/build.gradle b/plugin/build.gradle index 7c8eb0a..01c3146 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -44,7 +44,7 @@ afterEvaluate { from components.java groupId = 'com.mosect' artifactId = 'smali-plugin' - version = '1.1.1-b12' + version = '1.1.2-b1' } } } diff --git a/plugin/src/main/groovy/com/mosect/smali/plugin/SmaliPlugin.groovy b/plugin/src/main/groovy/com/mosect/smali/plugin/SmaliPlugin.groovy index 5834017..35ecd6f 100644 --- a/plugin/src/main/groovy/com/mosect/smali/plugin/SmaliPlugin.groovy +++ b/plugin/src/main/groovy/com/mosect/smali/plugin/SmaliPlugin.groovy @@ -58,18 +58,40 @@ class SmaliPlugin implements Plugin { task.doLast { // find dex files List dexFiles = [] + def dexFileInfoList = [] outputs.files.each { project.fileTree(it).each { if (it.name ==~ '^classes([0-9]{1,2})?\\.dex$') { - dexFiles.add(it) + def str = it.name.substring(7, it.name.length() - 4) + int index = 1 + if (str.length() > 0) { + index = Integer.parseInt(str) + } + dexFileInfoList.add([ + index: index, + file : it + ]) } } } + dexFileInfoList.sort(new Comparator() { + @Override + int compare(Object o1, Object o2) { + return o1.index - o2.index + } + }) + + dexFileInfoList.each { + dexFiles.add(it.file) + } + if (dexFiles.isEmpty()) { System.err.println("DexHandler:skip dex file not found") return } + project.delete(tempDir) + tempDir.mkdirs() // exists dex file DexHandler dexHandler = new DexHandler() dexHandler.tempDir = tempDir diff --git a/plugin/src/main/java/com/mosect/smali/plugin/dex/DexHandler.java b/plugin/src/main/java/com/mosect/smali/plugin/dex/DexHandler.java index 944f1b5..79e1d9d 100644 --- a/plugin/src/main/java/com/mosect/smali/plugin/dex/DexHandler.java +++ b/plugin/src/main/java/com/mosect/smali/plugin/dex/DexHandler.java @@ -85,7 +85,6 @@ public File run() throws IOException, SmaliException { List dexMakerList = new ArrayList<>(); for (Map.Entry> entry : originalSourceDirMap.entrySet()) { int dexIndex = entry.getKey(); - String name = dexIndex == 1 ? "classes" : "classes" + dexIndex; DexMaker dexMaker = new DexMaker(dexIndex); ClassesSource classesSource = new ClassesSource(); for (File dir : entry.getValue()) { diff --git a/plugin/src/main/java/com/mosect/smali/plugin/dex/SmaliMerger.java b/plugin/src/main/java/com/mosect/smali/plugin/dex/SmaliMerger.java index f6b5930..5c1a317 100644 --- a/plugin/src/main/java/com/mosect/smali/plugin/dex/SmaliMerger.java +++ b/plugin/src/main/java/com/mosect/smali/plugin/dex/SmaliMerger.java @@ -293,12 +293,7 @@ private Map loadSmaliFiles(ClassesSource source) throws IOExceptio for (ClassesSource.SmaliFileInfo fileInfo : list) { File old = map.put(fileInfo.getClassName(), fileInfo.getFile()); if (null != old) { - throw new IOException(String.format( - "MultipleClass[%s]: %s, %s", - fileInfo.getClassName(), - fileInfo.getFile().getAbsolutePath(), - old.getAbsolutePath() - )); + System.err.printf("ReplaceClasses: %s >>> %s%n", fileInfo.getFile(), old); } } return map;