Col-E/dex-translator
GitHub: Col-E/dex-translator
Col-E/dex-translator:DEX与JVM字节码转换库
Stars: 44 | Forks: 3
# Dex 翻译器
一个用于在 JVM 和 Dalvik 字节码之间进行转换的翻译库和命令行界面工具。
## 命令行工具使用方法
顶层:
```
Usage: dex-translator [-hV] [COMMAND]
See the sub-commands for available operations
-h, --help Show this help message and exit.
-V, --version Print version information and exit.
Commands:
d2j Convert one or more DEX files to a JAR file
j2d Convert one or more JAR files to an DEX file
d2j:
Usage: d2j [-fl] [-o=] ...
Convert one or more DEX files to a JAR file
... Path to one or more DEX files.
-f, --force Flag to enable force emitting output, even if some
method bodies are invalid. Invalid methods will be
replaced with no-op behavior.
-l, --lenient Flag to enable options that allow more leniency in
the conversion process. Some input validation will
be skipped.
-o, --out= Path to JAR file to write to.
jd2:
Usage: j2d [-fl] [-o=] ...
Convert one or more JAR files to an DEX file
... Path to one or more JAR files.
-f, --force Flag to enable force emitting output, even if some
method bodies are invalid. Invalid methods will be
replaced with no-op behavior.
-l, --lenient Flag to enable options that allow more leniency in
the conversion process. Some input validation will
be skipped.
-o, --out= Path to DEX file to write to.
```
## 库使用方法
Maven 依赖:
```
software.coley
dex-translator
${dexVersion}
```
Gradle 依赖:
```
implementation group: 'software.coley', name: 'dex-translator', version: dexVersion
implementation "software.coley:dex-translator:${dexVersion}"
```
对于大多数基本使用,您可以在类型包中使用 `Converter` 和 `Loader` 类型。使用方法如下:
```
Inputs inputs = new Inputs();
for (File inputFile : inputFiles)
inputs.addJarArchive(inputFile.toPath());
Options options = new Options()
.setReplaceInvalidMethodBodies(replaceInvalid)
.setLenient(lenient)
.setDexFileOutput(outputFile.toPath());
new Converter()
.setInputs(inputs)
.setOptions(options)
.run()
```
对于更深入的使用,您可能需要直接与 `ApplicationData` 类进行工作。
您可以在测试类中找到它的示例用法。
## 构建
目前,Dex Translator 假设 `R8` 工件已存在于本地 Maven 仓库中。
为了满足这一假设,请克隆我们的 [R8 分支](https://github.com/Col-E/r8) 并运行 `gradlew publishToMavenLocal`。
标签:Android, Dalvik, DEX文件, DSL, JAR文件, JS文件枚举, JVM, Maven依赖, 后台面板检测, 域名枚举, 字节码转换, 工具库, 编程语言, 编译器, 翻译库, 软件开发