21.App启动&打包&安装

  • 应用启动流程

1.用户点击APP图标,系统会检测该应用是否已安装和可用,并为其启动进程。

2.如果该应用之前已经运行过,则恢复先前的进程。否则,创建新的进程并加载其主线程。

3.在主线程中,应用会进行初始化操作,例如加载应用程序资源,建立UI界面,以及设置监听器等。

4.在完成初始化操作后,应用会回调“onCreate”方法,做一些自己需要的初始化工作。

5.此时,应用进入“onStart”状态,开始运行。

6.如果应用是首次启动,或者被用户从后台唤醒,则会依次执行“onResume”,“onPause”和“onStop”等方法。其中,“onResume”方法用于处理应用程序前台显示逻辑,“onPause”方法用于处理应用程序后台挂起逻辑,“onStop”方法用于处理应用程序结束逻辑。

7.如果应用程序在运行过程中被意外打断,例如来电、短信或其他事件,系统则会暂停应用程序的状态,并回调“onPause”方法,在事件处理完成后再通过“onResume”方法恢复应用程序的正常运行。

8.当用户退出应用程序时,系统会关闭应用程序进程,并依次回调“onPause”和“onStop”等方法。

  • apk组成和Android的打包流程

APK是指Android应用程序包,主要包含以下几个组成部分:

  1. AndroidManifest.xml:这是一个XML文件,描述了应用程序的基本信息、权限、组件以及其他配置。

  2. classes.dex:这个文件包含了应用程序的Java代码和字节码,它是原生代码编译后的结果。

  3. resources.arsc:这个文件包含了所有资源的索引和元数据,例如布局、字符串、图片等。

  4. lib/:这个目录包含了与不同CPU架构(如ARM、x86)相关的本地库。

  5. assets/:这个目录包含了未被编译的资源文件,例如音频、视频、数据库等。

Android的打包流程主要包括以下几个步骤:

  1. 编写应用程序代码并进行调试测试。

  2. 建立签名密钥,用于将生成的APK文件进行签名验证。这个过程只需要进行一次,然后就可以多次使用。

  3. 编译应用程序代码并生成相应的class文件。

  4. 将class文件转换为Dalvik可执行dex格式的代码,并同时生成R.java文件和res目录。

  5. 按照AndroidManifest.xml文件中的组件声明约束,将Android四大组件(Activity、Service、Broadcast Receiver、Content Provider)合并到一个单独的AndroidManifest.xml文件中。

  6. 将所有资源文件和AndroidManifest.xml文件一起最终打包成一个APK文件。

  7. 对APK文件进行签名验证,以保证其安全性和完整性。

  • Android的签名机制,签名如何实现的,v2相比于v1签名机制的改变

Android应用程序的签名机制是为了保证应用程序的完整性和安全性,防止应用被篡改或恶意替换。Android系统使用数字证书进行应用签名,以验证应用程序的身份并授权其访问特定的系统服务和API。

签名过程如下:

  1. 生成密钥对:使用Java Keytool工具创建一个密钥库,并在其中生成一个密钥对(公钥和私钥)。

  2. 对应用程序进行签名:使用Android SDK中的Jarsigner工具将应用程序打包成未签名的APK文件,并使用密钥库中的私钥对APK文件进行数字签名。

  3. 安装应用程序时进行验证:Android系统使用密钥库中的公钥验证APK文件是否来自于正确的开发者,并确定是否能够访问特定的系统服务和API。

V2 Signature相比于V1 Signature的改变主要包括以下几点:

  1. 更好的应用程序完整性保护:在V2签名机制中,每个APK都有一个独立的签名文件,可使用更强大的加密算法生成签名,并使用SHA-256哈希算法计算APK内容的摘要,从而提高了应用程序完整性保护水平。

  2. 支持增量更新:在V2签名机制中,应用程序在更新时只需上传新文件的差异部分,可将更新包的体积减小到最小。

  3. 签名文件可以在APK外部:在V1签名机制中,签名数据必须存储在APK的结尾处,这意味着可能会对应用程序进行重打包和重新签名。而在V2签名机制中,签名文件可以独立于APK存储,以便更轻松地控制访问权限。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