1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android应用程序(APK)的编译打包过程

Android应用程序(APK)的编译打包过程

时间:2020-03-27 07:54:40

相关推荐

Android应用程序(APK)的编译打包过程

前言

android系统上所识别的安装包后缀名为.apk

1.通过aapt工具打包资源文件和清单文件到R.java中。

2.通过aidl工具将aidl文件转为java文件

3.上面所产生的java文件通过java编译器编译成class文件

4.dx工具将class文件和jar文件转化为classes.dex文件

5.通过apkbuilder工具将classes.dex转化为apk

在AndroidSDK的build-tools目录中我们能发现一些打包工具

java文件转化为class文件是通过JDK中的javac命令实现的,

classes.dex转化为apk是通过

接下来我们去解压一个apk安装包,看看里面都有什么内容?

各个目录介绍:

assets:资源目录,不同于res,这里面的资源会原封不动的打包到apk中

META-INF:存放签名信息,既然有签名信息,那必然有签名文件,默认的签名文件在下面的目录中

debug.keystore就是签名文件,密码是android,我们可以在命令窗口输入下面的命令来查看详细信息:首先需要进入签名文件所在目录,

我们打开META-INF目录:看到下面三个文件

下面介绍如何通过CERT.RSA文件查看签名信息,首先我们需要进入META-INF目录,然后输入下面的指令:

keytool -printcert -file META-INF/CERT.RSA

res:资源目录

AndroidManifest.xml:清单文件

classes.dex:dalvik的执行的字节码文件

resources.arcs:编译后的二进制资源文件

安装

大概了解了apk的打包过程之后,我们来看看应用的安装过程

1.拷贝apk包到data/app/目录下,比如我们我们应用程序的包名为

com.example.administrator.projectone

第一次安装后data/app/目录如下,命名规则是包名-N.apk

接下来我们不卸载程序再次安装一次,查看data/app目录

此时后缀变成了-2,那么我们继续安装,发现后缀不会再变化了。

2.接下来就是在data/data/目录下创建一个文件夹,名称为包名,存放的是应用程序的数据,

3.将应用程序信息写入到注册表文件,注册表文件在data/system下的

packages.list和packages.xml文件中,我们去看看这两个文件中的内容,去找一下我们应用程序的信息

packages.list记录的是已安装应用的包名列表信息

packages.xml里面存放的是详细信息

<package name="com.example.lixiaoniu.projecttwo" codePath="/data/app/com.example.lixiaoniu.projecttwo-2" nativeLibraryPath="/data/app/com.example.lixiaoniu.projecttwo-2/lib" flags="4767302" ft="15993090ce8" it="15992e752c0" ut="15993091721" version="1" userId="10058"><sigs count="1"><cert index="4" key="308201dd308601300d06092a864886f70d010105050030373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b3009060355040613025553301e170d3137303130363130333534345a170d3436313233303130333534345a30373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b300906035504061302555330819f300d06092a864886f70d010101050003818d003081890281810085244eba49426b1f1f9c7bbe1450102d90e8e1f39598bc104acdd3bf7fdd0d0f5d79c0f6eee3701f730a40743d2e17babf2eb81a4b9c31f9a11de61e0001496343241d4b338e1f9808b528a43e0aeea5956ccfd6e68bac53279048ea09800afc63d6b5e850c4710168b2d01816267ef23e3d73d6b0515a53d4fc39fdf22072cb0203010001300d06092a864886f70d0101050500038181007a70f4745b5d271648db53ac91eda9d18b8cff7a633c06bbbfed64807c7d66f27c6cf06f08e9430078362c8758429090efd3580ad8a812845ca181d04949e91633ea067d9b0efb1cd45b4001222eae19dd09a00e562ff15c879b656d842742041dc6c0ddd98b47437e0abbbaa87519fe7a7fc5b1580b9f558fb495516a3b996e" /></sigs><perms><item name="android.permission.SYSTEM_ALERT_WINDOW" /></perms><proper-signing-keyset identifier="22" /><signing-keyset identifier="22" /></package>

当把信息写入到注册表以后,整个应用程序就安装完成了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。