转自:http://www.open-open.com/lib/view/open1415793464648.html

Gradle 基本概念

首先我们学习几个gradle 的脚本语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android build.gradle

build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
    //设置脚本的运行环境
    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包,以下为使用的代码块。

1
2
3
4
5
6
7
8
9
10
dependencies {
        //单文件依赖
    compile files('libs/android-support-v4.jar')  
    //某个文件夹下面全部依赖
    compile fileTree(dir: 'libs', include: '*.jar')
}
 
android {
     
}

远程依赖

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
repositories {
        //从中央库里面获取依赖
    mavenCentral() 
    //或者使用指定的本地maven 库
    maven{
        url "file://F:/githubrepo/releases"
    }  
    //或者使用指定的远程maven库
    maven{
        url "远程库地址"
    }
}
 
dependencies {
        //应用格式: packageName:artifactId:version
    compile 'com.google.android:support-v4:r13'}
 
android {
 
}

android library 依赖

对于项目依赖 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 文件。

引用脚本跟前面讲的依赖库相似

1
2
3
dependencies {
    compile(name: 'pulltorefresh', ext: 'aar')
}

最后,分享个maven库地址:http://mvnrepository.com/

来自:http://my.oschina.net/u/1471093/blog/341990

Android studio gradle配置!!!【转】的更多相关文章

  1. Android studio gradle配置完整版(转)

    Android studio gradle配置完整版https://my.oschina.net/u/1471093/blog/539075 Android studio 自定义打包apk名 - pe ...

  2. Android Studio Gradle配置工具开发

    by 蔡建良 2019-3-9 QQ: 304125648 Android Studio导入项目经常出现卡死的情况.针对Gradle更新配置的问题,网上已经有详细的方法,但也很烦索,步骤也很多. 因此 ...

  3. Android Studio gradle配置详解

    android gradle配置详解 AppExtension类及其属性 可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候 ...

  4. Android studio gradle配置

    什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. gr ...

  5. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

  6. Android Studio Gradle Build Running 特别慢的问题探讨

    本文的本本win7 64bit 6G android studio2.1 在运行程序的时候Gradle Build Running 特别慢,一个helloworld都快2min了 1.开启gradle ...

  7. Android studio gradle 打包 那些事

    总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

  8. 转:Android studio Gradle

    提高Android Studio中Gradle执行效率 分类: android studio2015-06-26 11:54 2374人阅读 评论(2) 收藏 举报 android studiogra ...

  9. 加速Android Studio/Gradle构建

    已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以 ...

随机推荐

  1. EntityFramework+Autofac+MVC+EasyUI 搭建公司基本服务项目

    去年年底用了2个星期的时间搭建了 这套框架,从ORM,IOC,MVC,EasyUI都仔细的研究了下,还有日志,异常等等.mvc 我已经开发过很多项目了,我就觉得自己写套框架,看看自己的水平如何.欢迎大 ...

  2. How Node.js Multiprocess Load Balancing Works

    As of version 0.6.0 of node, load multiple process load balancing is available for node. The concept ...

  3. Nginx学习之一-第一个程序Hello World

    本例子实现了一个简单的hello world程序.运行效果: 虚拟机Ubuntu中: win7中chrome浏览器: 一.config文件编写 Nginx提供了一种简单的方式将第三方的模块编译到Ngi ...

  4. 什么是JS事件冒泡

    什么是JS事件冒泡? 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个 ...

  5. logstash 分析nginx 错误日志

    [root@dr-mysql01 frontend-error]# cat logstash_error.conf input { file { type => "zj_fronten ...

  6. Android的数据存储方式(转)

    数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...

  7. python图片小爬虫

    import re import urllib import os def rename(name): name = name + '.jpg' return name def getHtml(url ...

  8. 国内常用ntp服务器ip地址

    ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)s1a.time.edu.cn 北京邮电大学s1b.time.edu.cn 清华大学s1c.time ...

  9. thinkphp 表名注意

    $db = "DomainInfo";//查找相关任务的结果表 $result = M($db); $rescc = $result->select(); var_dump( ...

  10. 超文本传输协议-HTTP/1.1

    超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...