问题标签 [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 投票
0 回答
1010 浏览

android - dx.jar 未从 SDK 文件夹加载

我有一个旧项目,它是在 Eclipse Luna 中制作的。

现在,当我在此版本的 Eclipse 或 Eclipse Photon 中打开它时,会出现这样的错误“无法构建:未从 SDK 文件夹加载文件 dx.jar!”。

编译项目时会出现此错误。

我知道这个论坛中已经有一些关于它的问题/答案,但它们对我不起作用。

我试过的方法:

  1. 重置 Android SDK
  2. 重置日食
  3. 清洁项目
  4. Android ADT 错误,未从 SDK 文件夹加载 dx.jar
  5. https://www.buildbox.com/forum/index.php?threads/how-to-solve-it-the-file-dx-jar-was-not-loaded-from-the-sdk-folder.10509/
  6. http://davidcrowley.me/?p=663
  7. https://code.i-harness.com/en/q/aa933f
  8. 无法构建:文件 dx.jar 未从我的 Eclipse 中的 SDK 文件夹加载
  9. 未知错误:无法构建:未从 SDK 文件夹加载文件 dx.jar
0 投票
0 回答
680 浏览

android - D8 编译器比 Dx 编译器慢得多

我已将 Android Gradle 插件更新到 3.3.2,但遇到的问题是构建时间与 3.0.1 相比要慢得多。

DX 清理构建需要 1 分钟 40 秒 - 2 分钟 20 秒,重建大约需要 1 分钟,而 D8 清理构建需要 9 分钟,重建大约需要 7 分钟

经过一番调查,我发现 D8 编译器从 3.1.+ 开始默认打开并且可以关闭,但从 3.3.+ 开始就不可能了。

这是 gradle.properties

--scan 显示 transformClassesWithDexBuilder 需要 5-7 分钟才能完成,有没有办法在不关闭 D8 的情况下提高构建速度?

0 投票
1 回答
703 浏览

delphi - 如何强制 Delphi 使用 D8.bat 而不是 dx.bat 将 Java 1.8 字节码编译成 DEX 字节码

今天我遇到了一个问题。我的项目需要使用一些使用 Java 1.8 功能的库 (*.jar)。我看到越来越多的库现在使用 Java 1.8 功能(如 webRTC、exoplayer 等)。这样,我们必须进行脱糖

脱糖允许您通过在构建过程中用旧的替换新的字节码和语言 API 来在旧设备上使用这些功能

使用d8.bat(替换dx.bat),默认情况下会打开脱糖。因此,您现在可以在针对旧设备的同时使用大多数最新的语言更改。

当我们编译一个项目时,Delphi 在后台这样做:

dx.bat --dex --output="C:\Dev\output\libwebrtc-dexed.jar" "C:\Dev\lib\libwebrtc.jar"

对于包含 Java 1.8 功能的库,这将失败。

所以 Delphi 必须这样做:

d8.bat --lib C:\SDKs\android-sdk-windows\platforms\android-28\android.jar --output="C:\Dev\output\libwebrtc-dexed.jar" "C:\Dev\ lib\libwebrtc.jar"

知道如何告诉 Delphi 使用d8.bat而不是dx.bat

0 投票
1 回答
355 浏览

java - r8.jar 位于 Android SDK 的什么位置?

我正在试用 Android 的D8 和 R8

正如文档所说,运行 D8 的命令如下:

对于 R8:

我找到了d8.jar里面%ANDROID_HOME%\build-tools\28.0.3\lib,但我找不到r8.jar

r8.jarAndroid SDK 位于何处?

0 投票
0 回答
587 浏览

jvm - 如何将基于堆栈的指令转换为基于寄存器的指令

这是我在 python 中使用 dis 模块测试过的 -

这些是基于堆栈的虚拟机的指令。如果我可以访问无限数量的寄存器,有什么方法可以将上述基于堆栈的指令转换为基于寄存器的指令。

我只知道一种工具可以做到这一点,我们知道 JVM 是基于堆栈的,但 Dalvik VM 是基于寄存器的。当我们用 Java 编写代码时,类文件包含基于堆栈的指令,dx 工具将基于堆栈的指令转换为基于寄存器的指令,以便它可以在 Dalvik VM 中运行。所以很可能在某个地方我错过了一个算法。

也可以有一个边缘可以使堆栈动态增长和收缩(这将在运行时决定),在这种情况下,不可能将基于堆栈的指令转换为基于寄存器的指令。然而,一个工具可以做到这一点。

有人可以指出我正确的方向。或者知道任何可以对此有所帮助的算法。

0 投票
0 回答
65 浏览

android - dx.jar “忽略匿名内部类的 InnerClasses 属性”

我正在尝试使用dx.Jarandorid的工具将其编译wechat-SDKandroid-with-mta-5.1.6.Jar成dex文件并放入我的项目中。

但是我遇到了以下警告:

我尝试了多个版本的 dx.jar 工具(1.16,1.7),还使用了-- optimize, no-strict,keep-classes命令

或者

请注意,我没有使用android studio工具进行打包,我只是直接使用dx.jar工具,所以我无法-keepattributes EnclosingMethod在proguard文件中添加指令来整理它,我在问什么dx.jar 中是否有任何类似的选项

0 投票
0 回答
313 浏览

android - 在 Termux 的设备上使用 appcompat 库重建 android.jar

该项目https://github.com/BuildAPKs/buildAPKs在 Android 的 Termux 中的设备上构建 APK。在没有工件的情况下编译时,常见的错误与 appcompat 有关,即Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.

使用启用库构建时,APK 文件大小要大得多,即在智能手机上的BuildAPK 中没有启用库com.google.android.divideandconquer.apk的情况下构建到35.4K 。在启用库的情况下构建时大约为500K 。在设备上重建 aapt、dx 和/或 ecj 包以在 jar 文件中包含 appcompat 库可能会解决此文件输出大小问题。

如何在智能手机上的 Termux 中构建包 aapt、dx 和/或 ecj 以在 jar 文件中包含 appcompat?如果在手持设备上无法在 Termux 和 Termux PRoot 中构建这些包,那么如何在传统的 Linux 机器上完成呢?

0 投票
0 回答
163 浏览

android - 在哪里可以找到 1.16 版 android `dx` 工具的源代码?

谷歌搜索“dx 源代码”给出了这个,但它是 1.7 版。

通过上路,我可以找到整个平台的更高版本(似乎),但我不清楚哪个包含 dx 的哪个版本。我可以反复试验才能找到它,但必须有更好的方法!

我在jar-download.com上找到了 1.16 版,但我不知道它是否合法(理论上我可以手动检查所有内容......)。它似乎与谷歌无关。编辑这原来只是类文件,没有java源。

0 投票
1 回答
765 浏览

android - 为 Android 运行 dx 或 d8 工具时出错

我正在尝试从命令行手动构建 Android 应用程序。
但是,每当我运行位于 Android SDK build-tools 目录中的 dx.bat 命令时,我总是会收到错误消息。无论我给出哪个选项,我总是得到同样的错误。运行dx --help时,我收到此错误:
-Djava.ext.dirs=E:\.android\SDK\build-tools\29.0.2\lib is not supported. Use -classpath instead. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

当我有 Android Studio 时,我没有遇到任何此类问题。我在做什么错误以及如何使 dx.bat 文件正常工作?

0 投票
1 回答
371 浏览

java - 如何从命令行合并两个dex文件

从最近几天开始,我开始深入了解android studio是如何在幕后工作的。

我探索了许多工具,例如 aapt、dx、dalvikvm 和许多其他工具。

现在我有一个非常简单的问题。我有一个 jar 文件(abc.jar例如称为),2.7 MB我的应用程序中还有一个非常小的 java 代码。

首先,我将源代码编译成.class文件。然后我将我的.class文件索引abc.jar.dex文件中。大约需要40到50秒。但我能够成功运行该应用程序。

我用来 dex 源代码和 abc.jar 的命令

dx --dex --output=classes.dex abc.jar *class_files*

现在的问题是,每当我修改我的代码时,我都必须重新编写所有需要数年的东西(包括abc.jar)。我现在想要的是无论如何我只需要 dexabc.jar一次,然后每当我对我的代码进行更改时,我都会采用 abc.jar 的dexed版本并将其添加到我的源代码中。

就像安卓工作室一样。如果您添加一些外部库,起初dex这些需要一些时间,但之后每当您修改代码时,它不必从头开始redex所有pre-dexed,而是只需将库添加到apk.

先感谢您