您的位置:首页 > 其它

Gradle学习笔记 ( 基础、打包、多渠道打包、adb安装apk)

2016-10-29 14:06 375 查看
Gradle学习笔记 ( 基础、打包、多渠道打包、adb安装apk)

By 吴小博

参考文献

http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/

http://stormzhang.com/devtools/2015/01/05/android-studio-tutorial5/

http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/

https://my.oschina.net/bv10000/blog/482604

一 基础知识

(1)什么是Gradle?

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

(2) Gradle 基本概念



GradleLearn01/app/build.gradle





说明 :

buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。

proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 /tools/proguard/proguard-android.txt , 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt , 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则,由于是开源项目,这里未进行混淆。最终混淆的结果是这两部分文件共同作用的。

(3) compile project(‘:extras:ShimmerAndroid’) 如果项目中存在其他 Module,(你可以理解成Android Library)由于Gradle的普及以及远程仓库的完善,这种依赖渐渐的会变得非常不常见,但是你需要知道有这种依赖的。

GradleLearn01/extras/ShimmerAndroid/build.gradle

每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是 apply plugin: ‘com.android.library’

GradleLearn/gradle

这个目录下有个 wrapper 文件夹,里面可以看到有两个文件,我们主要看下 gradle-wrapper.properties 这个文件的内容:



可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。

GradleLearn/build.gradle

这个文件是整个项目的gradle基础配置文件



内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了android gradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本。

5.GradleLearn /settings.gradle

这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们来看看9GAG该文件的内容:



文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。

二 GRADLE命令详解

1命令行Gradle编译的过程

(1)切换到GradleLearn01项目的根目录,执行 ./gradlew -v 来查看下项目所用的Gradle版本

如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙



下载成功会看到如下信息:



(2)接着执行 ./gradlew clean执行这个命令会去下载Gradle的一些依赖,下载成功并编译通过时会看到如下信息:



最后执行 ./gradlew build

这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了



紧接着在 GradleLearn/app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签名的。然后就可以直接安装apk查看运行效果了。

2.Gradle常用命令

./gradlew -v ./gradlew clean ./gradlew build, 这里注意是./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在GradleLearn/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。

理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。

./gradlew -v 版本号

./gradlew clean 清除GradleLearn/app目录下的build文件夹

./gradlew build 检查依赖并编译打包

这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如

./gradlew assembleDebug 编译并打Debug包

./gradlew assembleRelease 编译并打Release的包

除此之外,assemble还可以和productFlavors结合使用

./gradlew installRelease Release模式打包并安装

./gradlew uninstallRelease 卸载Release模式包

三 GRADLE多渠道打包

1. 在AndroidManifest.xml里面会有这么一段:



2. 第二步 在build.gradle设置productFlavors



或者批量修改



直接执行 ./gradlew assembleRelease , 然后就可以静静等待打包完成。

说明

./gradlew assembleDebug

./gradlew assembleRelease

除此之外 assemble 还能和 Product Flavor 结合创建新的任务,其实 assemble 是和 Build Variants 一起结合使用的,而 Build Variants = Build Type + Product Flavor , 举个例子大家就明白了:

如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:

./gradlew assembleWandoujiaRelease

如果我们只打wandoujia渠道版本,则:

./gradlew assembleWandoujia

此命令会生成wandoujia渠道的Release和Debug版本

同理我想打全部Release版本:

./gradlew assembleRelease

这条命令会把Product Flavor下的所有渠道的Release版本都打出来。

完整的gradle脚本









四 Adb命令安装apk

1、mac配置adb环境变量

1.找到android sdk的本地路径,adb命令在platform-tool下面,记为XXXX

我的路径是(/Applications/eclipse/android-sdk-mac_x86/platform-tools)

2.打开终端输入touch .bash_profile

open -e .bash_profile 点回车

3.添加路径.bash_profile打开了,我们在这里添加路径,

如果打开的文档里面已经有内容,我们只要之后添加;XXXX(注意前面一定要用分号隔开),

如果是一个空白文档的话,我们就输入一下内容

export PATH=${PATH}:XXXX

保存,关掉这个文档,

4.终端输入命令 source .bash_profile

5.终端输入命令 adb点回车,如果未显示command not found,说明此命令有效,环境便亮设置完成。

2.基本命令

adb devices 显示所有设备

adb uninstall 包名 卸载

adb (-s 设备名) install 路径/文件名.apk
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle 渠道