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

来源:互联网 发布:上海企业seo外包 编辑:程序博客网 时间:2024/05/17 18:40

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

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 基本概念

这里写图片描述

  1. 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的普及以及远程仓库的完善,这种依赖渐渐的会变得非常不常见,但是你需要知道有这种依赖的。

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

  2. GradleLearn/gradle
    这个目录下有个 wrapper 文件夹,里面可以看到有两个文件,我们主要看下 gradle-wrapper.properties 这个文件的内容:
    这里写图片描述

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

  1. 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

1 0
原创粉丝点击