【其他技术】apk的基本结构

综合技术   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-9-28

沉迷于学吉他的我 吉他不见了 所以出这个教程 希望小白用起mt的时候不要想我一样迷惘[哭泣]

1 其实apk就是一个压缩文件 好奇的同学可以改成zip打开看看是什么样的

2 assets目录存放需要打包到APK的静态文件 该目录与res目录不同之处在于 assets目录支持任意深度的子目录 我们的开发者可以根据自己的需求来任意部署文件夹的架构 而且res目录下的文件会在.R文件中生成与其对应的资源ID assets不会自动生成对应的id 访问的时候 需AssetManager类

3Lib目录:该目录用来存放应用程序所依赖的native库文件 native库一般是用C/C++进行编写的 这里的lib库可能包含4种不同类型 根据CPU型号的不同 我们大体可以分为ARM ARM-v7a MIPS X86 分别对应着ARM架构 ARM-V7架构 MIPS架构和X86架构 这些so库在apk包中构成如图一

4Res目录:res是resource的缩写,这个目录存放的东西是资源文件,存放这个文件夹下的所有文件都会和上文所说的,映射到Android工程中的.R文件中,生成对应的资源ID,访问的时候直接使用资源ID,即R.ID.FILENAME,res文件夹下可以包含多个文件夹;anim是存放动画文件的;drawable目录存放图形资源;layout目录存放布局文件;values目录存放一些特征值;colors.xml存放color的颜色值等等

5META-INF目录:保存应用程序的签名信息,签名信息可以验证APK文件的完整性。当AndroidSDK在打包APK文件时会计算APK包中的所有文件信息的完整性,并且把这些完整性保存到META-INF文件夹下,应用程序在安装的时候首先会更具META-INF文件夹教研APK的完整性。通过这种手段,我们就可以在一定程度上保证APK中的每一个文件不被篡改。以此来确保我们的APK应用程序不被恶意修改或者被病毒文件感染,这有利于确保Android应用的完整性和系统的安全性。META-INF目录中包含的文件有CERT.RSA,CERT.DSA,CERT.SF和MANIFEST.MF。其中CERT.RSA是开发者利用私钥对APK进行签名的签名文件,CERT.SF和MANIFEST.MF记录了文件中文件的SHA-1哈希值。

6AndroidManifest.xml:这是Android应用程序的配置文件,是一个用来描述Android应用“整体咨询”的设定文件,简单的说,这相对于Android应用向Android系统的“自我介绍”配置文件,Android系统可以根据Androidmanifest.xml文件来完整的了解这个APK应用程序的咨询。不难想到,每个Android应用程序都必须包含一个Androidmanifest.xml文件,并且它的名字是固定的,是禁止修改的。

7classes.dex:传统的Java程序,首先先把文件编译成class文件,字节码都保存在了class文件中,Java虚拟机可以通过解释且执行这些class文件。然而Dalvik虚拟机是在Java虚拟机进行了优化,执行的是Dalvik字节码,而这些Dalvik字节码就是由Java字节码转换而来的。一般来说,Android应用在打包的时候通过AndroidSDK中的dx工具将Java字节码转换为Dalvik字节码。Dx工具可以对多个class文件进行合并,重组和优化,通过这些操作,可以达到减小体积,缩短运行时间的目的。

8Resources.arsc:用来记录资源文件和资源ID之间的映射关系,用来根据资源ID寻找资源。Android的开发是分模块的,res目录专门用来存放资源文件,当在代码中需要调用资源文件时,只需要调用方法“findviewbyid()”就可以得到资源文件,每当在res文件夹下放一个文件,aapt就会自动生成对应的ID保存在.R文件,我们调用这个ID就可以,但是只有这个ID还不够,.R文件只是保证编译程序不报错,实际上在程序运行时,系统要根据ID去寻找对应的资源路径,而resources.arsc文件就是用来记录这些ID和资源文件位置对应关系的文件。

到这就结束啦!其实我的那篇html还在学校框架 也会继续出的 感谢支持小学生轩[哭泣]
还希望有大佬有零基础吉他教学资源的分享一下

沙发
元素轩 2020-9-28
简化示意图

板凳
元素轩 2020-9-28
我是图一[哭泣]

4楼
元素轩 2020-9-28
[哭泣][哭泣][哭泣][哭泣][哭泣]
5楼
AOM柏青 2020-9-28
好可怜[滑稽]
6楼
星出为夜 2020-10-7
涨知识了[玫瑰]
7楼
元素轩 2020-10-7
有用就行[怒]
给你点个赞咱[开心]
9楼
筱米米 2020-10-7
学了半年android,第一了解结构[哈哈]
10楼
昵称197908 2020-10-9
楼主是好人

评论

登录后才可发表内容
  • 主题

    20

  • 帖子

    80

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0723s Mem:2254Kb