android实现gradle动态依赖打包

本文介绍了Android项目中gradle的基本知识,包括module、project和setting gradle文件的作用。重点讲解了如何使用gradle隐藏敏感签名信息,以及通过buildType和flavor实现差异化打包,包括更改资源文件和创建同名module来实现动态编译。此外,还探讨了在manifest中使用变量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、gradle基本知识

gradle是基于Groovy语言的,一个Android Project项目基本会生成三种gradle文件:module gradle、project gradle 和 setting gradle

这里写图片描述
- module gradle一个模块有一个,如 上图所示app.gradle和firstflavor.gradle。该gradle是配置本模块信息的
- project gradle如图中QQView,该gradle配置项目的总的信息
- setting gradle如图中Settings,指定项目所使用的模块

二、使用gradle隐藏敏感签名信息

  1. 在根目录建立keystore.properties文件,在文件里面配置签名信息
  2. 在主模块的gradle文件中加载properties文件中的签名信息
  3. 在签名配置中使用properties实例代替原来签名

    这里写图片描述

这里写图片描述

三、使用buildType和flavor

buildType和flavor可以对mudule进行绝大多数的配置,也是动态依赖的关键
在AS左上角File->Project Structure->可以找到buildType和Flavor的快捷配置
包含了许多常见的参数
这里写图片描述

这里写图片描述

这里写图片描述

其中SigningConfig可以在Singning里面配置好签名信息。VersionName Suffix和ApplicationId Stuffix分别表示版本信息的后缀名和包名的后缀名

有些参数在buildTypes和Flavor都可以配置,但是如果重复了会被buildTypes中的代替,如buildConfigField,该参数可以配置常量,然后在代码中使用Build.IBS引用。

可以看到,buildTypes有debug,realease,还可以有其他许多不同的配置,Flavor也是同样的道理,也就是总共有buildtypes种类×Flavor种类的组合,可以利用这个组合进行多渠道打包编译和定制。
这里写图片描述

差异化打包一

在mudule目录的src目录下右键新建JavaFolder文件,会有多个选项可以选,分别对应debug,release,和其他多组合。建完文件以后可以在里面使用与main文件相同的xml资源文件,编译打包时会覆盖原来的main资源文件,从而实现动态打包。比如可以更改mipmap文件中的icon,不同的打包会有不同的应用图标。

差异化打包二

新建一个module,名字与所定义某一个flavor相同,在模块的gradle文件中配置好版本信息后,同样更改所要替换的资源文件,不过,需要删除main文件中的同名文件,否则无效。这与上面一种方法不同

差异化编译三

使用compile实现差异化打包

这里写图片描述

这里写图片描述

默认先使用compile编译,testCompile为单元测试的,xxxCompile表示再按照flavor偏好编译。当使用module作为依赖库时,只需compile project ‘:library’或者xxxCompile project ‘:library’即可,当使用module作为flavor动态编译时(上面方法差异化打包二),需要module与flavor同名,并且需要使用xxxCompile project
(xxx为flavor名字),还需要删除主模块中重名的文件才可以。

关于使用变量

在manifest可以使用键值对用于Application或者Acticity中,然后在代码中访问。

这里写图片描述

这里写图片描述

其中,${APP_NAME_THIS}使用EL表达式也类似kotlin中字符串存在的用法,manifest中的${xx}变量的值配置在flavor和buildTypes时表示为

manifestPlaceholder = [APP_NAME:"name"(value)]

${xx}为gradle中变量时,如compile’xxx’需要变为compile “xxxx${xx}”,然后在project中配置值
这里写图片描述

这里写图片描述

大致就是这样,自己本人对于gradle还比较陌生,算是做做笔记,再接再厉。

参考学习文章
[1]:android studio打包以及gradle配置构建
[2]:Android 必备而又容易忽视的知识 Gradle的高级用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值