fix: update class set data to Android API 30
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package jadx.cli.clst;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
@@ -17,7 +16,9 @@ import jadx.api.plugins.JadxPluginManager;
|
||||
import jadx.api.plugins.input.JadxInputPlugin;
|
||||
import jadx.api.plugins.input.data.ILoadResult;
|
||||
import jadx.core.clsp.ClsSet;
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.core.dex.nodes.RootNode;
|
||||
import jadx.core.dex.visitors.SignatureProcessor;
|
||||
|
||||
/**
|
||||
* Utility class for convert dex or jar to jadx classes set (.jcst)
|
||||
@@ -29,7 +30,7 @@ public class ConvertToClsSet {
|
||||
LOG.info("<output .jcst or .jar file> <several input dex or jar files> ");
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length < 2) {
|
||||
usage();
|
||||
System.exit(1);
|
||||
@@ -48,6 +49,13 @@ public class ConvertToClsSet {
|
||||
RootNode root = new RootNode(jadxArgs);
|
||||
root.loadClasses(loadedInputs);
|
||||
|
||||
// from pre-decompilation stage run only SignatureProcessor
|
||||
SignatureProcessor signatureProcessor = new SignatureProcessor();
|
||||
signatureProcessor.init(root);
|
||||
for (ClassNode classNode : root.getClasses()) {
|
||||
signatureProcessor.visit(classNode);
|
||||
}
|
||||
|
||||
ClsSet set = new ClsSet(root);
|
||||
set.loadFrom(root);
|
||||
set.save(output);
|
||||
|
||||
@@ -3,8 +3,6 @@ plugins {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
runtimeOnly files('clsp-data/android-29-clst.jar')
|
||||
|
||||
api(project(':jadx-plugins:jadx-plugins-api'))
|
||||
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
|
||||
Binary file not shown.
@@ -49,7 +49,7 @@ public class ClsSet {
|
||||
|
||||
private static final String CLST_EXTENSION = ".jcst";
|
||||
private static final String CLST_FILENAME = "core" + CLST_EXTENSION;
|
||||
private static final String CLST_PKG_PATH = ClsSet.class.getPackage().getName().replace('.', '/');
|
||||
private static final String CLST_PATH = "/clst/" + CLST_FILENAME;
|
||||
|
||||
private static final String JADX_CLS_SET_HEADER = "jadx-cst";
|
||||
private static final int VERSION = 3;
|
||||
@@ -78,9 +78,9 @@ public class ClsSet {
|
||||
|
||||
public void loadFromClstFile() throws IOException, DecodeException {
|
||||
long startTime = System.currentTimeMillis();
|
||||
try (InputStream input = getClass().getResourceAsStream(CLST_FILENAME)) {
|
||||
try (InputStream input = ClsSet.class.getResourceAsStream(CLST_PATH)) {
|
||||
if (input == null) {
|
||||
throw new JadxRuntimeException("Can't load classpath file: " + CLST_FILENAME);
|
||||
throw new JadxRuntimeException("Can't load classpath file: " + CLST_PATH);
|
||||
}
|
||||
load(input);
|
||||
}
|
||||
@@ -197,7 +197,7 @@ public class ClsSet {
|
||||
|
||||
try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(path));
|
||||
ZipInputStream in = new ZipInputStream(Files.newInputStream(temp))) {
|
||||
String clst = CLST_PKG_PATH + '/' + CLST_FILENAME;
|
||||
String clst = CLST_PATH;
|
||||
boolean clstReplaced = false;
|
||||
ZipEntry entry = in.getNextEntry();
|
||||
while (entry != null) {
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user