GradleForAndroid笔记

简介: 就是一笔记,我看的英文版,里面纰漏应该比较多。方便自己记忆而已。1.gradle的插件就是一系列可以被复用的构建项目的脚本,我们可以使用其中的task2.

就是一笔记,我看的英文版,里面纰漏应该比较多。方便自己记忆而已。

  • 1.gradle的插件就是一系列可以被复用的构建项目的脚本,我们可以使用其中的task
  • 2.一个gradle文件中只能存在一种插件:
    • 1.apply plugin: 'com.android.application',这是构建一个app的插件
    • 2.apply plugin: 'com.adnroid.library',这是构建一个sdk的插件
  • 3.setting.gradle文件中表示需要加入到project中的module,单个项目不需要setting文件,多module的项目就需要了
  • 4.android项目中最顶层的build文件被应用于所有的module:
    • 1.buildscript中放置的是项目构建的配置
      • 1.repositories:其中放置的是远程中央仓库,用于联网下载依赖
      • 2.dependencies:其中放置的是需要应用于所有module的依赖,初始化的时候回默认放置一个 android的gradle插件。
    • 2.allprojects:其中可以放置自定义的适用于全部module的配置和task。
  • 5.gradle的android插件继承了java插件的几个基本task:
    • 1.assemble:为每个build type 创建apk
    • 2.clean:清理build后的文件,例如apk文件
    • 3.check:运行所有的单元测试,和集成测试
    • 4.build:运行assemble和check
    • 5.connectedCheck:在一个连接的手机设备安装了apk之后再卸载
    • 6.deviceCheck:
    • 7.installDebug、installRelease:将某种版本的apk安装到手机设备上
    • 8.所有的install操作都有相应的uninstall操作
  • 6.在编译的时候回生成一个BuildConfig,我们可以在buildType中为各种版本的apk,添加自定义字段,在打包的时候会根据不同的版本的字段进行打包
  • 7.在用多个module的情况下可以在根目录的 gradle文件中增加ext块,这个块中的配置可以被到其他moudule中去
  • 8.可以由这些方式引入依赖:
    • 1.maven库
    • 2.Ivy
    • 3.静态文件或者目录
  • 9.一个远程依赖由于三部分组成:group、name、version
  • 10.设置仓库
    • 1.远程maven库:JCenter()、mavenCentral()、mavenLocal()
    • 2.其他远程库:如果需要添加其他maven或者ivy远程库,那么可以用maven、ivy块将url包起来
    • 3.本地库:对于本地其他的maven或者ivy库,可以使用绝对路径或者相对路径
    • 4.设置文件为库:你可以使用flatDir块来将某个目录设置成仓库
  • 11.添加依赖:
    • 1.添加远程依赖: compile '远程依赖名'
    • 2.添加jar依赖: compile files('jar名')
    • 3.添加依赖目录: compile fileTree('libs'),android中只能添加目录下的jar: compile fileTree(dir: 'libs' , include: ['*.jar'] )
  • 12.依赖项目
    • 1.apply plugin: 'com.android.library' 是一个依赖项目的插件
    • 2.最后生成的是一个aar文件,可以被其他项目引用
      • 1.编译library然后再output文件下面可以找到aar文件
      • 2.需要新建一个arr的目录,然后使用flatDir来添加这个目录
      • 3.compile(name: 'libraryname' , ext: 'aar')
    • 3.compile project(':library') 表示引用该项目
  • 13.依赖的概念
    • 1.compile:不仅仅在项目中使用代码,而且将代码打包造apk中
    • 2.apk:不在项目中用,打包入代码
    • 3.provider:在项目中用,不打包入代码
    • 4.testCompile和androidTestCompile:只添加到测试apk中,不加在release中
  • 14.语义版本
    • 1.major结尾:修改api接口
    • 2.minor结尾:修改api内部代码
    • 3.patch结尾:修复bug
  • 15.动态版本:依赖一个最终版,不再修改版本了
    • 1.compile ‘groupname:name:version+’
    • 2.动态版本可能造成编译问题,因为可能中间会有版本修改api
  • 16.可以在buildTypes中添加块,来定义多个不同的打包方式
  • 17.每创建一个buildTypes 资源集合都会赋值成为一个新的分支
  • 18.如果只要在某个版本中添加依赖,那么加个前缀就好了例如:debugCompile
  • 19.如果要对某一个相同的apk,进行区分。例如区分付费和不付费的两个版本。那么可以使用productFlavors块
  • 20.在资源打包上的优先级是这样的:Build type > Flavor > main > dependencies
  • 21.compile project(':library')用来添加依赖库依赖
  • 22.可以在setting.gradle中添加类似‘:library1:library2’,来表示嵌套的依赖项目
  • 23.在gradle编译项目的时候,会先去找setting文件,如果没有那么gradle久认定只有一个项目,如果有多个项目,那么gradle编译的时候会选择给定的那个项目,然后将其他项目的文件合并进来。
  • 24.在根目录下面使用构建命令的时候,会编译全部的module。在某个module下面则编译某个module
  • 25.你可以通过在根目录下面运行类似 gralde:app:clean 来控制具体某个module进行构建操作
  • 26.Groovy语法:类似java,是运行在jvm上面的,可以和java混用
    • 1.println ‘aaa’:直接输出
    • 2.def name = ‘a:使用def可以定义任何类型变量
    • 3.new Date()."$method"():可以定义占位符method
    • 4.定义的class method 默认是public的
    • 5.instance.setA 'a':调用方法的时候 可以不写括号
    • 6.def square = { num -> num * num}定义method返回值的时候 可以返回具体类型,也可以返回def,方法体也可以写成lambda的形式
    • 7.List l = [1 , 2 , 3]:定义数组,遍历可以用each(),lambda加在后面,也可以使用闭包
    • 8.Map m = [m : 10 , p : 12]:定义map,m.m方式可以获取
  • 27.Groovy在Gradle中:
    • 1.引入插件的时候会使用:apply plugin: '',也可以写成:project.apply([plugin : ‘’]),project是自动生成的一个class,可以通过添加map的方式添加插件
    • 2.添加依赖的时候会使用:dependencies {compile ''},也可以写成:project.dependencies({add(‘compile’ , '' , {})})
  • 28.缩小包:
    • 1.混淆
    • 2.缩小资源:shrinkResource = true
    • 3.去掉语言包,去掉不同分辨率的图片:resConfig
  • 29.加快编译:
    • 1.并行编译:org.gradle.parallel = true
    • 2.增大gradle 的jvm内存大小:org.gradle.jvmargs = -Xms256m -Xmx1024m
    • 3.开启jack和jill进行编译:defaultConfig、regular、experimental 中添加 useJack = true
    • 4.忽略Lint检查:在LintOptions中添加 abortOnError = flase
