java打包apk_APK打包流程
APK结构
apk是⼀个压缩包,⾥⾯有lib,META-INF,classes.dex,res,resources.arsc⽂件夹和⽂件。下⾯看看它们各⾃的作⽤。
初略流程
⾕歌官⽅给出的打包流程图。
先是把代码编译成Dex,然后是和资源⽂件整合成⼀个APK,再者加签名,最后出来之前还要⽤zipalign⼯具优化⼀下。细化流程
上⾯这个图主要是有7个打包流程。
1.打包资源⽂件,⽣成R.java⽂件
aapt来打包res资源⽂件,⽣成R.java、resources.arsc和res⽂件。res⽬录
R.java⽂件
R.java是我们在编写代码的时候会⽤到的,⾥⾯有静态内部类,资源等。
制作android软件流程resources.arsc⽂件
resources.arsc这个⽂件记录了所有的应⽤程序资源⽬录的信息,包括每⼀个资源名称、类型、值、ID以及所配置的维度信息。是⼀个资源索引表,在给定资源ID和设备配置信息的情况下能快速到资源。
2.处理aidl⽂件,⽣成相应的Java⽂件
aidl(Android Interface Definition Language,Android接⼝描述语⾔),位于android-sdk/platform-tools⽬录下。aidl⼯具解析接⼝定义⽂件然后⽣成相应的Java代码接⼝供程序调⽤。如果项⽬没⽤到aidl则跳过这⼀步。
3.编译项⽬源代码,⽣成class⽂件
Java Compiler阶段。项⽬中所有的Java代码,包括R.java和.aidl⽂件,都会变Java编译器(javac)编译成.class⽂件,⽣成的class⽂件位于⼯程中的bin/classes⽬录下。
4.转换所有的class⽂件,⽣成classes.dex⽂件
dex阶段。通过dx⼯具,将.class⽂件和第三⽅库中的.class⽂件处理⽣成classes.dex⽂件。该⼯具位
于android-sdk/platform-tools ⽬录下。dx⼯具的主要⼯作是将Java字节码转成成Dalvik字节码、压缩常量池、消除冗余信息等。
5.打包⽣成APK⽂件
apkbuilder阶段。通过apkbuilder⼯具,将aapt⽣成的resources.arsc和res⽂件、assets⽂件和classes.dex⼀起打包⽣成apk。打包的⼯具apkbuilder位于 android-sdk/tools⽬录下。
6.对APK⽂件进⾏签名
Jarsigner阶段。通过Jarsigner⼯具,对上⾯的apk进⾏debug或release签名。
7. 对签名后的APK⽂件进⾏对齐处理
通过zipalign⼯具,将签名后的apk进⾏对齐处理。⼯具位于android-sdk/tools⽬录下。对齐的主要过程是将APK包中所有的资源⽂件距离⽂件起始偏移为4字节整数倍,这样通过内存映射访问apk⽂件时的速度会更快。对齐的作⽤就是减少运⾏时内存的使⽤。
总结⼀下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论