【Android篇】APK打包流程浅析

这篇具有很好参考价值的文章主要介绍了【Android篇】APK打包流程浅析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在面试中,大公司会问你.....(吃饭了吗?)咳咳~

  1. APK打包流程全过程?

  1. APK签名在实际业务中能处理什么?

  1. APK加固原理是如何实现的,怎么保证安全?

  1. APK签名V1,V2,V3的区别于原理,有什么漏洞?

这里只讲解APK打包流程全过程。

现在2023年了,一般都是用Android studio来设计android,而最直接的安卓APK打包方式则是使用Android Studio集成直接生成apk,所以本文就介绍以AS集成生成APK的方式来讲解。


首先先介绍以下编译的不同,在AS里面有很多的这种编译的选项,但是这些选项有什么区别呢?

Sync Project with gradle files:对gradle文件之后,或刷新gradle配置时使用。

Make project:只是对项目中新产生或修改过的文件进行一次编译,已经编译过了的就不会编译了,耗时相对较短。

Clean Project :删除build目录下的所有文件,并对项目的大部分文件进行重新编译,时间相对于Rebuild Project短点。

Rebuild Project :包含了Clean的操作,并对整个项目进行了重新编译(包括NDK和资源文件),因此耗时相对较长。

Invalidate Cache/Restart AndroidStudio:自动生成的项目缓存异常时,点击可清理项目缓存并重启AndroidStudio,重启后即可正常生成项目文件。

Build APK:前面4个选项都是编译,没有生成apk文件,如果想生成apk,需要点击Build APK。
Generate Signed APK:生成有签名的apk。

————————————————
版权声明:本文为CSDN博主「carter_yu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: https://blog.csdn.net/carter_yu/article/details/105641951

我们常规的打包就是点击下方这个图,点击它。

【Android篇】APK打包流程浅析

此时此刻在我们Project面板的app\bulid\outputs\apk\debug中会生成一个对应的apk的包,这个过程APK打包的这个能力不是AS软件提供的,而是AS的SDK提供的(就是当初你安装AS的时候安装的SDK)。

而SDK里面有一个build-tools文件夹。

【Android篇】APK打包流程浅析

点开发现有好几个版本。

【Android篇】APK打包流程浅析

随便点击一个33版本的。

【Android篇】APK打包流程浅析

build-tools里面有很多我们打包会用到的工具,里面的工具可以完成具体的功能,例如aapt,aidl等等。

AS的Gradle就是调度我们这些工具的,以前是用Eclipse来调度这些工具的。现在都用AS啦,要学会跟着新时代的脚步,不过以前的技术还是要了解一下。

【Android篇】APK打包流程浅析

我们从上往下看,写代码期间会自动调用aapt和aidl工具。

aapt:每当我们写一个XML文件,aapt.exe就会被AS自动调度,生成一个R.java文件。而被打包后会生成一个.arsc文件,也就是我们的res目录被打包了,但是assets和lib文件夹下的这些资源aapt就不会进行处理,默认过滤。

aidl:进程间的通信。aidl.exe就会被AS自动调度,生成一个java Interface文件。

Application Source code:而最上方中间的是我们写的源文件代码。

【Android篇】APK打包流程浅析

java compiler:Gradle通过调用javac命令,把三个.java文件全部转化为.class文件。

此时此刻在我们Project面板的app\bulid\intermediates\javac\debug\classes\com底下会生成一系列的.class文件。

【Android篇】APK打包流程浅析

类加载机制
JVM加载类文件的话,单个文件加载会触发N次IO流
几百个类会触发更多次IO流。
所以安卓对类加载进行了一定的优化,将.class转为.dex文件,体积更小,本质上还是字节码。

而.class文件属于jar包。

而我们安卓虚拟机又不同于jvm,还有一些安卓私有的东西,所以要转化为.dex文件。

Gradle调用到dx.bat工具,把.class文件转化为.dex文件。

第三方jar包也是编译后的.class文件,也要被转化为.dex文件。

此时此刻在我们Project面板的app\bulid\intermediates\dex\debug下会生成.dex文件。

【Android篇】APK打包流程浅析
【Android篇】APK打包流程浅析

Other Resources:比如assets,lib和res一些图片和XML文件等等,这些资源就不会经过相关工具处理,直接放入apk包中。

Compiled Resources:生成一个resoueces.arsc文件。

apk builder:调用libbcc.dll动态链接库,打包成APK。

比如:把.dex文件

res文件

清单文件

META-INF源信息文件

resources.arsc文件

新建文件夹,按顺序往里面放,然后右键压缩,后缀名zip改成apk。

本质上就是这样,用zip压缩方案进行io操作。

【Android篇】APK打包流程浅析

签名:Gradle调用apksigner.bat工具,就从没签名的apk变成有签名的apk,apk里面就会多出一个META-INF源信息文件,没签名就没有。

【Android篇】APK打包流程浅析

