Android工程的编译过程

Android工程的编译过程

现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要什么环境和工具,输入和输出是什么。那么我们就来挖掘一下Android的编译过程中的细节。

首先,我们假定你的系统(什么系统都行,不限于Linux还是Windows系统,当然,我在这里默认使用Linux系统来举例子,但在 Windows中几乎没有什么差别)已经安装了JDK和Android SDK。再假定你的Android SDK的路径是ANDROID_SDK_HOME,你想要编译的Android OS版本是ANDROID_OS_VERSION(比如android-1.6、android-8、android-10等)。

我们重点关心的是(1)这个过程的输入是什么?(2)这个过程的输出是什么?(3)这个过程使用了什么工具?至于使用什么参数,可以自己去看对应命令的帮助文件,或者在网上搜索,这不是本文的重点。

步骤中提到的工具如下表:

名称 功能介绍 在操作系统中的路径
aapt Android资源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt
aidl Android接口描述语言转化为.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl
javac Java Compiler ${JDK_HOME}/javac或/usr/bin/javac
dex 转化.class文件为Davik VM能识别的.dex文件 ${ANDROID_SDK_HOME}/platform-tools/dx
apkbuilder 生成apk包 ${ANDROID_SDK_HOME}/tools/opkbuilder
jarsigner .jar文件的签名工具 ${JDK_HOME}/jarsigner或/usr/bin/jarsigner
zipalign 字节码对齐工具 ${ANDROID_SDK_HOME}/tools/zipalign

第一步:打包资源文件,生成R.java文件
【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件)
【输出】打包好的资源(一般在Android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、R.java文件(在gen目录中,大家应该很熟悉了)
【工具】aapt工具,它的路径在${ANDROID_SDK_HOME}/platform-tools/aapt(如果你使用的是Windows系统,按惯例路径应该这样写:%ANDROID_SDK_HOME%\platform-tools\aapt.exe,下同)。

第二步:处理AIDL文件,生成对应的.java文件(当然,有很多工程没有用到AIDL,那这个过程就可以省了)
【输入】源码文件、aidl文件、framework.aidl文件
【输出】对应的.java文件
【工具】aidl工具

第三步:编译Java文件,生成对应的.class文件
【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件)
【输出】.class文件
【工具】javac工具

第四步:把.class文件转化成Davik VM支持的.dex文件
【输入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),库文件(.jar文件)
【输出】.dex文件
【工具】javac工具

第五步:打包生成未签名的.apk文件
【输入】打包后的资源文件、打包后类文件(.dex文件)、libs文件(包括.so文件,当然很多工程都没有这样的文件,如果你不使用C/C++开发的话)
【输出】未签名的.apk文件
【工具】apkbuilder工具

第六步:对未签名.apk文件进行签名
【输入】未签名的.apk文件
【输出】签名的.apk文件
【工具】jarsigner

第七步:对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到Google Market的)
【输入】签名后的.apk文件
【输出】对齐后的.apk文件
【工具】zipalign工具

