Apk的编译打包过程

本文介绍了Android开发过程中的关键步骤,包括创建gen目录,处理AIDL文件,使用javac编译,将.class转为DEX,打包APK,以及签名过程。同时还提到了一份完整的Android学习资料包,涵盖了从基础知识到高级技术的体系化学习资源。
摘要由CSDN通过智能技术生成

-A additional directory in which to find raw asset files

-G A file to output proguard options into.

-F specify the apk file to output

-I add an existing package to base include set

-J specify where to output R.java resource constant definitions

-M specify full path to AndroidManifest.xml to include in zip

-P specify where to output public resource definitions

-S directory in which to find resources. Multiple directories will be scann

appt在应用程序目录下新建一个gen目录,创建后再gen目录下生成包结构以及目录树,还有R.java文件。

2、处理AIDL文件,生成对应.java文件


如果有些程序没有涉及到AIDL,那这一步就省了。

AIDL工具将.aidl文件生成.java文件,它有如下参数:

-I

search path for import statements.

-d generate dependency file.

-p file created by --preprocess to import.

-o base output folder for generated files.

-b fail when trying to compile a parcelable.

值得注意的是:这个工具的参数与参数值之间不能有空格

这里是将testService转化成java文件的例子。

3、javac编译java文件


这一步java compiler编译源代码生成字节码。

javac的参数有下面:

-g 生成所有调试信息

-g:none 不生成任何调试信息

-g:{lines,vars,source} 只生成某些调试信息

-nowarn 不生成任何警告

-verbose 输出有关编译器正在执行的操作的消息

-deprecation 输出使用已过时的 API 的源位置

-classpath <路径> 指定查找用户类文件和注释处理程序的位置

-cp <路径> 指定查找用户类文件和注释处理程序的位置

-sourcepath <路径> 指定查找输入源文件的位置

-bootclasspath <路径> 覆盖引导类文件的位置

-extdirs <目录> 覆盖安装的扩展目录的位置

-endorseddirs <目录> 覆盖签名的标准路径的位置

-proc:{none,only} 控制是否执行注释处理和/或编译。

-processor [,,…]要运行的注释处理程序的名称;绕过默认的搜索进程

-processorpath <路径> 指定查找注释处理程序的位置

-d <目录> 指定存放生成的类文件的位置

-s <目录> 指定存放生成的源文件的位置

-implicit:{none,class} 指定是否为隐式引用文件生成类文件

-encoding <编码> 指定源文件使用的字符编码

-source <版本> 提供与指定版本的源兼容性

-target <版本> 生成特定 VM 版本的类文件

-version 版本信息

-help 输出标准选项的提要

-Akey[=value] 传递给注释处理程序的选项

-X 输出非标准选项的提要

-J<标志> 直接将 <标志> 传递给运行时系统

4、将.class转化为DVM识别的.dex文件


DVM是不识别.class的,所以要通过dex工具将java字节码转化成dex字节码。

dex文件在SDK文件的dx下,下面是转化一个.class文件

在这里插入图片描述

5、打包生成.apk文件


向apkbuilder中传入的参数为:

  1. 之前打包的的资源文件(gen目录下)

  2. 之前生成的.dex文件

  3. libs文件(比如jni/ndk中的so库,如果没有用到就不会传入)

通过apkbuilder产生一个没有签名的apk

6、对apk文件签名


使用jarsigner对apkbuilder产生的apk进行签名

用到的参数有:

用法:jarsigner [选项] jar 文件别名

[-keystore ] 密钥库位置

[-storepass <口令>] 用于密钥库完整性的口令

[-storetype <类型>] 密钥库类型

[-keypass <口令>] 专用密钥的口令(如果不同)

[-sigfile <文件>] .SF/.DSA 文件的名称

[-signedjar <文件>] 已签名的 JAR 文件的名称

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

G0j-1711811117609)]

[外链图片转存中…(img-vg8GZUBw-1711811117609)]

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值