问题标签 [android-d8]

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 回答
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 中。但是,当我按照文档中的示例进行操作时,

我收到了这个错误

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

如何解决?

0 投票
1 回答
181 浏览

android - 使用命令行工具构建 Android

我试图了解如何.apk从源代码构建文件。我知道使用 Android Studio 或使用命令gradlew可以轻松完成构建。Android Sdk 提供了多种用于构建 .apk 的工具,我知道它们中的大多数是做什么的:

d8: java 字节码到 dalvik 字节码

aapt2: 编译资源并链接它们。该工具创建一个.apk编译资源文件。(它还创建R.java引用代码中的资源。)

apksigner: 接受.apk并签名。否则,它无法安装在 Android 设备上。

zipalign: 对齐未压缩的数据.apk

最后两个工具用于apk已包含所有文件的 . 我不明白的是编译代码和编译资源是如何结合的?之前aapt2是打包完成的东西aapt,但它甚至没有在Androids 文档中列出。但是,aapt仍然在 Android Sdk build-tools 中。新aapt2的没有包装选项。

那么,问题是使用哪些命令行工具以及以何种顺序.apk从源代码创建完整的?谢谢!

编辑:我正在寻找的内容与类似,其中 a.apk是使用命令行逐步创建的。只有答案使用 old aapt,我认为不再使用。

编辑 2: 感谢Allen Shaw给了我缺失的信息。我现在可以使用aapt2. 我的问题的答案只是压缩aapt2输出和classes.dex.

0 投票
0 回答
26 浏览

android - 什么场景下Field会在dex中作为注解成员类型出现?

Java 似乎只支持原语、String、Enum、Array 和 Annotation 作为注释成员类型,如本讨论所示:
哪些类型可用于 java 注释成员

然而在 android art runtime 中,当处理 anntations 时,有一个类型Field支持。Art 将读取字段索引并创建相应的对象。代码如下:

由于java不支持Field作为注解成员类型,那么在什么情况下会Field作为注解成员类型出现在dex中呢?以及产生它的方法是什么?

提前致谢!

0 投票
1 回答
16 浏览

java - jar、so、class文件打包成APK

问题(形如“V”):

我们有一个 Java 函数 a() - 在 a.java 中(V 的左上角)

a() 调用另一个通过 JNI 实现的本地函数 b() - b.cpp(V 的底部)

b() 通过 JNI 创建 java 类 C 的实例 - 在 c.java 中定义(V 的右上角)

a.java 中没有任何内容直接引用 c.java。


a.java 以 a.class 结尾(.apk 项目)

b.cpp 以 libB.so 结尾(.aar 项目)

c.java 以 classes.jar 结束(.aar 项目)


问题:

这是如何使用 Android 的“d8”工具运行并定位在 .apk 文件中的?


解决方案要求:

命令行(不是 Android Studio)