Android构建系统

摘要:本文原文为Android Studio官方开发文档,笔者学习过程中,顺便翻阅给大家。

与人方便,自己方便。转载请保留本地址及原文地址,谢谢。

本文地址:http://blog.csdn.net/mikulee/article/details/45394673

原英文原文地址:https://developer.android.com/intl/zh-cn/sdk/installing/studio-build.html#detailed-build

构建系统概述(Build System Overview)

Android构建系统(Android build system)是一个你可以用它来创建,测试,运行及打包应用的工具集。这个构建系统可以作为一个集成的工具运行在Android Studio的菜单上,也可以独立的运行在命令行工具上。你可以使用构建系统的这些特性去实现:

  • 定制,配置及扩展构建过程
  • 使用相同的项目及模块为你的应用创建多个不同特性的APKs
  • 跨代码集的重用代码和资源文件

Android构建系统的灵活性使你可以完成这些目标,而不用去修改应用核心源码文件。要创建一个Android Studio项目,请参考 从Android Studio创建及运行程序。要为Android Studio项目进行自定义构建配置,请参考配置Gradle Builds

构建流程详述(A Detailed Look at the Build Process)

构建流程在生成APK程序的过程中会调用到很多工具去处理并自动生成很多中间文件。如果你在Android Studio中开发,你每次为你的工程或模块执行Gradle Build任务时,都会完整的执行一次构建流程。构建流程相当灵活,所以很有用,然而,由于构建流程的可配置性及可扩展性,要理解在构建过程中发生了什么就需要付出更多精力。下面这个流程图描述了构建流程中不同工具的调用及处理:

下面简述一个典型的构建流程。构建系统从产品配置特点,构建类型及依赖中合并所有资源。如果不同文件夹下面包含了同一名称的资源或配置,相关的覆盖优先级从高到低为:依赖(dependencies)->构建类型(build types)->产品特性(product flavors)->主源代码目录(main source directory).

  • Android资源打包工具(aapt)将你应用的资源文件,例如 AndroidManifest.xml,Activity引用到的XML文件编译,并且生成一个R.java源码,以便你可以在你的java代码中引用你的资源。
  • aidl工具转换所有的.aidl文件并生成对应的java接口
  • 所有的java源码,包括R.java和.aidl文件,都被java编译器编译成.class文件
  • dex工具转换所有.class文件为Dalvik字节码。任何第三方的库及你引用到的相关模块生成的.class文件也一起被转换成.dex文件,以便它们可以被打包进最终的.apk文件中。
  • 所有不可编译的资源文件(例如图片),已经编译的资源,及.dex文件都被apkbuilder工具打包为一个.apk文件
  • 一旦.apk文件生成后,它必须用一个(debug或release)key去签名,才能被安装到设备上。
  • 最后,如果应用是用release key签名的,还必须用zipalign工具将.apk文件对齐。经过对齐处理的.apk文件在应用实际运行过程中可以有效减少内存占用。

提示:一个应用被限制最多可以有64K个方法索引,如果你的应用超过这个限制,构建过程会输出以下错误信息:

Unable to execute dex: method ID not in [0, 0xffff]: 65536.

要避免这个错误,可以参考构建超过65K方法的应用

构建输出(Build output)

构建系统分别为不同的构建需求在app/build文件夹生成不同的APK文件:在app/build/outputs/apk目录下包含着以app--.apk的文件,例如app-full-release.apk 及 app-demo-debug.apk。

时间: 2024-10-07 13:16:43

Android构建系统的相关文章

打造一个全命令行的Android构建系统

IDE都是给小白程序猿的,大牛级别的程序猿一定是命令行控,终端控,你看大牛都是使用vim,emacs 就一切搞定" 这话说的尽管有些绝对.可是也不无道理.做开发这行要想效率高,自己主动化还真是缺少不了命令行工具,由于仅仅有命令行才是最佳的人机交互工具. 事实上IDE也是底层也是调用命令行工具而已,仅仅只是给普通开发人员呈现一个更友好的开发界面. 这里可不是宣扬让大家放弃IDE都改命令行,仅仅是每种事物都有他存在的理由,不管是编程语言还是工具都是一个原则 "没有最好的,仅仅有最合适的&q

关于Android 构建

在简书上面有系列关于Android 的文章,还不错,部分同学可以在开发过程中阅读和学习:www.jianshu.com/collection/3fde3b545a35 关于Android 构建,看到这篇文章.同学们可参考: 说到命令行自然是不需要图形界面,所以Android SDK的安装下载自然都是在终端上进行.下面是本文中使用的一些SDK和基本环境. ubuntu server 14.04 (64位) JDK 1.7 android-sdk_r24.0 gradle-2.2.1 进入正题,接下

深入浅出Android Gradle构建系统(三:build task)

接上一篇  深入浅出Android Gradle构建系统(二:项目结构) 构建任务(Build Tasks) java和Android通用的任务 在build文件中使用了Android或者Java插件之后就会自动创建一系列可以运行的任务. Gradle中有如下一下默认约定的任务: 1. assemble 该任务包含了项目中的所有打包相关的任务,比如java项目中打的jar包,Android项目中打的apk 2. check 该任务包含了项目中所有验证相关的任务,比如运行测试的任务 3. buil

[系统集成] Android 自动构建系统

一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包android 的打包一般是人工通过eclipse或者studio的ui界面打包的,如果要让系统自动打包,必须在控制台环境下:只要按照 google 的文档,把 eclipse 或者 studio 工程转化为 ant 或者 gradle 工程,就可以在控制台环境下打包了:这里,我们选择 ant,主要是它容错好,遇到图片格式等

[Android Studio 权威教程]AS构建系统-Gradle

前几篇我们主要讲了AS的配置的一些东西,今天我们就开始认识一下Android Studio的[构建系统]-Gradle. Gradle是什么?Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具.[百度百科] 在AS中包含一个顶级构建文件和每个模块构建文件组成,如下图 我们这里就主要讲[顶级配置文件和模块配置文件以及sdk配置文件] 1.等级配置文件 2.模块配置文件 说明: minifyEnable false 是apk变小压缩ap

【Android Studio探索之路系列】之七:Android项目构建系统 - Gradle

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell Android Studio的项目构建系统是Gradle. 什么是Gradle呢? Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. Gradle有哪些优点? gradle对多工程的构建支持很出色,工程依赖是g

Android NDK的构建系统简介

Android NDK的构建系统是基于GNU Make的.该构建系统的主要目的是使开发人员能够用很短的构建文档来描述原生的Android应用程序:该构建系统还处理了包括替开发人员指定工具链.平台.CPU和ABI等很多细节.封装该构建过程可以在不改变构建文件的情况下,使Android NDK的后续更新添加更多对工具链.平台以及系统接口的支持. Android NDK构建系统是由多种GNU Makefile片段构成的.该构建系统包括基于渲染构建过程的不同类型NDK项目所需要的必要片段.这些构建系统片

Android Studio的构建系统:Gradle

原文作者:youxiachai <用Gradle 构建你的android程序> 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的人也用gradle构建android项目,让打包(注意,打包和构建是两码事)多版本android不再痛苦.最后,题外话:珍惜生命,远离ant.... Gradle buil

理解 Android Build 系统

http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/ Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架.众所周知,Android 是一个开源的操作系统.Android 的源码中包含了许许多多的模块. 不同产商的不同设备对于 Android 系统的定制都是不一样的.如何将这些模块统一管理起来,如何能够在不同的操作系统上进行编译,如何在编译时能够支持面向