相关文章
|
6月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
505 50
|
9月前
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
1063 75
|
11月前
|
人工智能 自然语言处理 IDE
通义灵码--我的编程好伙伴,让我晋升编程大神,从安装到使用
作为一名大数据开发工程师,我在编程过程中使用了通义灵码的@workspace与@terminal工具,这些工具极大地提高了我的工作效率,使我在处理新项目代码和实现新需求时更加得心应手。通过这些工具,我能够在不离开IDE的情况下快速解决问题,生成代码,优化现有代码,并通过智能问答功能获取即时帮助。通义灵码不仅支持多种主流编程语言,还提供了丰富的功能,如代码生成、单元测试生成、代码优化等,显著提升了我的编程体验。强烈推荐给所有希望提高编程效率的开发者。
|
11月前
|
域名解析 监控 安全
slb配置检查域名说明注意事项
slb配置检查域名说明注意事项
204 5
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。
如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合
该文介绍了一个工具的使用方法,通过它可以从多个文件夹中批量提取并合并文件。文中提供了两个下载链接(度娘网盘和蓝奏云)并附有提取码。工具主要用于平均分配文件到指定文件夹,例如将100张图片平均放入50个文件夹,每个文件夹2张。操作步骤包括创建目标文件夹、添加源文件夹路径、启用“平均复制”选项,然后执行任务。最后,展示了操作完成后文件夹内的正确分布情况。
495 10
|
10月前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
141 0
|
存储 Java 测试技术
深度优化 | PolarDB-X 基于向量化SIMD指令的探索
本文将介绍PolarDB-X对于向量化SIMD指令的探索和实践,包括基本用法及实现原理,以及在具体算子实现中的思考和沉淀。
|
PHP
vscode添加PHP代码注释的插件及设置教程
在vscode中点击扩展-->安装插件koroFileHeader
878 0
|
机器学习/深度学习 供应链 机器人
合约现货量化交易系统开发|量化交易机器人开发源码
 常见的量化交易策略有很多种,例如趋势型,网格型,剥头皮,概率法则,高频交易等,今天主要给大家介绍2种低频的交易策略,高抛低吸网格交易策略、日内做T策略。
合约现货量化交易系统开发|量化交易机器人开发源码