APK打包原理

作者: 健身营养爱好者 | 来源:发表于2019-01-11 18:26 被阅读8次

    前言

    HI,欢迎来到裴智飞的《每周一博》。今天是一月第一周,也是2019年的第一周,今天我给大家介绍下APK的打包原理。

    APK其实就是个压缩文件,我们把后缀改成ZIP之后解压就可以看到里面的内容主要有如下部分:


    1.AndroidManifest.xml
    该文件是每个应用都必须包含的,它描述了应用的名字,版本,权限,引用的库文件等等信息。APK中的AndroidManifest.xml是二进制文件,直接打开是乱码,需要反编译。

    2.META-INF目录
    META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。打包时会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩,替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。

    3.classes.dex文件
    classes.dex是java源码编译后生成的java字节码文件。安卓的虚拟机解析的是dex文件而不是class。dex文件中各个类能够共享数据,在一定程度上降低了冗余,也使得文件结构更加经凑,节省体积。

    4.resources.arsc
    resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源。


    5.res目录
    res目录存放资源文件,包括图片,字符串等等,像layout,drawable中的xml文件也都是经过编译的,直接打开是乱码,需要使用apktools才能查看。

    6.lib目录
    lib目录下存放的是一些so文件,如果代码中没有so就没有该目录。

    7.assets目录
    assets目录下是一些配置文件,也可以是资源,这里的xml文件不会经过编译,如果代码中没有assets也不会有该目录。

    那么我们

    相关文章

      网友评论

        本文标题:APK打包原理

        本文链接:https://www.haomeiwen.com/subject/drtdrqtx.html