优化4K对齐:Gradle调用zipalign.exe工具(磁盘操作)关于操作系统,对内存再次进行优化,具体这个我也不太会。

【Android篇】APK打包流程浅析

打包是由SDK提供,AS打包就是调用这些工具全自动化完成。所以你也可以自己打包,但是会出现安全问题,所以还是老老实实用AS打包吧(大佬可以忽略这句话)文章来源地址https://www.toymoban.com/news/detail-434153.html

到了这里,关于【Android篇】APK打包流程浅析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android】使用Android Studio打包APK文件

    打包APK之前,首先需要新建项目,有基础的可以跳过。 无基础的可以参考:使用Android Studio运行Hello World项目 1.找到Build - Generate Signed Bundle or APK - 勾选APK 2.首次需要创建证书,后续可以使用已创建好的证书 3.填写证书信息 选择密钥库存放路径,并填写密码 填写密钥名称、密

    2024年02月19日
    浏览(56)
  • Android中的APK打包与安全

    apk文件结构 classes.dex:Dex,即Android Dalvik执行文件 AndroidManifest.xml:工程中AndroidManifest.xml编译后得到的二进制xml文件 META-INF:主要保存各个资源文件的SHA1 hash值,用于校验资源文件是否被篡改,防止二次打包时资源文件被替换,该目录下主要包括下面三个文件: MANIFEST.MF:保

    2024年02月11日
    浏览(47)
  • 【Android】反编译APK及重新打包

    1.下载 APK 反编译工具 首先,需要下载一个 APK 反编译工具,例如 Apktool。可以在官网(https://apktool.org/docs/install)上下载最新版本的 Apktool,也可以使用包管理器来安装。 2.反编译 APK 文件 将要修改包名的 APK 文件放到一个新建的文件夹中,然后打开终端(命令行窗口),进入

    2024年04月11日
    浏览(44)
  • Android apk文件打包自定义命名

    前言 在Android Studio中打包生成的APK和aar文件基本上都是module名称+构建类型,常见的都是 app-debug.apk 和 app-release.apk 这种样式的。 显然没有版本号等序号标识的话,管理起来会比较混乱,基于此种情况,我们可以通过修改 build.gradle 文件中的配置来修改生成包的文件名以做区分

    2024年02月13日
    浏览(57)
  • cocos creator 3.x打包构建原生安卓APK流程(打包release版本,修改APP图标)

    本文介绍cocos creator 3.x如何打包构建原生安卓APK,一开始是按照官网构建示例操作的,发现存在各种SDK版本问题,因为对原生Android没什么研究只能瞎琢磨,最后勉强算是打包出来了…写个文章记录下流程,免得后续又忘记…如果有不对的地方,欢迎在评论区指正,有疑问也可

    2024年02月10日
    浏览(69)
  • Android APK 签名打包原理分析(二)【Android签名原理】

    说到签名,从这个词来理解,正常个人需要签名的时候,一般是用来证明这是某个人的特属认证。 大家是否有印象?还记得我们之前在学习、总结网络相关知识的时候,说到过,客户端和服务端虽然通信数据上,可以采用对称加密和非对称加密组合去进行数据的加密,但是这

    2024年01月18日
    浏览(55)
  • Android apk 反编译后打包(含签名)

    想分析某些app源码时,遇到烦人弹框,现在想反编译看看具体实现。 用到的工具: GDA4.06 apk反编译工具 apktool apk 打包工具 jdk 环境 一、反编译分析 将apk反编译打开 找到入口代码 弹框代码如图 二、解包、打包 使用apktool解包 ps: apktool工具的用法自行百度 -o模式是指定解包后文

    2024年02月09日
    浏览(43)
  • Android反编译修改apk并重新打包

            Apktool 是反编译Apk的第三方工具,它可以反编译资源,并在修改之后重新生成Apk          注意:apktool 依赖 Java1.8。请使用 java -version 查看,是否为1.8或更高版本。 1. 使用apktool.jar反编译解包 将需要编译的apk和apktool.jar放到同一个文件夹下 在cmd终端,cd到此目录下

    2023年04月13日
    浏览(51)
  • Android打包脚本和上传apk托管平台

    前言 作为Android开发经常需要打包提交测试,多数情况我们都是通过Android studio手动点点进行,后来项目由于环境较多(开发,测试,预发布,发布等),手动打包就容易出错,所以后边就引起通过脚本打包提升效率和准确的需求。 内容部分 编写脚本前,需要在app目录下的

    2024年02月09日
    浏览(38)
  • uniapp离线打包apk - Android Studio

    ​下载 Android Studio 版本最好 4.0以上 ​下载 HBuilder X ​下载 Android离线SDK 注意:HBuilder X 和 离线SDK 版本必须一致(我的版本 3.6.2) Android SDK解压后目录: ​​​​ 以上步骤完成后,在工具栏找到Build,选中Generate Signed Bundle/APK… 在key store password 和 key password中输入密码 ****** (两

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包