android aar编程,AndroidStudio脚本命令指定AAR生成目录与版本号
A build.gradle全局常量:
//根路径
def ROOT_PATH = rootProject.rootDir.path
def GROUP = "com.genialsir.mobileads"
def MOB_SDK_VERSION_NAME = "1.1.2"
复制代码
B 在当前库项目的build.gradle文件中android{}中配置如下:
//自定义aar名称
android.libraryVariants.all {
variant ->
variant.outputs.all {
def fileName = GROUP + "." + MOB_SDK_VERSION_NAME + ".aar"
outputFileName = fileName
}
}
复制代码
C 借助命令生成arr到指定的目录:
使用gradle -b **(代表当前Project或Module目录名)/build.gradle aarRelease
复制代码
在对应build.gradle文件中配置如下:
生成所需要的目录
//生成对应目录
task makeLibDir() {
def outputPath = ROOT_PATH + '/aar_release'
//脚本指定路径
if(project.hasProperty('OUT_PUT_DIR_PATH')){
outputPath = "${OUT_PUT_DIR_PATH}"
}
//创建aar所输出的目录
createDir(outputPath)
}
复制代码
代码参数块
def createDir = {
path ->
File dir = new File(path)
if (!dir.exists()) {
dir.mkdirs()
}
println "Generate the corresponding directory path is" + dir.toString()
}
复制代码
拷贝AAR
task copyAAR(type: Copy) {
println "----------> ARR copy start
def buildPath = ROOT_PATH + '/containerad/build/outputs/aar'
//AAR所在的编译路径
from buildPath
//AAR所拷贝的目录
def outputPath = ROOT_PATH + '/aar_release'
println "outputPath = " + outputPath
into outputPath
println "----------> ARR copy succeeded
}
复制代码
执行copyAAR
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(copyAAR)
}
复制代码
使用命令执行**(gradle -b 目录名/build.gradle aarRelease)**并发布AAR
task aarRelease(type: Copy) {
//任务开始
println "----------> AAR Release Task Start
//AAR所在的编译路径
def buildPath = ROOT_PATH + '/containerad/build/outputs/aar'
//AAR输出路径
def aarOutPath = ROOT_PATH + "/aar_release"
//广告的SDK
def adPath = buildPath + GROUP + "." + MOB_SDK_VERSION_NAME + ".aar"
//封装数组
def modulePaths = [adPath]
//删除AAR输出目录
println "Delete -> " + aarOutPath
delete aarOutPath
//循环删除各个AAR编译目录
for (path in modulePaths) {
println "Delete -> " + path
delete path
}
//执行编译AAR脚本(原生脚本)
dependsOn 'assembleRelease'
//循环拷贝AAR到ARR输出目录
for (path in modulePaths) {
//显示开始拷贝
println "-> Start of current copy
//当前目录
println "From : " + path
from path
//拷贝至 aarOutPath
println "Into : " + aarOutPath
into aarOutPath;
//显示当前拷贝结束
println "-> End of current copy
}
//任务结束
println "----------> AAR Release Task End
}
复制代码
(上面内容写的有些繁琐与重复,灵活性相对差些,如果需要外部指定对应版本与目录,以及通过git灵活打对应需求的版本则就略差一些。)
#### 先来张最近奥迪漏油事件皮一波,免费打打广告
好的,开始进入正题,首先灵活指定版本号,通过协定OUT_PUT_AAR_VERSION_SUFFIX来指定所需版本。
//自定义aar名称
android.libraryVariants.all {
variant ->
variant.outputs.all {
def fileName
if (!project.hasProperty('OUT_PUT_AAR_VERSION_SUFFIX')) {
fileName = GROUP + "." + MOB_SDK_VERSION_NAME + ".aar"
}else{
fileName = GROUP + "." + "${OUT_PUT_AAR_VERSION_SUFFIX}.aar"
}
outputFileName = fileName
}
}
复制代码
指定对应的生成目录以及版本号
使用默认路径命令执行(gradle -b containerad/build.gradle aarRelease)
脚本指定版本号与对应目录(gradle assemble -P OUT_PUT_AAR_VERSION_SUFFIX=1.1.2 -P OUT_PUT_DIR_PATH=H:\AndroidProject\ADPlugIn\OnlyLadyAD\ad_release_path aarRelease)
复制代码
通过协定好的OUT_PUT_DIR_PATH与OUT_PUT_AAR_VERSION_SUFFIX来控制版本号与路径。 task aarRelease(type: Copy) {
//任务开始
println "----------> AAR Release Task Start
//执行编译AAR脚本(原生脚本)
dependsOn 'assembleRelease'
//AAR所在的编译路径
def buildPath = ROOT_PATH + '/containerad/build/outputs/aar/'
//AAR输出默认路径
def aarOutPath = ROOT_PATH + '/aar_release'
//脚本指定路径
if(project.hasProperty('OUT_PUT_DIR_PATH')){
aarOutPath = "${OUT_PUT_DIR_PATH}"
}
//广告的SDK
def adPath
if (!project.hasProperty('OUT_PUT_AAR_VERSION_SUFFIX')) {
//默认版本
adPath = buildPath + GROUP + "." +
MOB_SDK_VERSION_NAME + ".aar"
}else{
//脚本指定版本
adPath = buildPath + GROUP + "." + "${OUT_PUT_AAR_VERSION_SUFFIX}.aar"
}
//封装数组
def modulePaths = [adPath]
//当前AAR输出目录
println "The current aar output directory is " + aarOutPath
delete aarOutPath
//循环删除已存在的aar
for (path in modulePaths) {
println "Delete ---> " + path
delete path
}
//循环拷贝AAR到ARR输出目录
for (path in modulePaths) {
//显示开始拷贝
println "-> Start of current copy
//当前目录
println "From : " + path
from path
//拷贝至 aarOutPath
println "Into : " + aarOutPath
into aarOutPath;
//显示当前拷贝结束
println "-> End of current copy
}
dependsOn 'assembleRelease'
//任务结束
println "----------> AAR Release Task End
}
复制代码
android aar编程,AndroidStudio脚本命令指定AAR生成目录与版本号相关推荐
- AndroidStudio脚本命令指定AAR生成目录与版本号
A build.gradle全局常量: //根路径def ROOT_PATH = rootProject.rootDir.pathdef GROUP = "com.genialsir.mob ...
- 1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符
文员.网管必会技能:Windows命令行bat/cmd批处理脚本的编写应用之文件管理应用 2.1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符 课程地址:http://edu.51c ...
- Qt指定临时文件生成目录
指定临时文件生成目录,使项目文件夹更干净 QT默认情况下把所有的编译中间文件都生成到debug和release文件夹里.可以在.pro文件中加入: MOC_DIR = tmp/mocRCC_DIR = ...
- Android 模块化编程之引用本地的aar
转: http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/ 随着项目越来越多,代码的复用就变得异常重要,这 ...
- Android图库/相册,禁止扫描指定的图片目录
话说Android系统目前的3D/2D图库/相册,都是默认扫描整个手机SD卡里的图片,结果就是相册里乱七八糟的图片一大堆,严重影响美观和速度.还有就是你手机内存卡里若是存了一些你根本就不想在图库或相册 ...
- Laravel 指定日志生成目录
1.在config/logging.php 中, 创建自定义频道 2.使用时指定频道 转载于:https://www.cnblogs.com/Skrillex/p/11362943.html
- 第七课 Shell脚本编程-大型脚本工具开发实战
第七课 Shell脚本编程-大型脚本工具开发实战 文章目录 第七课 Shell脚本编程-大型脚本工具开发实战 第一节 需求描述 第二节 脚本的特殊参数 第三节 功能函数的实现 第四节 程序主流程设计及 ...
- tree命令生成目录结构
在 GitHub 上经常看见项目文档上会列出项目的目录结构,比如: 第一反应,不错,我也要搞个. 第二反应,怎么弄的?啥,手写?不可能的,不可能的,程序员是不可能手写这种的. 其实搜一下就有,哈哈~ ...
- Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)
Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...
最新文章
- 中国地址住址五级以下
- iScience | 大规模表征学习寻找分子间相互作用
- 重磅,武汉大学获捐10亿元!
- C# WPF 中用代码模拟鼠标和键盘的操作
- 操作系统(二十七)管程
- java 三大框架面试题
- Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
- LeetCode 860. 柠檬水找零(贪心)
- 还香吗?iPhone 13/Pro 手机“失灵”:不支持通过 Apple Watch 解锁屏幕
- HTTP1.0、HTTP1.1和HTTP2.0
- jmeter分布式性能测试
- 2020年净利润腰斩,麦格纳要转型“造车”?
- python解析nmea0183协议获取GPS定位信息
- 计算机无法启动故障树,发动机无法启动的故障树分析及诊断方法.docx
- 惟伊·京汉方邀约全国贵宾黄龙溪一日游
- UE4过场动画的制作流程
- 京峰linux课程目录,京峰教育 Linux编程Shell从入门到精通视频教程
- MUR20060CT-ASEMI快恢复模块200A 600V
- linux smit工具,AIX smit工具
- 在vscode中安装python第三方库
热门文章
- java获取eureka_Spring Cloud服务发现:Eureka客户端
- python面向对象编程(封装与继承)
- kali-linux虚拟机与主机共享文件
- java okhttp https_OkHttp是否支持接受自签名SSL证书?
- 双11特刊 | 全面云原生化,数据库实例独共享混部 最高降低30%成本
- 入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一
- 自建裸金属实例Oracle RAC上云
- 打散算法的三种解决方案及其选型场景
- “数据驱动”时代来临,阿里云数据中台如何赋能金融业?(附重磅报告下载)
- 怎么能学好Java开发,学好Java一般需要多少钱