Android中使用Gradle来构建App项目的入门指南

gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的:

1. 方便复用代码和资源
2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不同环境的apk(debug,release)
3. 方便配置,扩展,自定义构建过程
4. 良好的IDE集成

为什么选择Gradle?
Gradle主要有以下几个有点:

1. 使用领域驱动语言(DSL)来描述构建逻辑
2. 构建脚本使用Groovy,可以方便的定制构建逻辑
3. 内建的依赖管理系统,使用Maven或者Ivy
4. 非常灵活。可以使用最佳实践但并不强制
5. 良好的IDE支持

Gradle项目使用项目根目录下的build.gradle文件来配置
一个最简单的Java项目的build.gradle如下

apply plugin: 'java'

这表示改项目会使用Gradle的java插件,该插件是Gradle默认提供的,java插件提供了构建java应用和运行测试的功能。

最简单的Android项目build.gralde

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.11.1' } } apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.0" }

该Android构建文件包含3个部分:
1.buildscript { ... } 配置驱动构建过程的代码,意思就是buildscript中的配置仅仅在构建过程中起作用,也就是构建程序所使用的配置。
上面的代码中就声明了我们的构建程序会使用Maven中央仓库,并且有一个classpath依赖是指向一个Maven库的。这个Maven库就是Android Gradle插件,版本号是0.11.1。

2.随后就是使用这个Android插件,和之前使用Java插件一样。

3.最后,android { ... }配置了Android项目构建时需要的所有参数。
默认情况下,只需要指定compileSdkVersion和buildtoolsVersion,compileSdkVersion指定使用哪个版本的sdk编译,buildToolsVersion指定使用哪个版本的构建工具。
注意点:
1. 只需要使用android插件,再使用Java插件会报错.
2. 在local.properties中使用sdk.dir属性指定SDK路径,或者你可以使用ANDROID_HOME环境变量。

项目结构
Gradle采用约定优于配置的原则,最简单方式是使用一个默认的目录结构。当然目录结构是可以自己修改的。

默认情况下,android gradle项目的代码都在src目录下,src下会有两个目录main和androidTest,其中main目录下是项目代码,androidTest目录下是测试代码。

src/main/ src/androidTest/

在main和androidTest目录下面,针对不同类型的code,又不会不同的目录。
对于Java和Android的Gradle插件,Java代码和Java资源分别对应了java目录和resources目录。Android插件还需要一些其他的目录和文件,比如

AndroidManifest.xml res/ assets/ aidl/ rs/ jni/

下面我们来看一下如何更改这些默认的配置。

Android工程,默认情况下,java文件和resource文件分别在src/main/java和src/main/res目录下,在build.gradle文件,andorid{}里面添加下面的代码,便可以将java文件和resource文件放到src/java和src/resources目录下。(注意,如果你在gradle文件中修改了,只需要重新sync一下,gradle会自动创建新的目录,并将对应的文件移动到新的目录下)

sourceSets { main { java { srcDir 'src/java' } resources { srcDir 'src/resources' } } }

更简便的写法是

sourceSets { main.java.srcDirs = ['src/java'] main.resources.srcDirs = ['src/resources'] }

数组里其实是可以指定多个目录,这样就可以将代码和资源放置到多个目录下。
在看一个Android项目的例子:

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'] } androidTest.setRoot('tests') } }

这里的main code其实使用的就是Android Gradle的默认值,而androidTest不再使用默认的androidTest目录,而是使用tests目录。

时间: 2024-10-29 00:16:54

Android中使用Gradle来构建App项目的入门指南的相关文章

android中怎么把别人的开源项目导入自己的项目中使用?

问题描述 android中怎么把别人的开源项目导入自己的项目中使用? 我最近在做一个android小项目,项目中需要用到一些别人写好的功能,我好不容易找到以后,下载下来解压开,发现不是一个我想象中的.jar 文件的压缩包,而是一个文件夹里面有一大堆的文件,大多数不认识,不知道怎么用到自己项目上.. 把src下的文件直接考入我的项目里也不行,都报错,导出生成一个jar包再引入也不好使.. 怎么办,求大神帮忙.. 解决方案 注意看人家留下来的说明文件,什么环境,依赖什么库等.没有说明文件只能根据项目

Android中通过样式来去除app的头及界面全屏(备忘)的实现方法_Android

在style中如下面那样定义: <style name="mystyle"> <item name="android.windowNoTitle">true</item><!--没标题--> <item name="android.windowFullscreen">true</item><!--全屏显示,如果想值随着某个值改变而改变,可以用?的方式来引用-->

构建渐进式 Web 应用入门指南

本文讲的是构建渐进式 Web 应用入门指南, 原文地址:A beginner's guide to making Progressive Web Apps 原文作者:uve 译文出自:掘金翻译计划 本文永久链接:https://github.com/xitu/gold-miner/blob/master/TODO/a-beginners-guide-to-making-progressive-web-apps.md 译者:Haichao Jiang 校对者:sun leviding 构建渐进式

Android中TabLayout+ViewPager 简单实现app底部Tab导航栏

前言 在谷歌发布Android Design Support Library之前,app底部tab布局的实现方法就有很多种,其中有RadioGroup+FrameLayout.TabHost+Fragment.FragmentPagerAdapter+ViewPager等方法,虽然这些方法虽然能达到同样的效果,但我个人总觉得有些繁琐.然而,Google在2015的IO大会上,给开发者们带来了全新的Android Design Support Library,里面包含了许多新控件,这些新控件有许多

java服务器端集成环信api,我的服务器端没有使用maven 或者 gradle 来构建服务器项目,手动怎么弄

问题描述 下面的两张图怎么弄,手动集成直接把lib里面的jar复制到自己项目里面吗?

Android中Retrofit+OkHttp进行HTTP网络编程的使用指南_Android

Retrofit介绍:Retrofit(GitHub主页https://github.com/square/okhttp)和OkHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(CallAdapter), 比方说RxJava,Java8, Guava.你可以使用不同的反序列化工具(

Android中的ViewPager视图滑动切换类的入门实例教程_Android

ViewPager引入示例首先让大家有个全局的认识,直接上个项目,看看仅仅通过这几行代码,竟然就能完成如此强悍的功能. 效果图: 实现了三个view间的相互滑动. 第一个VIEW向第二个VIEW滑动.第二个VIEW向第三个VIEW滑动 一.新建项目,引入ViewPager控件ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 1.在主布局文件里加入 <RelativeLayout xmlns:android="http://schemas.a

Android中Retrofit+OkHttp进行HTTP网络编程的使用指南

Retrofit介绍: Retrofit(GitHub主页https://github.com/square/okhttp)和OkHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(CallAdapter), 比方说RxJava,Java8, Guava.你可以使用不同的反序列化工具

Android中的ViewPager视图滑动切换类的入门实例教程

ViewPager引入示例 首先让大家有个全局的认识,直接上个项目,看看仅仅通过这几行代码,竟然就能完成如此强悍的功能. 效果图: 实现了三个view间的相互滑动. 第一个VIEW向第二个VIEW滑动.第二个VIEW向第三个VIEW滑动 一.新建项目,引入ViewPager控件 ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 1.在主布局文件里加入 <RelativeLayout xmlns:android="http://schemas