美文网首页程序猿葵花宝典移动知识
Android 编译到运行APK过程总结

Android 编译到运行APK过程总结

作者: 会撒娇的犀犀利 | 来源:发表于2018-07-10 17:51 被阅读96次

APK编译过程

apk编译过程.png
  1. Android通过AAPT工具将.xml资源文件编译成R.java的二进制文件,除了assets、raw目录下的文件;
  2. 将java文件编译成.class文件;
  3. 通过dex工具将.class文件转换成.dex文件
  4. 优化dex文件 : Davlik模式下使用 dexopt工具将.dex文件优化得到.odex文件 ; Art模式下使用dexoat工具将.dex文件优化得到.oat文件;
  5. apkbuilder会将.dex文件和未被编译的文件编译成apk;
  6. apkSinger对apk签名;
  7. zipalign对签名后的apk进行优化

APK包内容

apk包内容.png

Android 安装的apk文件实际上是以.zip结尾的压缩文件,解压后的文件内容如上图所示

  • AndroidManifest.xml对应源代码中的AndroidManifest.xml, 但这里是编译过的,文件内容已经不同了;

  • assets对应源代码的assets目录, 是直接复制过来的;

  • classes.dex(classes2.dex、classes3.dex等等)是包含所有Java文件对应的字节码,其中classes.dex是程序主包;

  • lib目录对应源代码中的libs目录,包含so文件;

  • META-INF目录包含CERT.RSA、CERT.SF、MANIFEST.MF等, 保存了各个资源文件的SHA1值,用于校验资源文件是否被篡改,从而防止二次打包时资源文件被替换;

  • res目录对应源码的res目录, 包含各种图片、xml等;

  • resources.arsc包含了各个资源文件的映射, 可以理解为索引, 通过该文件能找到对应的资源文件信息。

APK运行过程

通过ClassLoader将.dex文件加载到虚拟机中

相关文章

  • Android 编译到运行APK过程总结

    APK编译过程 Android通过AAPT工具将.xml资源文件编译成R.java的二进制文件,除了assets、...

  • AndroidStudio build流程

    IDE的存在使得Android项目的编译变得简单,只需要点击运行,编译安装都由IDE完成。那么项目从代码到APK之...

  • 反编译Android APK及防止APK程序被反编译

    反编译Android APK及防止APK程序被反编译 怎么逆向工程对Android Apk 进行反编译 googl...

  • Android项目构建过程分析

    一、构建过程分析 我们知道,如果要在Android Studio后会编译整个项目并生成apk包,但是构建的过程中到...

  • ReactNative unable to load scrip

    问题描述 android studio 编译React-Native正式包后,编译过程正常,打包apk也正常,安装...

  • Android Apk包瘦身

    目录 1、Android 编译打包流程2、Apk包瘦身 1、Android 编译打包流程及APK构成 1.1、An...

  • Android:apk编译总结

    一.手机版本是啥? 首先应用装到手机,手机肯定是一个固定的android版本手机吧,例如现在最新的手机是Andro...

  • 错误: 编码GBK的不可映射字符

    最近用Android Studio编译Apk时经常提示这个。分享下解决过程:首先将代码全部copy到记事本。然后保...

  • apk编译打包流程

    转载自Android APK文件(一、编译打包过程)[https://juejin.cn/post/6844904...

  • Android反编译Apk过程

    ① 首先下载反编译所需的工具:把工具都放入一个文件夹内★ apktool (资源文件获取)下载地址:https:/...

网友评论

    本文标题:Android 编译到运行APK过程总结

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