Android Gradle 介绍 官方教程

这篇教程是根据官方的gradle视频教程整理出来的。

https://classroom.udacity.com/

这里有很多google官方做的视频教程。

自从遗弃了eclipse,猛追as以后,出现一个gradle。对于彩笔的我,gradle是个鸟玩意。完全不懂。相信玩转gradle的人也不多。好在用as创建项目,as会做好默认gradle的脚本,如下:

虽然不懂gradle,但是随便一篇基础的android gradle教程就可以了。然而,随着项目的壮大,在app.gradle这个脚本里出现了各种各样的没见过问题,然后各种google,各种总结,各种不知道为什么。

如果你更深入的和一个人打交道,哪么,你首先要做的就是去了解这个人。开始吧!

在app.gradle脚本里android节点下,compileSdkVersion、buildToolsVersion、defaultConfig的基本设置很显而易见。我们来了解一下buildTypes。

buildTypes

buildTypes 构建类型,一般可以分为debug(主要用于开发阶段)和release(生产发布阶段)

在debug或release还可以结合一些特定的产品风格,例如应用的免费版或付费版。(也就是说,如果你的应用需要有免费版和付费版,可能你首先想到的是做两个项目,一个免费版的项目和一个付费版的项目。但是如果你知道了产品风格这个东西,就会懂了,可以在一个项目里搞定,只需要在把区别代码放入对应的两个风格源里。后面会讲到。)

我们以release设置为例,来了解节点下的一些配置:

1. minifyEnabled false/true 设置是否使用优化打包

2. proguardFiles 设置proguard文件(用于混淆代码)

Resource Merging 资源整合

android gradle 可以允许你自定义的行为,可以创建各来源组的整体轮转,依赖于你正建构的变种,它将合并各来源。需要注意的是,有位于来源主要部分的主要来源组(src/main结构目录),这是目前为止我们一直存放我们所有代码的地方。此外,每个产品风格都有一个来源组(如图,src/free、paid、debug、release等)。

举个例子(参照上图结构):

假如我们有一个免费的和一个付费的产品风格。每个构建类型还有一个来源组,在这种情况下调试和发布。最后,每个最终变种还有一个来源,分别对应来源 free Debug、free Release、paid Debug、paid Release四个来源。如果有在付费风格而非免费风格中需要的来源和资源,可以将其放入付费来源;同样,如果有在调试风格而非发布风格中的来源和资源,可以将其放入调试来源。

风格定制

上面讲到的产品风格(免费版、付费版),不是放在buildTypes中,需要放在同级的productFlavors中。

产品风格如何编写呢,请看下图:

gradle同步后,在as的左下角的build variants窗体中看到生成的变体,如图:

这些不同的风格实际上并不会执行任何不同的操作。默认情况下,主源(src/main)集中的源和资源包包括在所有应用变种中。但是,如果我们声明其他风格,Android插件会自动为我们创建新的源集。所以,如果我们要包括专用于付费版本的代码,则可以有源付费Java代码和源付费资源。同样的,也可以有源免费Java代码和源免费资源。Gradle构建每个应用变种时,会自动打包每个风格特定的文件中的其他源。

你也可以在不同风格中设置defaultConfig。

 /*免费版风格 的 应用*/
        free {
            applicationId "com.zrb.gradletest.free"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }

依据版本的依赖关系配置

Android gradle 插件可以为每个构建变种创建一组配置。这允许我们为我们的每个变种独立地管理依赖性。以此,我们将有通常的编译和运行时配置。箭头表示扩展关系(运行时配置可扩展编译配置)

免费的运行时配置可扩展免费的编译配置,而且免费编译配置扩展默认编译配置。这就意味着免费变化将包括所有的默认依赖性,和免费配置的依赖性,但是不包括付费配置的依赖性。

设置版本依赖关系:

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    testCompile ‘junit:junit:4.12‘
    freeCompile ‘com.android.support:appcompat-v7:23.1.1‘
}

应用签名

对应用签名,需要3个步骤:1 创建密钥库和密钥;在as菜单栏点击Build,选择Generate Signed APK 进行创建。

2 在build.gradle中创建登录配置;在Project Structure中的Signing进行设置

填写确定后,build.gradle会自动更新,并生成signingConfigs配置脚本。

3 将登录配置赋给某个构建类型;还在Project Structure中,如图操作

确定后,会在build.gradle中的相应构建类型中生成签名指向,如下图:

Multidex支持

有的人可能会遇到这样的问题,当项目的方法数大于65k时,这些方法不能集成到一个dex中,这里就需要经行Multidex配置了。在build.gradle的defaultConfig节点下添加 multiDexEnable true。

配置Proguard

Android插件可以通过去除不使用的代码和资源来缩小应用的大小。它借助一个称为Proguard的工具来执行此操作。Proguard可以执行许多有趣的工作,包括通过你的类和方法提供无意义的名称来混淆你的代码。但是,这主要在你确实担心代码被反向工程时有意义。出于我们的目的,我们希望在构建类型上配置的属性是 minifyEnabled 和 shrinkResources.我们已经声明了对Google移动服务库的依赖性,但是我们其实并没有使用这个库里的任何内容。Proguard非常智能,他能推断出未使用的代码,并将其从我们的apk中去除。移动服务库还包括很多资源,如登录按钮的绘制图。开启shrinkResources会除去任何未使用的资源。

Android测试

这块是很有内容可挖的,如果能掌握andrid测试,对项目质量的提升会很有帮助的。我以后会对android测试进行更加细致的研究。在这里主要介绍一下。

主要分单元测试和链接测试。

