jadx.plugins.input.javaconvert.DxConverter Maven / Gradle / Ivy
The newest version!
package jadx.plugins.input.javaconvert;
import java.io.ByteArrayOutputStream;
import java.nio.file.Path;
import com.android.dx.command.dexer.DxContext;
import com.android.dx.command.dexer.Main;
public class DxConverter {
private static final String CHARSET_NAME = "UTF-8";
private static class DxArgs extends com.android.dx.command.dexer.Main.Arguments {
public DxArgs(DxContext context, String dexDir, String[] input) {
super(context);
outName = dexDir;
fileNames = input;
jarOutput = false;
multiDex = true;
optimize = true;
localInfo = true;
coreLibrary = true;
debug = true;
warnings = true;
minSdkVersion = 28;
}
}
public static void run(Path path, Path tempDirectory) {
int result;
String dxErrors;
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayOutputStream errOut = new ByteArrayOutputStream()) {
DxContext context = new DxContext(out, errOut);
DxArgs args = new DxArgs(
context,
tempDirectory.toAbsolutePath().toString(),
new String[] { path.toAbsolutePath().toString() });
result = new Main(context).runDx(args);
dxErrors = errOut.toString(CHARSET_NAME);
} catch (Exception e) {
throw new RuntimeException("dx exception: " + e.getMessage(), e);
}
if (result != 0) {
throw new RuntimeException("Java to dex conversion error, code: " + result + ", errors: " + dxErrors);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy