安卓gradle使用

在这里插入图片描述

https://www.cnblogs.com/lsgxeva/p/13382844.html


是android 的主流编译工具
以前gradle因为编译过程的原因有点慢
与android studio关系紧密
对简单程序基本不需要配置代码,值使用android studio就可以完成编译和运行
对于复杂的多人合作项目会使用一些个性化配置提高开发效率
比如自定义一下编译包名字,对同一产品编译出免费版和付费版apk等
android studio 2.0发布之后,gradle升级为instant run,编译速度逆天

gradle编译周期

gradle里的项目和task,每个项目至少一个project,一个build.gradle就代表一个poject,每个project包含多少个task,task里包含很多action,action代码块里包含一些需要被执行的代码
编译过程关爱到了根据build相关文件聚合所有的project和task,执行task里的action,因为build.gradle里的task很多,所以用依赖逻辑保证执行顺序,几乎所有的task都需要依赖其他的task执行,没有依赖的task首先执行
编译分为三个阶段

初始化阶段:创建project对象,有多个gradle就创建多个project
配置阶段:这个阶段执行所有的编译脚本,同时创建项目的所有task,为执行阶段做准备
执行阶段:在这个阶段gradle根据传入的参数决定如何执行这些task,action的执行代码都在这里

gradle文件

实际上是一个app下面对应一个build.gradle,settings.gradle,然后下面是子app,子app有自己的build.gradle
setting.gradle定义哪些模块加入编译过程,单个模块的app是一般不需要这个文件,此文件在初始化的时候被执行
顶层的build.gradle里的配置用到所有的项目,典型配置里在buildscript里定义android编译工具的类路径仓库里的JCenter是一个maven库
allprojects里定义的属性会被应用到所有module里
apply插件里用了安卓的gradle插件,插件里提供编译打包等task
buildType里定义了编译类型,对调试和发布可以有不同配置

gradle wrapper

为了兼容旧版本产生
包括一些脚本文件和针对不同系统的运行文件,会自动下载对呀版本的运行文件
https://www.cnblogs.com/lsgxeva/p/13382844.html
可以使用gradlew列出所有的task和task的依赖
wrapper是我们使用命令行编译的开始
在as点击build,rebuild,clean的时候都触发了对应的gradle task
四个基本task
assemble可以把所有的buildtype(调试,发布)生成apk包
clean可以移除所有的编译输出文件,比如apk
check可以执行lint监测编译
build同时执行assemble和check命令

buildconfig

可以通过buildconfig.debug判断当前版本是否是debug版本,gradle编写语言是groovy,一种jvm语言,groovy可以生成java字节码类

repositories

可以加入项目链接
如果仓库有密码可以传入用户名和密码
还可以用相对路径配置一下本地仓库,通过配置项目里存在的静态文件夹作为本地仓库

Dependencies

库名称由组名,库名称和版本号组成
为了保证依赖库是最新状态可以使用通配符+,但是会导致每次都要用网络请求查看是否有最新版本导致编译过慢
也可以使用file()添加文件依赖,如果有多个jar包依赖可以放到文件夹里使用filetree引用
配置本地的so库可以
不方便直接引用项目需要使用文件形式引入就把项目打包成aar文件
这样我们在项目下新建aars文件夹之后配置一下仓库,引用的时候

区别构建

在debug和release的时候可能需要配置不同的服务器地址,打包市场渠道包的时候可能要打免费版收费版或内部版外部版程序
这是有buildtype区分
可以创建新的编译类型
gradle默认创建一个新的资源集,可以建立不同的文件夹,里面放上需要的不同资源和代码

针对同一份源码编译不同的程序编译收费和免费版可以使用product flavors
想build type一样也是可以有不同文件夹和配置
复杂情况可能需要多个product的未读进行组合,比如想要颜色和价格两个维度组合,先创建维度,之后是维度细分
buildtype里的优先级最大

可以开启并行编译加快编译
可以开启守护进程,二次编译的时候重用进程
可以使用shrinkresources渠道编译的时候不需要的资源
用shrinkReleaseResources命令可以看懂减少了哪些资源
一些需要动态加载的资源需要向Progard的一样对资源进行keep操作
可以再res/raw/下建立一个keep.xml文件keep资源
对一些特殊文件或文件夹,如国际化的资源文件,屏幕适配资源,如果已经确定了某种型号不需要重新适配可以去掉不适配的资源

自定义task

groovy

在groovy里没有固定类型,变量直接使用def引用
使用单引号只是字符串,双引号里面还可以放变量$变量名
方法也使用def声明,不指定返回值就返回最后一行代码的值
默认所有类和方法都是公共的,所有类的字段是private
通过new得到实例来引用
类里生命的字段都会默认生成对应的settinggetter方法,groovy方法调用时可以没有括号的,也不需要分号结尾,也可以直接调用
可以通过instance.greeting方式拿到字段值,也是通过get方法的

在map,collections
定义一个列表遍历列表使用each
定义一个map,获取map使用get或[]
闭包,匿名内部类,支持类似lamda形式的语法调用
task执行的时候action依次执行
可以在里面写dolast和dofirst方法
关于Task 的依赖有两种,must RunAfter和dependsOn
must必须按顺序加入之后顺序之后,后者是同时执行的

impletation里的依赖是怎样引入的

建立自己的android库

新建的时候选择新建模块–android library–之后在minimum sdk里是api16
之后吧代码传到library里上传github
然后发布代码就可以发布了

volley使用概览

https://developer.android.com/training/volley?hl=zh-cn
是一个可以让应用更轻松更快联网的http库
可以自动网络请求调度,可以有多个并发网络链接
有透明磁盘和具有标准http缓存一致性的内存响应缓存

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值