html tool

显示标签为“apk”的博文。显示所有博文
显示标签为“apk”的博文。显示所有博文

2022年3月2日星期三

转:轻读一下 Android 应用开发中的 assets 目录

 来源:https://www.cnblogs.com/chorm590/p/11308107.html

在Android的应用开发中,难免会遇到外部文件的预置需求。例如图像、音视频、配置文件、字体等等。对于图像,我们很容易会想到将它们存放在 res/drawable 目录或者是 res/mipmap 目录下。但对于其它类型的文件,就得另寻它法了。

 

比较常见的可以保存任意类型文件的地方主要有两个:

1、res/raw 目录;

2、assets 目录。

 

drawable/mipmap、raw、assets 三者都可以用来存储一些外部资源文件,那它们之间各自有什么优缺点呢?

 

首先,在 drawable 或 mipmap 下只能保存图像文件或图像描述文件,但在这两个目录下保存的图像文件在编译时会建立一张“索引表”。这个索引信息会被统一保存在一个名称为 R.java 的文件中。在程序的任何地方都可以直接通过 R.drawable.xxx 的形式来使用图片资源。

 

res/raw 目录算是一个比较特殊的资源文件目录。它被设计用于保存一些二进制文件,即在这个目录下的所有文件都会被记录到“索引表”中,但是编译系统不会去动里面的文件。raw 目录下的文件放进去时是什么样的,编译成 APK 以后还是什么样。这个目录比较适合保存一些音视频等二进制文件。

 

res 目录下的资源文件夹,不管是 raw 还是 drawable 或 mipmap,都不能自由地设计子目录层级关系。不管你有多少文件,都只能放在同一级目录中。

 

assets 目录是一个非常自由的目录。它就像是Android应用中的“三不管”地带,不会为里面的文件建立索引、不会限制目录层级关系、不会处理里面的文件。如果你想更好地管理自己的外部资源文件,建议使用 assets 目录。

APK-Dex

 

来源:https://juejin.cn/post/6844903716319920141

为什么要了解 Dex 文件

了解了 Dex 文件以后,对日常开发中遇到一些问题能有更深的理解。如:APK 的瘦身、热修复、插件化、应用加固、Android 逆向工程、64 K 方法数限制。

什么是 Dex 文件

在明白什么是 Dex 文件之前,要先了解一下 JVM,Dalvik 和 ART。JVM 是 JAVA 虚拟机,用来运行 JAVA 字节码程序。Dalvik 是 Google 设计的用于 Android平台的运行时环境,适合移动环境下内存和处理器速度有限的系统。ART 即 Android Runtime,是 Google 为了替换 Dalvik 设计的新 Android 运行时环境,在Android 4.4推出。ART 比 Dalvik 的性能更好。Android 程序一般使用 Java 语言开发,但是 Dalvik 虚拟机并不支持直接执行 JAVA 字节码,所以会对编译生成的 .class 文件进行翻译、重构、解释、压缩等处理,这个处理过程是由 dx 进行处理,处理完成后生成的产物会以 .dex 结尾,称为 Dex 文件。Dex 文件格式是专为 Dalvik 设计的一种压缩格式。所以可以简单的理解为:Dex 文件是很多 .class 文件处理后的产物,最终可以在 Android 运行时环境执行。

Dex 文件是怎么生成的

java 代码转化为 dex 文件的流程如图所示,当然真的处理流程不会这么简单,这里只是一个形象的显示:

注:图片来源于网络

现在来通过一个简单的例子实现 java 代码到 dex 文件的转化。


作者:有赞技术
链接:https://juejin.cn/post/6844903716319920141
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。