问题标签 [dx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
325 浏览

android - DX被D8取代后,为什么Android还保留DX?

为什么 Android 仍将 DX 保留在其更新的替代品 D8 上?

结果:

这是我使用的程序(文件Primes.java):

以下是我将其编译为.dex文件的方法:

结果:

然后我清理地址,注册名称和评论以便能够比较:

那时它们几乎相同,但不完全一样:

0 投票
0 回答
240 浏览

android - 在Android中动态加载.dex文件时出现“ClassNotFound”异常

我正在尝试学习在 Android 中动态加载类(.dex/.jar)。我从教程和 Stack Overflow 问题( tutorialthisthis )中收集了基本思想,但我未能实现动态加载类文件并不断给出ClassNotFound异常的目的。

我的步骤简要:

  1. 按照文章中的说明创建了一个 Java 文件。

  2. 将 java 源代码转换为 .class(结果 = DynamicClass.class)

  3. dx使用Android SDK 中的工具创建 jar 文件。(结果 = 带有 classes.dex 的 dynamic.jar)

    获得 .jar 文件后,我将其推送到 /sdcard/ (在模拟器和设备上都进行了测试)

    模拟器:Android 6.0 和设备:Android 11.0

    加载类的简要代码:

我不断收到ClassNotFound异常。

我错过了什么?为什么无法加载这个简单的类文件:(?

我的清单:

  1. 确保代码能够获取加载的文件 (<File>.exists())。代码能够获取文件。只是无法加载类。
  2. 确保dynamic.jar在其中包含一个classes.dex条目。(这是因为DexClassLoader想要一个.jar / .apk文件,其中包含classes.dex条目)
  3. 尝试在模拟器和设备上运行代码(两者都有不同的 Android 版本)。

异常说明:

异常:java.lang.ClassNotFoundException:在路径上找不到类“DynamicClass”:DexPathList[[zip file "/storage/emulated/0/dynamic.jar"],nativeLibraryDirectories=[/system/lib64, /vendor/lib64 ]]

包含包裹后的异常。

异常:java.lang.ClassNotFoundException:在路径上找不到类“mypack.DynamicClass”:DexPathList [[zip 文件“/storage/emulated/0/mypack.jar”],nativeLibraryDirectories=[/system/lib64,/vendor /lib64]]

0 投票
0 回答
37 浏览

java - 如何使用 d8 编译工具保存清单文件?

我用 Gradle 为 Android 平台构建了一个 jar。当我使用该dx命令时,它可以很好地构建一个带有清单的 jar,但dx不支持 Java 8 语法。所以我必须将编译工具更改为d8,它支持 Java 8 语法但它删除了MANIFEST.MF文件。那么如何使用d8编译工具来保存manifest呢?

构建dx在此处输入图像描述

构建d8在此处输入图像描述

Gradle 构建脚本代码:

0 投票
0 回答
33 浏览

android - d8:从命令行使用它时出现奇怪的异常

鉴于我将 d8.bat 添加到我的 PATH 中,我尝试使用现代工具d8(已替换dx)将 java 类的文件夹编译到 classes.dex 中。但是,当我按照文档中的示例进行操作时,

我收到了这个错误

当我指定某个类文件的确切路径时,它可以正常工作,但我想包含很多文件,而不仅仅是一个。

如何解决?