知道了这些细节之后,我们就可以实现很多我们想实现东西了,比如:自动化,我们可以使用某种脚本,像Windows下的批处理,linux下的Bash,Java下的Ant,Python、Perl这样的脚本语言,甚至直接用Java、.net这们的强类型语言也是可以的。如果你真正弄懂了上面的步骤,了解了编译打包过程的本质,你完全可以以你想要的任何方式实现它的自动化,这才是真正的“举一反三,以不变应万变”。再比如,对Android SDK的精简,大家知道,现在Android SDK动辙几百兆,我们完全可以应用上面的知识,只保留必要的工具,把SDK精简到10M以下。当然,还可以做很多事情,前提是你真正弄懂了它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Launcher是Android设备上的一个应用程序,它提供了主屏幕、应用程序列表和小部件等界面。在Android Studio中编译Android Launcher需要进行以下步骤: 第一步:创建一个新的Android工程Android Studio中,可以通过菜单栏的"File"--> "New"--> "New Project"来创建一个新的Android工程。在创建工程时,需要选择一个空白的Activity,这样可以得到一个简单的应用程序,为后续自定义Launcher提供便利。 第二步:导入Launcher代码 可以从各种开源代码库中寻找自己需要的Launcher,并将其导入到项目中。一般而言,自定义的Launcher首先需要实现用户自定义图标和自定义布局等特殊功能,同时还需要自定义主屏幕背景等界面。因此,需要从开源代码库中获取可定制化的Launcher代码,并将其导入到项目中。 第三步:进行Launcher定制 通过修改导入的Launcher代码,可以自定义主屏幕、应用程序列表、小部件等界面。在这个过程中,需要使用Android Studio的UI编辑器,例如XML布局编辑器、Drawable资源编辑器等,在代码中引用这些资源。 第四步:编译并部署 编译时,需要首先检查代码是否存在问题,包括语法错误、拼写错误、类定义错误等。如果代码存在问题,需要进行调试和修正,直到能够正确编译。在编译完成后,可以将应用程序发布到Google Play等应用市场,也可以在设备上进行调试、测试和分发。 总的来说,Android Studio在编译Android Launcher方面提供了很好的支持和便利,使得开发者可以更快速、更有效地开发出自定义的Launcher应用程序。 ### 回答2: Android Launcher 是 Android 系统中的主屏幕界面,用户可以在其中查看已安装应用程序,并快速启动这些应用程序。Android Studio 是 Android 开发的官方 IDE,提供了丰富的工具和资源来协助开发者创建高质量的 Android 应用程序。那么,如何在 Android Studio 中编译一个 Android Launcher 呢? 首先,我们需要了解 Android Launcher 的基本结构和要求。Android Launcher 主要由以下几个部分构成:桌面图标、文件夹、图标文字标签、搜索框、快捷操作栏等。为了能够在 Android Studio 中成功编译 Android Launcher,我们需要先准备好以下工具和素材: 1. Android Studio 开发环境。 2. Android SDK 和 JDK。 3. Android 设备或模拟器。 4. Android Launcher 的源代码和资源文件。 一般而言,我们可以通过使用 Android Studio 中的项目模板快速创建一个 Android Launcher 项目,其步骤如下: 1. 打开 Android Studio,并点击“Start a new Android Studio project”。 2. 选择 “Empty Activity” 模板,并输入项目名称和包名。 3. 在 “Create Activity” 界面中填写 Activity 名称和 Layout 名称。 4. 点击 “Finish”创建项目。 5. 在项目中,我们可以通过使用 Android Studio 的 Drag & Drop 工具快速设计界面,并编写代码实现相关功能。 6. 当编写完成后,我们可以使用 Android Studio 中的 “Build” 和 “Run” 按钮来构建和运行程序。 值得注意的是,Android Launcher 的设计和实现需要考虑到用户体验和设备兼容性等因素。因此,在项目开发过程中,我们需要进行多次测试和优化,以确保 Android Launcher 能够平稳运行并提供出色的用户体验。 综上所述,通过使用 Android Studio 进行 Android Launcher 的编译可以让我们更加高效地完成项目开发,并提高项目的可靠性和稳定性。当然,为了成功地编译一个优秀的 Android Launcher,我们还需要包括团队协作、需求分析等多个方面的细节工作。 ### 回答3: Android launcher在Android Studio编译是非常简单和易于操作的。一般来说,Android系统会在启动时显示桌面,并使用一个Launcher(启动器)应用程序来显示应用程序的缩略图或图标。要编译一个自己的Launcher应用程序,可以按照以下步骤: 1. 打开Android Studio,并创建一个新项目。在创建新项目时,请确保选择“Empty Activity”模板。 2. 在Android Studio的“Project”视图中,右键单击“app”文件夹,并选择“New -> Activity -> Empty Activity”。这将创建一个新的空Activity。 3. 在“app”文件夹中,找到“manifests”文件夹,并打开其中的“AndroidManifest.xml”文件。在文件中添加以下内容: ``` <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 这个代码片段会告诉Android系统,当用户点击应用程序的图标时,启动MainActivity,并将其作为Launcher应用程序。 4. 在MainActivity.java文件中,添加一些代码来创建应用程序的UI和处理事件。这些代码可以是你想要的,你可以创建一个列表视图或一个网格视图,并显示应用程序的图标。 5. 最后,单击Android Studio顶部菜单栏中的“Run”按钮,选择一个模拟器或连接到Android设备,并运行应用程序。如果一切正常,您将看到您的Launcher应用程序在设备上运行。 总之,在Android Studio中编译Launcher应用程序非常简单和快速。您只需要创建一个空的Activity,设置应用程序的manifest,编写一些代码来创建UI,并将其运行在您的设备上。这个过程可以让您加深对Android应用程序开发的理解,帮助了解Launcher应用程序的底层工作原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值