问题标签 [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.
android - dx.jar 未从 SDK 文件夹加载
我有一个旧项目,它是在 Eclipse Luna 中制作的。
现在,当我在此版本的 Eclipse 或 Eclipse Photon 中打开它时,会出现这样的错误“无法构建:未从 SDK 文件夹加载文件 dx.jar!”。
编译项目时会出现此错误。
我知道这个论坛中已经有一些关于它的问题/答案,但它们对我不起作用。
我试过的方法:
- 重置 Android SDK
- 重置日食
- 清洁项目
- Android ADT 错误,未从 SDK 文件夹加载 dx.jar
- https://www.buildbox.com/forum/index.php?threads/how-to-solve-it-the-file-dx-jar-was-not-loaded-from-the-sdk-folder.10509/
- http://davidcrowley.me/?p=663
- https://code.i-harness.com/en/q/aa933f
- 无法构建:文件 dx.jar 未从我的 Eclipse 中的 SDK 文件夹加载
- 未知错误:无法构建:未从 SDK 文件夹加载文件 dx.jar
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 的情况下提高构建速度?
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
?
java - r8.jar 位于 Android SDK 的什么位置?
我正在试用 Android 的D8 和 R8。
正如文档所说,运行 D8 的命令如下:
对于 R8:
我找到了d8.jar
里面%ANDROID_HOME%\build-tools\28.0.3\lib
,但我找不到r8.jar
。
r8.jar
Android SDK 位于何处?
jvm - 如何将基于堆栈的指令转换为基于寄存器的指令
这是我在 python 中使用 dis 模块测试过的 -
这些是基于堆栈的虚拟机的指令。如果我可以访问无限数量的寄存器,有什么方法可以将上述基于堆栈的指令转换为基于寄存器的指令。
我只知道一种工具可以做到这一点,我们知道 JVM 是基于堆栈的,但 Dalvik VM 是基于寄存器的。当我们用 Java 编写代码时,类文件包含基于堆栈的指令,dx 工具将基于堆栈的指令转换为基于寄存器的指令,以便它可以在 Dalvik VM 中运行。所以很可能在某个地方我错过了一个算法。
也可以有一个边缘可以使堆栈动态增长和收缩(这将在运行时决定),在这种情况下,不可能将基于堆栈的指令转换为基于寄存器的指令。然而,一个工具可以做到这一点。
有人可以指出我正确的方向。或者知道任何可以对此有所帮助的算法。
android - dx.jar “忽略匿名内部类的 InnerClasses 属性”
我正在尝试使用dx.Jar
andorid的工具将其编译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 中是否有任何类似的选项
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 机器上完成呢?
android - 在哪里可以找到 1.16 版 android `dx` 工具的源代码?
谷歌搜索“dx 源代码”给出了这个,但它是 1.7 版。
通过上路,我可以找到整个平台的更高版本(似乎),但我不清楚哪个包含 dx 的哪个版本。我可以反复试验才能找到它,但必须有更好的方法!
我在jar-download.com上找到了 1.16 版,但我不知道它是否合法(理论上我可以手动检查所有内容......)。它似乎与谷歌无关。编辑这原来只是类文件,没有java源。
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 文件正常工作?
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
.
先感谢您