gradle项目构建
2015-09-18 16:13
232 查看
1、gradle的概念
2、gradle配置jar包,和libs文件夹导入jar包的区别
3、签名打包:
(1)Studio
(2)命令行
(3)gradle wrapper的原理
4、BuildConfig的使用
5、简单介绍module中build.gradle文件参数含义
一、gradle的概念:
gradle是一个构建工具
gradle是以Groovy语言为基础的
gradle主要面向的是Java语言
打开Android Studio内置的终端,在输入如下命令查看gradle版本:
如果是第一次运行这个命令,系统会帮我们下载gradle到本地,下载到的路径是:
![](http://www.th7.cn/d/file/p/2015/07/02/b1f617030cd662e57af9713f5774d5fe.jpg)
输入上述命令后,查看到gradle的版本2.2.1,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/66d8fd84bdad04fbdfc69750cbd3c8d8.png)
二、通过gradle来导入jar包:
我们在上一篇文章中第二段的第3小节中讲到了通过拷贝文件到libs文件夹来导入jar包。这次来讲一下怎么通过gradle来配置jar包。我们还是以谷歌的gjson.jar为例,如果之前已经通过拷贝文件方式倒入过了,请先自行删掉。
1、通过gradle配置第三方jar包
我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件。关于build.gradle文件中具体内容的含义,我们将在最后一段进行讲解。
我们先来看一下名为app的这个module,它的build.gradle对应的图形界面其实是下面这个Project Stucture:
![](http://www.th7.cn/d/file/p/2015/07/02/c00d84004baa45f797e127294b270cf3.jpg)
上图中,切换到dependencies标签下,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/c13bd720c6d6c25fc1b48fb8e3ac5b48.jpg)
上图中,点击添加,然后选择"Library dependency",弹出如下界面:
![](http://www.th7.cn/d/file/p/2015/07/02/b760b7818e5e6505d66d05a18319da81.png)
上图中,我们在搜索框中输入“gson”,然后确定,就弹出了箭头处的我们需要的jar包,添加它即可:
![](http://www.th7.cn/d/file/p/2015/07/02/88b73d9f9ef579ee32cf482b1ab3f1ab.jpg)
之后我们会发现,app这个module的build.gradle中多了一行代码,表示引入了gson.jar:
![](http://www.th7.cn/d/file/p/2015/07/02/ef48bbe01d40aaba49ffacffb15f3ea5.png)
其实,如果你能记得住上方这行代码,直接写出代码来也是可以导入的。
此时,gson这个jar包不再是出现在libs这个文件夹下了,而是出现在最下方的External Libraries中,如下图所示:(而且是最新版本哦)
![](http://www.th7.cn/d/file/p/2015/07/02/c87b18a5193fd8bd2f32144e9f9d2a03.png)
2、gradle导入jar包的特点:(和libs文件夹导入jar包的区别)
gradle导入jar包更方便,一行代码即可搞定。不像后者那样还要自己去官方下载。
如果官方将jar包更新了,我们只需要在build.gradle中改一下版本号就行了,不用重新去官网下载。
3、通过gradle导入的jar包是从哪里来的:
需要注意的是:不是所有的jar包都是可以通过gradle来导入的。那通过gradle导入的jar包是从哪里来的呢?解释如下:
我们发现HelloWorld这个project的目录下有一个build.gradle文件,打开它:
![](http://www.th7.cn/d/file/p/2015/07/02/7775f51d94b8e4306ab06722287e8c9e.png)
上图中第17行的"jcenter()"的意思是,所有通过gradle导入的jar包都是从http://bintray.com/bintray/jcenter这个中央仓库上扒下来的。如果你需要的jar包在这个网站上没有,那就无法通过gradle的方式来导入哦。
顺便提一下,上图中第8行的classpath中的gradle 1.1.0是android的一个gradle插件(也是从中央仓库扒下来的)。而我们自己使用的gradle版本如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/8a0bdacc2b3ef1f2e7e083e1cab7ceaa.jpg)
我们自己下载好的gradle的路径如下:
![](http://www.th7.cn/d/file/p/2015/07/02/08ecce141a8f00584c2e6fa09a28a4d9.jpg)
三、签名打包的两种方式:
注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。
如果不知道签名是啥意思,请自行百度哦。在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application",
1、方式1:通过Android Studio进行签名:
选中app这个module,选择菜单栏"Build-Generate signed apk":
![](http://www.th7.cn/d/file/p/2015/07/02/79eca8e3bd0fbcea00adab873e84d136.png)
弹出如下界面:
![](http://www.th7.cn/d/file/p/2015/07/02/989355e54e17d249b36bb7015e0128d3.jpg)
上图中,如果你是第一次使用签名,就单击红框部分创建一个新的签名;如果你之前有过签名的文件,就选择蓝框部分进行导入即可。那我就先选择红框部分吧:
![](http://www.th7.cn/d/file/p/2015/07/02/ee88f5f9f912c582623d59d85efa6042.png)
![](http://www.th7.cn/d/file/p/2015/07/02/4c7740889a4174370ad254050f15ba58.png)
![](http://www.th7.cn/d/file/p/2015/07/02/f21e5afed7be6e84aafd3f3a85a52718.jpg)
![](http://www.th7.cn/d/file/p/2015/07/02/f105c741ec12911f5e4fcc9de15cbc40.jpg)
上图中,点击"finish"之后,可以看到Android Studio的最下方显示:Gradle正在执行assembleRelease这样一个任务,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/86b28171571ffea7464a4bcecff6dacf.png)
生成签名好的apk之后,会弹出提示:
![](http://www.th7.cn/d/file/p/2015/07/02/5670aa7360826a7cfdcb2e92fde2838f.png)
![](http://www.th7.cn/d/file/p/2015/07/02/b2991a654ebc0f73826b7404d3aff124.png)
2、方式2:通过命令行的方式进行签名:
(1)加载Key Store:
我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。
打开Project Stucture图形化界面:
![](http://www.th7.cn/d/file/p/2015/07/02/54eedb46e5bb8122cae8c1dcb84b5b0b.jpg)
![](http://www.th7.cn/d/file/p/2015/07/02/a9600d003e2f0e97fbb8c44bc810dac2.jpg)
上图中,选中app这个module,然后切换到singning标签栏,紧接着点击添加,然后生成release签名信息,紧接着点击"OK"。接着做如下操作:
![](http://www.th7.cn/d/file/p/2015/07/02/8e7dbba1a288687a6c490c094a489631.jpg)
上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。
操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:
![](http://www.th7.cn/d/file/p/2015/07/02/aa6600665b3a7a54bb7d1643bbc6b9f1.png)
然后执行菜单栏的"build-clean Project":
![](http://www.th7.cn/d/file/p/2015/07/02/68f5377dc1a00f96b5f4ab787121d8e9.png)
(2)生成realease版本的apk:
紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)
如果运行成功,效果如下:
![](http://www.th7.cn/d/file/p/2015/07/02/fbb49a14a1494c996f943ef474e32a63.png)
生成的签名好的apk在如下位置:
![](http://www.th7.cn/d/file/p/2015/07/02/a5166cc51d8b669917a62d32806689a4.jpg)
3、为什么要使用gradlew命令而不是gradle命令:
在HelloWorld工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:
![](http://www.th7.cn/d/file/p/2015/07/02/521f752cc87faa5f3f21a0ffb98e88c5.png)
上图代表着HelloWorld这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?
如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。
四、BuildConfig文件:
BuildConfig是IDE自动生成的一个类,在elipse中即存放在gen目录下(如R文件)。而在Adroid Studio中,BuildConfig文件存放的位置是:app/build/generated/source/buildconfig/dubug/<packagename>/BuildConfig.java中。如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/1f3a8811079cafca0d1afee18956dbf1.png)
五、module中build.gradle文件参数含义:
主要是module的build.gradle,截图如下:
![](http://www.th7.cn/d/file/p/2015/07/02/dc8b808163a1318c6205c3b55d939522.png)
01行:apply plugin: 'com.android.application' 表示该module是这个应用程序的module
15行:applicationId "com.smyhvae.helloworld" 应用程序的包名
16、17行:向下兼容的最小版本、编译版本。 注:在app/src/main/AndroidManifest.xml中不再出现这个信息了。
23行:需不需要利用24行的proguard文件来混淆代码。在release状态下,最好改为true。
2、gradle配置jar包,和libs文件夹导入jar包的区别
3、签名打包:
(1)Studio
(2)命令行
(3)gradle wrapper的原理
4、BuildConfig的使用
5、简单介绍module中build.gradle文件参数含义
一、gradle的概念:
gradle是一个构建工具
gradle是以Groovy语言为基础的
gradle主要面向的是Java语言
打开Android Studio内置的终端,在输入如下命令查看gradle版本:
gradlew -v
如果是第一次运行这个命令,系统会帮我们下载gradle到本地,下载到的路径是:
![](http://www.th7.cn/d/file/p/2015/07/02/b1f617030cd662e57af9713f5774d5fe.jpg)
输入上述命令后,查看到gradle的版本2.2.1,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/66d8fd84bdad04fbdfc69750cbd3c8d8.png)
二、通过gradle来导入jar包:
我们在上一篇文章中第二段的第3小节中讲到了通过拷贝文件到libs文件夹来导入jar包。这次来讲一下怎么通过gradle来配置jar包。我们还是以谷歌的gjson.jar为例,如果之前已经通过拷贝文件方式倒入过了,请先自行删掉。
1、通过gradle配置第三方jar包
我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件。关于build.gradle文件中具体内容的含义,我们将在最后一段进行讲解。
我们先来看一下名为app的这个module,它的build.gradle对应的图形界面其实是下面这个Project Stucture:
![](http://www.th7.cn/d/file/p/2015/07/02/c00d84004baa45f797e127294b270cf3.jpg)
上图中,切换到dependencies标签下,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/c13bd720c6d6c25fc1b48fb8e3ac5b48.jpg)
上图中,点击添加,然后选择"Library dependency",弹出如下界面:
![](http://www.th7.cn/d/file/p/2015/07/02/b760b7818e5e6505d66d05a18319da81.png)
上图中,我们在搜索框中输入“gson”,然后确定,就弹出了箭头处的我们需要的jar包,添加它即可:
![](http://www.th7.cn/d/file/p/2015/07/02/88b73d9f9ef579ee32cf482b1ab3f1ab.jpg)
之后我们会发现,app这个module的build.gradle中多了一行代码,表示引入了gson.jar:
![](http://www.th7.cn/d/file/p/2015/07/02/ef48bbe01d40aaba49ffacffb15f3ea5.png)
其实,如果你能记得住上方这行代码,直接写出代码来也是可以导入的。
此时,gson这个jar包不再是出现在libs这个文件夹下了,而是出现在最下方的External Libraries中,如下图所示:(而且是最新版本哦)
![](http://www.th7.cn/d/file/p/2015/07/02/c87b18a5193fd8bd2f32144e9f9d2a03.png)
2、gradle导入jar包的特点:(和libs文件夹导入jar包的区别)
gradle导入jar包更方便,一行代码即可搞定。不像后者那样还要自己去官方下载。
如果官方将jar包更新了,我们只需要在build.gradle中改一下版本号就行了,不用重新去官网下载。
3、通过gradle导入的jar包是从哪里来的:
需要注意的是:不是所有的jar包都是可以通过gradle来导入的。那通过gradle导入的jar包是从哪里来的呢?解释如下:
我们发现HelloWorld这个project的目录下有一个build.gradle文件,打开它:
![](http://www.th7.cn/d/file/p/2015/07/02/7775f51d94b8e4306ab06722287e8c9e.png)
上图中第17行的"jcenter()"的意思是,所有通过gradle导入的jar包都是从http://bintray.com/bintray/jcenter这个中央仓库上扒下来的。如果你需要的jar包在这个网站上没有,那就无法通过gradle的方式来导入哦。
顺便提一下,上图中第8行的classpath中的gradle 1.1.0是android的一个gradle插件(也是从中央仓库扒下来的)。而我们自己使用的gradle版本如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/8a0bdacc2b3ef1f2e7e083e1cab7ceaa.jpg)
我们自己下载好的gradle的路径如下:
![](http://www.th7.cn/d/file/p/2015/07/02/08ecce141a8f00584c2e6fa09a28a4d9.jpg)
三、签名打包的两种方式:
注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。
如果不知道签名是啥意思,请自行百度哦。在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application",
1、方式1:通过Android Studio进行签名:
选中app这个module,选择菜单栏"Build-Generate signed apk":
![](http://www.th7.cn/d/file/p/2015/07/02/79eca8e3bd0fbcea00adab873e84d136.png)
弹出如下界面:
![](http://www.th7.cn/d/file/p/2015/07/02/989355e54e17d249b36bb7015e0128d3.jpg)
上图中,如果你是第一次使用签名,就单击红框部分创建一个新的签名;如果你之前有过签名的文件,就选择蓝框部分进行导入即可。那我就先选择红框部分吧:
![](http://www.th7.cn/d/file/p/2015/07/02/ee88f5f9f912c582623d59d85efa6042.png)
![](http://www.th7.cn/d/file/p/2015/07/02/4c7740889a4174370ad254050f15ba58.png)
![](http://www.th7.cn/d/file/p/2015/07/02/f21e5afed7be6e84aafd3f3a85a52718.jpg)
![](http://www.th7.cn/d/file/p/2015/07/02/f105c741ec12911f5e4fcc9de15cbc40.jpg)
上图中,点击"finish"之后,可以看到Android Studio的最下方显示:Gradle正在执行assembleRelease这样一个任务,如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/86b28171571ffea7464a4bcecff6dacf.png)
生成签名好的apk之后,会弹出提示:
![](http://www.th7.cn/d/file/p/2015/07/02/5670aa7360826a7cfdcb2e92fde2838f.png)
![](http://www.th7.cn/d/file/p/2015/07/02/b2991a654ebc0f73826b7404d3aff124.png)
2、方式2:通过命令行的方式进行签名:
(1)加载Key Store:
我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。
打开Project Stucture图形化界面:
![](http://www.th7.cn/d/file/p/2015/07/02/54eedb46e5bb8122cae8c1dcb84b5b0b.jpg)
![](http://www.th7.cn/d/file/p/2015/07/02/a9600d003e2f0e97fbb8c44bc810dac2.jpg)
上图中,选中app这个module,然后切换到singning标签栏,紧接着点击添加,然后生成release签名信息,紧接着点击"OK"。接着做如下操作:
![](http://www.th7.cn/d/file/p/2015/07/02/8e7dbba1a288687a6c490c094a489631.jpg)
上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。
操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:
![](http://www.th7.cn/d/file/p/2015/07/02/aa6600665b3a7a54bb7d1643bbc6b9f1.png)
然后执行菜单栏的"build-clean Project":
![](http://www.th7.cn/d/file/p/2015/07/02/68f5377dc1a00f96b5f4ab787121d8e9.png)
(2)生成realease版本的apk:
紧接着在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)
gradlew assembleRelease
如果运行成功,效果如下:
![](http://www.th7.cn/d/file/p/2015/07/02/fbb49a14a1494c996f943ef474e32a63.png)
生成的签名好的apk在如下位置:
![](http://www.th7.cn/d/file/p/2015/07/02/a5166cc51d8b669917a62d32806689a4.jpg)
3、为什么要使用gradlew命令而不是gradle命令:
在HelloWorld工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开它:
![](http://www.th7.cn/d/file/p/2015/07/02/521f752cc87faa5f3f21a0ffb98e88c5.png)
上图代表着HelloWorld这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?
如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。
四、BuildConfig文件:
BuildConfig是IDE自动生成的一个类,在elipse中即存放在gen目录下(如R文件)。而在Adroid Studio中,BuildConfig文件存放的位置是:app/build/generated/source/buildconfig/dubug/<packagename>/BuildConfig.java中。如下图所示:
![](http://www.th7.cn/d/file/p/2015/07/02/1f3a8811079cafca0d1afee18956dbf1.png)
五、module中build.gradle文件参数含义:
主要是module的build.gradle,截图如下:
![](http://www.th7.cn/d/file/p/2015/07/02/dc8b808163a1318c6205c3b55d939522.png)
01行:apply plugin: 'com.android.application' 表示该module是这个应用程序的module
15行:applicationId "com.smyhvae.helloworld" 应用程序的包名
16、17行:向下兼容的最小版本、编译版本。 注:在app/src/main/AndroidManifest.xml中不再出现这个信息了。
23行:需不需要利用24行的proguard文件来混淆代码。在release状态下,最好改为true。
相关文章推荐
- 安卓开发基础之tween动画基本使用,代码教学
- MVC 发布到 windows2003遇到 'System.Web.WebPages.Razor 错误提示
- 学习ULua之委托
- Laravel的安装
- cocos2d-js cc.DrawNode用法示例
- 第10章 并发
- 2567:寻梦
- 解决spring要求jdk1.5或更高的问题
- 待人友善是教养 独来独往是性格
- Android学习——PopupWindow
- HDU 1015 Safecracker
- Linq 看文章到第一个小项目
- 部署虚拟机做服务器
- Jboss7使用指定jdk(续)
- IAR程序中获取堆指针与栈指针
- 设计模式之职责链模式(Chain Of Responsibility)
- Android Intent打开任意文件的通用方式
- 1 Two Sum
- fastJson中一些问题总结
- request.getParameterValues()