单元测试是在pc的Java VM上运行,也就是不需要在android设置上跑测试。

连接测试需要在设备上运行。

通常,测试非android相关的泛型类时,应该使用单元测试。实际上,由于 单元测试与模拟Android STK 的实现方法相违背,任何调用Android API 的代码都会出现异常。你应该使用像Makido这样的模拟框架来模拟合适的Android依赖或者也可以使用连接测试。另外,你可以在gradle建立的脚本中配置测试选项,从而构建模拟的Android实现方法来返回默认值,而非抛出错误。任何情况下,作为开发人员,都可以决定如何更好的编写你的测试,以及如何以这样的方式构建您的代码,从而简化测试。

链接测试应该用来测试依赖 Android API 的逻辑,或像集成测试 和 性能测试 等更高级的测试。记住,连接测试是被包装成APK的形式安装在设备上的。实际操作过程中,还会有更多需要开销的地方。

单元测试 和 连接测试 都有各自的源集,在src路径下,分别在叫做test和androidTest。测试也有“版本”的概念。允许你针对 构建类型 和 产品风格 编写测试,这些源集的命名惯例遵循与应用程序代码相同的模式,只是他们多了test和androidTest 前缀。

时间: 2024-08-02 02:34:07

Android Gradle 介绍 官方教程的相关文章

android官方教程从零开刷

学android开发已经有一段时间了,但是一直觉着很多东西记忆的不是很牢固,很多时候要用到的知识还要看笔记才能想起来,而且之前学android也是靠看书为主,东一块西一块,从来没有将学到的东西整合一下,google的官方教程是一套系统的教程,基本上包含了android的所有功能,所以决定将google教程走一遍,以便学习加深印象.从今天开始每周最少写两篇android学习笔记. 官网教程目录如下: Building Apps withMultimedia Building Apps withGr

【转】开发者教程:如何将Android应用发布到Google Play(Android Market)官方市场

原文网址:http://www.chinaapp.org/game/5594.html 作为一个专业的App开发者网站,竟然没有一篇讲述如何将Android App发布到Google Play的教程,这不允许出现,现在我们借力开发者的贡献将本文分享给更多的Android开发者. 相关教程推荐:苹果开发者如何将应用发布到Apple应用程序商店教程 还在苦恼于如何发布应用到Android市场吗?请跟随本教程,本教程将教你通过几个简单步骤完成发布应用到Android市场. 虽然步骤很简单,但也有相当多

构建工具的发展及Android Gradle快速上手

前话: 最近谷歌宣布官方不再维护Eclipse ADT了,之后将更加专注于Android Studio的功能和性能上的改进,早在2013年的Google IO大会上首次推出了Android Studio,当时刚出来的时候我就好奇的去下载体验了一下,想看一下新开发工具的优势在哪里,据官方介绍,最吸引我的一点就是使用Studio使用了Gradle编译系统,可以支持很灵活的定制需求,而我当时正在研究当成库使用的APK(就是现在的aar文件,不过当时还没有出身),刚好遇到了ADT编译系统的限制,所以当时

Android Gradle Plugin指南(一)——简介

原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Introduction 译者:google推出了全新的Android Studio集成开发环境,其中Android项目的结构与Eclipse的Android项目结构有很大的区别,原因就在于两开发环境使用的构建工具不同.Android Studio使用Gradle构建工具,Eclipse的ADT插件使用的是Ant构建工具.因为两个构建工具的区别,导致习惯

Android Studio初步使用教程

今年的Google全球开发者大会虽然没有新的Android系统和设备,但是还是推出了一些不错的产品,Android Studio就是其中之一.这个基于Intellij IDEA开发的Android IDE让很多人眼前一亮,其实时编写布局文件实时预览并适配多屏的功能可以说让苦于界面布局开发的人看到了希望.代码自动提示.运行响应速度.都比Eclipse来的要好.但这次推出的版本毕竟是预览版,所以改进的控件还有很大,大家也不要吐槽不好或难用,有空间,所以才有进步.Google也是将版本号置为0.1而非

Protobuf实现Android Socket通讯开发教程

本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. protobuf 适用的语言 正宗(Google 自己内部用的)的protobuf支持三种语言:Java .c++和Pyton,很遗憾的是并不支持.Net 或者 Lua 等语言,但社区的力量是不容忽视的,由于protobuf确实比J

eclipse再见,android studio 新手新手教程(一)基本设置

写在前面: 作为一个刚半仅仅脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后.遇到了一些问题,总结为例如以下: 1,代码复用性. findviewById,onclick事件等.一遍遍反复这类无聊的代码简直浪费生命,这个问题推荐通过依赖注入框架ButterKnife解决.直接一键生成布局中的全部控件,包含onclick点击事件,可是诸如行布局item里的控件.以及布局中include复用的布局要怎样使用框架解决.这个有待兴许再看. 还有一个代码反复

UltimateAndroid快速开发框架简介与教程(也是一套Android快速开发的教程)

UltimateAndroid是一套集成了许多现有优秀的Android开源类库并将之组合成一个整体的Android快速开发框架. github地址:https://github.com/cymcsg/UltimateAndroid 框架目前主要包含的功能有View Injection,ORM,异步网络请求和图片加载,自动化脚本测试,磁盘LRU等功能.同时提供了类似于TripleDes.Webview快速设置.Md5处理.String处理,Https处理等常用工具类,还有多种UI控件效果.并且这些

Android Gradle 自定义Task 详解

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 一:Gradle 是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.面向Java应用为主. 当前其支持的语言限于Java.Groovy.Kotlin和Scala,计划未来将支持更多的语言.基