gradlebuild(gradlebuild报错)

本篇文章给大家谈谈gradlebuild,以及gradlebuild报错对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

转自:

本文针对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引擎

[img]

gradle.build怎么设置本地gradle

build.gradle

//设旅仔置脚本的运行环境

buildscript {

//支持java 依赖库管理(maven/ivy),用拆携汪于项目的依赖。

repositories {

mavenCentral()

}

//依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件

dependencies {

classpath 'com.android.tools.build:gradle:0.4'

}

}

//声明构建的项目类型,这里当然是android了

apply plugin: 'android'

//设置编译android项目的参数

android {

compileSdkVersion 17

buildToolsVersion "17"

defaultConfig {

minSdkVersion 8

targetSdkVersion 17

}

//Android默认配置

sourceSets {

main {

manifest.srcFile 'AndroidManifest.xml'

java.srcDirs = ['src']

resources.srcDirs = ['src']

aidl.srcDirs = ['src']

renderscript.srcDirs = ['src']

res.srcDirs = ['res']

assets.srcDirs = ['assets']

}

//测试所在的路径,这里假设是tests文件夹,没有可以不写这一行

instrumentTest.setRoot('tests')

}

//这个是解决lint报错的代码

lintOptions {

abortOnError false

}

/**

* 签名设置

*/

signingConfigs {

myConfigs {

storeFile file("签名文件地址")

keyAlias "..."

keyPassword "..."

storePassword "..."

}

}

/**

* 混淆设置

*/

buildTypes {

release {

signingConfig signingConfigs.myConfigs

runProguard true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

/**

* 渠道打包(不同包名)

*/

productFlavors {

qqqq {

applicationId = '包名'

}

hhhhh {

applicationId='包隐森名'

}

}

}

/**

* .so文件的导入

*/

task copyNativeLibs(type: Copy) {

from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'

}

tasks.withType(Compile) {

options.encoding = "UTF-8"

}

tasks.withType(Compile) {

compileTask - compileTask.dependsOn copyNativeLibs

}

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -

pkgTask.jniFolders = [new File(buildDir, 'lib')]

}

//依赖库

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

}

gradle 作为构建工具,能够很方便的使用本地jar包,以下为使用的代码块。

ependencies {

//单文件依赖

compile files('libs/android-support-v4.jar')

//某个文件夹下面全部依赖

compile fileTree(dir: 'libs', include: '*.jar')

}

android {

}

gradle 同时支持maven,ivy,由于ivy我没用过,所以用maven 作为例子,以下为代码块:

repositories {

//从中央库里面获取依赖

mavenCentral()

//或者使用指定的本地maven 库

maven{

url ""

}

//或者使用指定的远程maven库

maven{

url "远程库地址"

}

}

dependencies {

//应用格式: packageName:artifactId:version

compile 'com.google.android:support-v4:r13'}

android {

}

对于项目依赖 android library的话,就不是依赖一个jar,那么简单了,在这里需要使用gradle mulit project 机制。在过去,android library并没有一个很好的包管理方式,简单来说,在gradle出现以前,官方并没有一种用于管理android library 依赖包的方式,一般我们都是直接下载别人的android library project 源码进行集成,而对于第三方的android-maven-plugin 用的是apklib 格式。

而现在,官方终于推出一种android library的打包格式,扩展名为*.aar。前面提到,目前android gradle插件并不支持本地直接使用*.aar文件,不过,支持包管理库的引用方式,下面,我为大家说一下,怎么对android library 发布使用。

打包android library

对android library 进行打包直接在library项目下面使用gradle build 即可,然后,你就会在 build/libs 目录下看到两个*.aar文件,一个debug包用的,一个是release 下用的,看个人需求使用,这里我们用的是release 版本的 .aar 文件。

build gradle是什么文件

在编写程猜汪序的时候,有时候我们需要兼容不同系统版本的手机来进行真机测试,所以有时候知兆模我们需要修改sdk或者其他的东西的版本号,这时候我们就需要了解build.gradle文件了。

首先,在Android studio的一个工程里,在Gradle Scripts目录下,有一个文件build.gradle(Module:app),打开。这里我随便选了一个工程的build.gradle文件做例子:

