减少apk大小_移动开发_有图有真相-CSDN博客

国际新闻 浏览(753)

apk的大小直接影响下载apk应用程序的用户数量。由于手机内存和网络环境的限制,随着apk的增加,下载和使用同一应用程序的用户数量将会减少,因此减少apk的大小非常重要。本文从apk的编译过程、apk的组成以及减小apk大小的方法三个方面分析了如何减小apk

1的大小。

在构建过程中,安卓项目将被编译、打包和生成。apk文件,包含操作所需的所有信息。主要包括:

1,dex文件

2,AndroidManifest.xml文件

3,编译资源文件resources.arsc

4,未编译资源文件

Android编译和打包简单流程图

以上流程图简要总结了Android编译和打包过程。Android项目被编译和打包以生成apk文件。在apk文件被签名后,它们可以被安装在安卓设备上或者使用adb工具运行的模拟器上。

安卓的特定构建过程。apk文件最终是通过打包过程中许多工具生成的中间文件生成的。

从上图可以看出,安卓构建过程中包含的构建工具有:

AAPT(安卓资产打包工具):安卓中的AAPT资源打包工具主要用于处理安卓项目中的资源文件,如xml、可绘制等。

java编译器:java编译器,编译java文件生成。类文件。

dex: dex生成器,dex将该类转换成Dalvik字节码,并将第三方的源代码编译成. dex文件。

apk builder: apk生成器,编译和未编译的资源文件、dex文件和其他文件通过apk builder生成apk文件

jarsigner: signer。apk文件在签名后生成签名的. apk文件,签名的APK可以安装和运行。上面

apk的构建流程图

的流程图可以清楚地看到整个打包过程:

1。资源打包过程

首先,项目中的资源文件通过aapt资源打包工具生成java文件,并编译资源文件resources.arsc。每个资源的id存储在java文件中,相应的资源是通过java代码中的R文件中的id找到的。Resources.arsc包含与编译后的资源文件相关的信息:例如,xml文件(android:layout _ width)资源id的节点(LinearLayout,RelativeLayout)布局的属性。下图显示了更具体的资源打包过程:

2,类文件生成

在资源打包过程中生成的java文件包含资源的id,通过它可以在java代码中找到相关的资源。项目中的java类和其他java源代码,以及aidl接口,生成。通过java编译器初始化文件。

3,dex文件生成

上述项目的源代码中生成的类文件和第三方库生成。dex文件到dex。安卓在达尔维克虚拟机上运行。与Java不同,Java运行在jvm上,而Dalvik虚拟机运行在。dex文件而不是。类文件。

你可以使用安卓sdk中的索引转储工具来反编译索引文件。dexer工具可以将类文件转换为。dex文件。

dex Advantages

dexer打包工具将消除类文件中的冗余信息。所有类文件都将打包到同一个dex文件中。使用dex将大大减少apk的大小。下表显示了使用dex工具后文件的大小比较:

上表显示使用dex文件可以大大减小应用程序的大小。

2。apk结构

从上图可以看出,apk主要由8部分组成,如元信息、资产、资源、库、资源。ARSC,同学们。德克斯,机器人清单。XML等。这8个部分将在下面分别进行分析。

1。META-INF

apk实际上是一个包含各种结构信息的jar文件。META-INF文件夹包含清单信息和jar包信息。META-INF主要由以下三部分组成:

1,MANIFEST。MF:包含导入jar运行时的信息,包括运行时启动哪个主类。包的版本号,内部版本号。包创建者信息、安全性和许可证书信息等。

2。证书。SF:包含所有文件的列表信息和文件的SHA-1摘要。

3。证书。RSA:包含证书的签名内容。用于签署内容的安全文件和公钥证书。

2,RES

2,RES

Connection timed out after milliseconds

7、

8,开发者。安卓。com/guide/topics/resources/provided-resources # Accessing

9, ://www . com/questions//what-the-use-of-files-in-meta-INF-folder-of-a-apk-file/

10,3359 stackoverflow .www . com/questions//difference-with-RES-and-assets-file