gpt4 book ai didi

android - Android Studio 是否压缩 classes.dex 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:12 33 4
gpt4 key购买 nike

似乎输出文件夹中 apk 文件的 classes.dex 与安装的应用程序不同。

我使用 classes.dex 文件来解决一些安全问题,所以通常我会解压缩最终的 apk 文件并从 classes.dex 文件中获取信息。但是当我在运行时读取 classes.dex 文件时,文件大小是如此不同。 (8MB 对比 46KB)

应用程序本身运行良好。有人说 Proguard 使 classes.dex 文件更轻,但我关闭了 Proguard。 (在build.gradle中useProguard false, minifyEnabled false)

有什么我可以尝试的吗?提前谢谢你。

一句话总结:Android Studio构建的app/build/outputs/apk/app.apk文件的classes.dex和我生成的classes.dex不一样可以从Android设备的实际应用安装位置找到。

最佳答案

实际上,android studio 会进行转换,并且您使用的术语“压缩”在构建时默认发生。

Android 应用程序的编译过程与其他 Java 应用程序有很大不同。但它以相同的方式开始:使用 javac 命令将您的 Java 源代码文件编译成 .class 文件:conversion_to_class_file

.class 文件包含标准的 Oracle JVM Java 字节码。但是 Android 设备不使用这种字节码格式。相反,Android 有自己独特的字节码格式,称为 Dalvik。与 Oracle JVM 字节码一样,Dalvik 字节码是理论处理器的机器码指令。

编译过程需要将.class 文件和任何.jar 库转换为包含Dalvik 字节码的单个classes.dex 文件。这是通过 dx 命令完成的:这就是您的 classes.dex 文件的生成方式。

conversion_to_dex_file

classes.dex 文件和来自您的应用程序的资源(例如图像和布局)然后被压缩到一个类似 zip 的文件中,称为 Android 包或 .apk 文件。这是通过 Android Assets 打包工具或 aapt 完成的:

conversion_to_apk_file

你的 proguard 规则,在构建过程中,有助于

  • 收缩 – 检测并删除未使用的类、字段、方法和属性。
  • 优化——分析和优化方法的字节码。
  • 混淆 – 使用无意义的简短名称重命名剩余的类、字段和方法。

希望对你有所帮助。
如果您想了解更多有关 Android 应用程序如何构建和运行的信息, Read this.
来源: https://github.com/dogriffiths/HeadFirstAndroid/wiki/How-Android-Apps-are-Built-and-Run

.

关于android - Android Studio 是否压缩 classes.dex 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44824994/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com