2024年HarmonyOS鸿蒙最全Android APK的打包流程_android apk打包流程(1), ...

打印 上一主题 下一主题

主题 544|帖子 544|积分 1632

深知大多数步伐员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技能故步自封!



既有适合小白学习的零底子资料,也有适合3年以上经验的小同伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开辟知识点,真正体系化!
由于文件比较多,这里只是将部分目次截图出来,全套包含大厂面经、学习笔记、源码课本、实战项目、大纲蹊径、解说视频,而且后续会持续更新
需要这份系统化的资料的朋侪,可以戳这里获取
  1. aapt package
  2. -f
  3. -J./gen
  4. -M./AndroidManifest.xml
  5. -S ./res/
  6. -I /Users/RadAsm/Library/AndroidSDK/sdk/platforms/android-23/android.jar
复制代码
3.编译源代码文件

  1. Javac -source 1.6
  2. -target 1.6
  3. -cp /Users/RadAsm/Library/AndroidSDK/sdk/platforms/android-23/android.jar
  4. ./src/com/packtest/test1/MainActivity.java./src/com/packtest/test1/R.java
  5. -d./gen/classes
复制代码
4.编译DEX文件

  1. dx --dex
  2. --verbose
  3. --output ./gen/dex/packtest1.dex
  4. ./gen/classes/
复制代码
5.天生APK文件

  1. aapt package
  2. -f
  3. -J./gen
  4. -M./AndroidManifest.xml
  5. -S ./res/
  6. -I /Users/RadAsm/Library/AndroidSDK/sdk/platforms/android-23/android.jar
  7. -F ./output/res.apk
复制代码
6.APK文件对齐

  1. zipalign -v-p 4 packagetest_unsigned.apk packagetest_aligned_unsigned.apk
复制代码
7.APK签名

  1. apksigner sign --ks my-release-key.jks my-app.apk
复制代码
以上便是APK打包的整个流程,我们再来总结一下:
1.除了assetsi和res/raw资源被原装不动地打包进APK之外,别的的资源都会被编译大概处置惩罚;
2.除了assets资源之外,别的的资源都会被赋予一个资源ID;
3.打包工具负责编译和打包资源,编译完成之后,会天生一个resources.arsc文件和一个R.java,前者保存的是一个资源索引表,后者界说了各个资源D常量。
4.应用步伐配置文件AndroidManifest…xml同样会被编译成二进制的XML文件,然后再打包到APK里面去。
5.应用步伐在运行时通过AssetManager来访问资源,或通过资源D来访问,或通过文件名来访问.
理解了团体的流程,我们再来看看详细的细节。
资源的编译和打包

在分析资源的编译和打包之前,我们先来了解一下Android步伐包里有哪些资源。
我们知首Android应用步伐的计划也是代码与资源相分离的,Android的资源文件可以分为两大类:
assets:assets资源放在主工程assets目次下,它里面保存一些原始的文件,可以以任何方式来进行组织,这些文件终极会原封不动的地被打包进APK文件中。
获取asset资源也十分简单,如下所示:
  1. InputStream is getAssets.open("fileName");
复制代码
res:res资源放在主工程的res目次下,这类资源一般都会在编译阶段天生一个资源ID供我们使用。
res资源包含了我们开辟中使用的各种资源,详细说来:
animator
anim
color
drawable
layout
menu
raw
values
Xml
上述9种类型的资源文件,除了raw类型资源,以及Bitmap文件的drawable类型资源之外,别的的资源文件均为文本格式的XML文件,它们在打包的过程中,会被编译成二进制格式的XML文件。这些二进制格式的XML文件分别有一个字符串资源池,用来保存文件中引用到的每一个字符串,包罗XL元素标签、属性名称、属性值,以及别的的一切文本值所使用到的字符串。这样原来在文本格式的XML文件中的每一个放置字符串的地方在二进制格式的XML文件中都被替换成一个索引到字符串资源池的整数值,这写整数值统一保存在R.javai类中,R.java会和其他源文件一起编译到APK中去。
前面我们提到xml编写的Android资源文件都会编译成二进制格式的xm文件,资源的打包都是由AAPT工具来完成的,资源打包主要有以下流程:
1.剖析AndroidManifest.xml,得到应用步伐的包名称,创建资源表。
2.添加被引用资源包,被添加的资源会以一种资源ID的方式界说在R.javat中。
3.资源打包工具创建一个AaptAssetsi对象,网络当前需要编译的资源文件,网络到的资源保存在AaptAssets对象对象中。
4.将上一步AaptAssets对象保存的资源,添加到资源表ResourceTable中去,用于终极天生资源描述文件resources.arsC。
5.编译values类资源,这类资源包罗数组、颜色、尺寸、字符串等值。
6.给bag、style、.arrayi这类资源分配资源ID。
7.编译xml资源文件,编译的流程分为:①剖析xm文件②赋予属性名称资源D③剖析属性值④将xm文件从文本格式转换为二进制格式,四步。
8.天生资源索引表resources…arsc。
资源ID

每个Android项目里都有有一个R,java文件,如下所示:
  1. public final class R
  2. //...
  3. public static final class anim
  4. public static final int abc_fade_in=0x7f010000;
  5. }
  6. **深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
  7. ![](https://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png)
  8. ![img](https://img-blog.csdnimg.cn/img_convert/5d286d4b3bfb0c65bb001702f76a3b7c.png)
  9. ![img](https://img-blog.csdnimg.cn/img_convert/f31589e65d418281596488288242bdc0.png)
  10. **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**
  11. **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
  12. **[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**
  13. 发知识点,真正体系化!**
  14. **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
  15. **[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618636735)**
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表