apply plugin: 'com.android.application'

android {

compileSdkVersion 21

buildToolsVersion "21.1.2"

defaultConfig {

minSdkVersion 14

targetSdkVersion 21

versionCode 1

versionName "1.0"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile project(':xDroid')

compile project(':UniversalImageLoader')

compile project(':xdroidrequest')

compile project ( ':library')

}

compileSdkVersion 21,说明要运行该源码,你必选已经安搭缓装了android API 21。

buildToolsVersion 21.1.2 说明要运行该源码,你必须已经安装了 android sdk build-tools 21.1.2。

minSdkVerison 表示向下低至android API 14,即androd 4.0和4.0以上的版本都可以运行该工程。

targetSdkVerision 表示采用的目标android API是 API 21即 android 5.0。

3.下面的dependencies里指明的就是一些需要用到的第三方库。

android中的build.gradle是干什么用的

 为什么要用Gradle?

Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑

以下是为什么Android Studio选择Gradle的主要原因:

使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)

基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。

支持已有的Maven或者Ivy仓库基础建设

非常灵活,允许使用best practices,并不强制让你遵照它的原则来。

 旦御 其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。

允许IDE集成,是很好的API工具

需要准备:

Gradle 1.6 or 1.7

SDK with Build Tools 17.0.0 (released 5/16/2013)

Basic Project

在Gradle项目的根目录下,有个叫build.gradle的文件,它描述了这个项目的整体构建基础。

build文件

最基本的java程序,它的build.gradle文件就一句话:

apply plugin: 'java'

最基本的Android项纤液目,它的build.gradle如下:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'com.android.tools.build:gradle:0.5.6'

}

}

apply plugin: 'android'

android {

compileSdkVersion 17

}

我们一步步来分析一下上面三部分的内容。

buildscript{...} 配置了驱动build的代码,它声明将在Maven中央仓库,取一个classpath dependency,也就是Android plugin for Gradle v0.5.6

apply plugin 指明了用到的plugin是android,就像前面java程序中,用的plugin是java一样

android{...} 中配置了所有android构建的参数,这里也就是Android DSL的入口点。

默认的,只有目标编译环境是必要的,也就是compileSdkVersion这个属性。这和以前在project.properties中的target属性类模竖岩似。

值得注意的是,如果你在Android项目中写 apply plugin:java 而不是apply plugin:android的话,将会build失败。

Gradle中的build.gradle文件

gradle项目中的 build.gradle 文件是指定依赖信息的配置中心。这个文件中的模块分为如下几个模块:

该属性指定了本gradle工程的版本号

定义方式形如下例:

定义方式形如下例:

本属性定义了源码语法使用的java级别。

定义方式形如下例:

这一段语法如下如所示为例:

如何先从本地缓存获取依赖,找不到依赖才从中央仓库设置?

这种需要设置 repositories 如下:

类似于maven工程的localPath,gradle可以通过设置系统环境变量 GRADLE_USER_HOME 来指定本地缓存路径。

如下图所示:

gradle工程中,所有的jar包坐标都在dependencies 属性中放置。每一个jar的坐标都有三个基本元素组成(groupId, name, version,类似于maven的坐标)。

一个典型的表示如下所示:

build.gradle的构建

/**

* build.gradle在编译过程中经过三个阶段

* 1.初始化阶段:通过编译settings.gradle查找有多少个module,

* 2.配置阶段:据不同的module创建对应的Project对象并解析build.gradle保存有序task任务。

* 解析过程中会笑胡运行那些不在doFirst{}/doLast{}中的任务。

* 3.执行阶段:会执行那些doFirst{}/doLast{}等task任务

*

* build.gradle是使用groovy语言编写的,groovy和java是互通的耐厅,所以也可以使用java语言编写,

* groovy中已经为我们编好了很多task,可以直接使用例如:delete/copy/dependsOn/等,可以昌升隐通过指定type类型执行不同的action

* task delete(type : Delete){

*      delete ''

* }

*

*/

关于gradlebuild和gradlebuild报错的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表