2024年Android的apk组成结构,Android之内存泄漏调试学习与总结

本文强调了系统化学习的重要性,介绍了APK文件结构和Android应用生成过程,同时提倡技术社群的价值,提供面试准备资源,以帮助IT行业人员提升技能和应对面试挑战。
摘要由CSDN通过智能技术生成

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

APK 是 Android  PacKage 的缩写,即 Android 安装包。将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 APK 文件其实是 zip 格式,但后缀名被修改为 apk ,在 windows 上可以通过 WinRar 等程序直接解压查看。

APK解压后,一般的可看到的目录结构如下:

文件或目录

作用

META-INF/

也就是一个 manifest ,从 java jar 文件引入的描述包信息的目录

res/

资源文件目录

libs/

如果存在的话,存放的是 ndk 编出来的 so 库

AndroidManifest.xml

程序全局配置文件

classes.dex

  dalvik 字节码 

resources.ars

编译后的二进制资源文件

资源文件比较重要的如下, sdk 文档 ( 中文指南 ) 上有相关的详细介绍:

目录 Directory

资源类型 Resource Types

res/anim/

Define pre-determined animations.
Tween animations are saved in res/anim/ and accessed from the R.anim class.
Frame animations are saved in res/drawable/ and accessed from the R.drawable class.

定义的是预置的动画对象。一般是逐帧动画 (Frame animations) 或补间动画( Tween animations )。而实际使用上,都是一些淡入淡出、缩放和移动等的补间动画居多。

res/color

Define a color resources that changes based on the View state.
Saved in res/color/ and accessed from the R.color class

定义一些 android view 状态变化时,使用的颜色值。这通常是绑定到一个界面元素上的,比如一个 button 被按下,弹起或 disable 时的颜色。

res/drawable/

res/drawable-hdpi

res/drawable-land-hdpi

res/drawable/mdpi

res/drawable/ldpi

res/drawable/port

Define various graphics with bitmaps or XML.
Saved in res/drawable/ and accessed from the R.drawable class.

定义要被用到的位图资源文件。这些位图资源可以是 bitmap ,也可以是用 xml 描述的 bitmap 。

注意:文件后缀为 9.png 是一种特殊的位图,一般是通过 draw9patch 生成的,是一种可自动伸缩的位图资源。

Drawable 的其他目录形势, land 是横屏的, port 是竖屏的; hdpi 是高分辨率的, ldpi 是低分辨率的, hdpi 是高分辨率的。这里可以放置为特定情况下的界面优化资源。

res/layout/

Define the layout for your application UI.
Saved in res/layout/ and accessed from the R.layout class.

定义的 UI layout ,被 aapt parser 后,可由 android 直接 render 成 view 界面。

这里也有横竖屏和 dpi 之分。

res/values/

可以被编译成很多种类型的资源的 XML 文件。

注意 : 不像其他的 res/ 文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。 XML 元素类型控制这些资源应该放在 R 类的什么地方。

尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中):

      array.xml 定义数组

     colors.xml 定义 color drawable 颜色的字符串值 (color string values) 。使用 Resource.getDrawable() 和 Resources.getColor() 分别获得这些资源。

     dimens.xml 定义 尺寸值 (dimension value) 。使用 Resources.getDimension() 获得这些资源。

      strings.xml 定义 字符串 (string) 值。使用 Resources.getString() 或者 Resources.getText() 获取这些资源。 getText() 会保留在 UI 字符串上应用的丰富的文本样式。

      styles.xml 定义 样式 (style) 对象。

多国语言,由 values-xxx 的后缀组成。比如简体中文 :res/values-zh-rCN

res/xml/

任意的 XML 文件,在运行时可以通过调用 Resources.getXML() 读取。

res/raw/

直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用 Resources.openRawResource() ,参数是资源的 ID ,即 R.raw.somefilename 。

Android 应用程序的生成过程,输入就是 eclipse 或源码中的工程及其下面的源文件;输出就是处理后的 apk 文件。整个过程可以如下图所示:

题外话

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

欢迎评论区讨论。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值