Android Studio开发解读 - gradle编译项目的build目录结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio开发解读 - gradle编译项目的build目录结构相关的知识,希望对你有一定的参考价值。

参考技术A 转自:http://www.cnblogs.com/bbqzsl/p/5926591.html

本文针对android studio工具下的ndk开发。

build目录就是项目模块构建过程和结果使用到的位置。

项目根目录下有一个build目录。

项目根目录下各模块子目录下各自有一个build目录。

build目录下一般由4个子目录组成:

generated由aapt工具根据资源数据自动生成的java类

intermediates中间过程

outputs输出结果

tmp编译日志

根目录下的build目录,这个build服务于整个项目,在本文中称其做项目build,以区分模块build。

项目build一般只有generated和intermediates两个子目录,用于生成这个项目的buildTools。

generated目录会生成一个mockable-android-$buildToolsVersion.jar。

intermediates目录根据需要生成dex-cache,这个目录下的xml文件配置jar包在编译过程中如何缓冲使用。

模块build目录在make module $MOD_NAME后就会生成4个子目录。

我们来看intermediates目录,中间生成和编译过程使用到的目录。

这个目录下有这么几个比较关心的子目录:

binaries                  NDK,生成c++连接库

bundles                  模块链接到的自定义jar包和各abi版本的c++链接库都捆绑在这里

classes模块中生成的自定义java类

exploded-aar          由aar包解压出来的资源,jar包和so链接文件等。用于本模块的链接和集成。

jniLibs                   在build.grade中你指定的jniLibs目录整个拷贝。模块链接到的库文件会被捆到bundles目录。

objectFiles              NDK,生成c++中间对象(.o)文件。

transforms              根据你当前选择的productFlavor和其包含的abiFilter,从bundles和binaries取出链接库。

接着就是output目录:

aar如果模块是android library

jar                         如果模块是java library

apk                        如果是Activity应用程序

最后就是tmp目录:

compile$(NDK_Module)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)MainCpp               ndk编译日志

link$(NDK_Module)$(ABI)$(BUILD_TYPE)$(PRODUCT_FLAVOR)$(LIB_TYPE)                ndk链接日志

编译的子目录由三要素组合而成,分别是

BUILD_TYPE := debug|release

ProductFlavor := 你在gradle文件中创建的flavor

abiFilter :=

逆向深入objc,c++ windows下仿objc动画层UI引擎

以上是关于Android Studio开发解读 - gradle编译项目的build目录结构的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的重复资源错误

Android studio怎么设置HTTP协议代理

android studio 运行不了

Gradle,Gradle 包装器在 Android Studio 中的不同实例 by ionic cordova

什么是真正的 Android Studio Gradle 版本?

Android Studio 构建/清理