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生成目录与版本号相关推荐

  1. AndroidStudio脚本命令指定AAR生成目录与版本号

    A build.gradle全局常量: //根路径def ROOT_PATH = rootProject.rootDir.pathdef GROUP = "com.genialsir.mob ...

  2. 1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符

    文员.网管必会技能:Windows命令行bat/cmd批处理脚本的编写应用之文件管理应用 2.1.2.1bat脚本命令 DIR 显示磁盘目录与重定向符号 通配符 课程地址:http://edu.51c ...

  3. Qt指定临时文件生成目录

    指定临时文件生成目录,使项目文件夹更干净 QT默认情况下把所有的编译中间文件都生成到debug和release文件夹里.可以在.pro文件中加入: MOC_DIR = tmp/mocRCC_DIR = ...

  4. Android 模块化编程之引用本地的aar

    转: http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/ 随着项目越来越多,代码的复用就变得异常重要,这 ...

  5. Android图库/相册,禁止扫描指定的图片目录

    话说Android系统目前的3D/2D图库/相册,都是默认扫描整个手机SD卡里的图片,结果就是相册里乱七八糟的图片一大堆,严重影响美观和速度.还有就是你手机内存卡里若是存了一些你根本就不想在图库或相册 ...

  6. Laravel 指定日志生成目录

    1.在config/logging.php 中, 创建自定义频道 2.使用时指定频道 转载于:https://www.cnblogs.com/Skrillex/p/11362943.html

  7. 第七课 Shell脚本编程-大型脚本工具开发实战

    第七课 Shell脚本编程-大型脚本工具开发实战 文章目录 第七课 Shell脚本编程-大型脚本工具开发实战 第一节 需求描述 第二节 脚本的特殊参数 第三节 功能函数的实现 第四节 程序主流程设计及 ...

  8. tree命令生成目录结构

    在 GitHub 上经常看见项目文档上会列出项目的目录结构,比如: 第一反应,不错,我也要搞个. 第二反应,怎么弄的?啥,手写?不可能的,不可能的,程序员是不可能手写这种的. 其实搜一下就有,哈哈~ ...

  9. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

最新文章

  1. 中国地址住址五级以下
  2. iScience | 大规模表征学习寻找分子间相互作用
  3. 重磅,武汉大学获捐10亿元!
  4. C# WPF 中用代码模拟鼠标和键盘的操作
  5. 操作系统(二十七)管程
  6. java 三大框架面试题
  7. Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
  8. LeetCode 860. 柠檬水找零(贪心)
  9. 还香吗?iPhone 13/Pro 手机“失灵”:不支持通过 Apple Watch 解锁屏幕
  10. HTTP1.0、HTTP1.1和HTTP2.0
  11. jmeter分布式性能测试
  12. 2020年净利润腰斩,麦格纳要转型“造车”?
  13. python解析nmea0183协议获取GPS定位信息
  14. 计算机无法启动故障树,发动机无法启动的故障树分析及诊断方法.docx
  15. 惟伊·京汉方邀约全国贵宾黄龙溪一日游
  16. UE4过场动画的制作流程
  17. 京峰linux课程目录,京峰教育 Linux编程Shell从入门到精通视频教程
  18. MUR20060CT-ASEMI快恢复模块200A 600V
  19. linux smit工具,AIX smit工具
  20. 在vscode中安装python第三方库

热门文章

  1. java获取eureka_Spring Cloud服务发现:Eureka客户端
  2. python面向对象编程(封装与继承)
  3. kali-linux虚拟机与主机共享文件
  4. java okhttp https_OkHttp是否支持接受自签名SSL证书?
  5. 双11特刊 | 全面云原生化,数据库实例独共享混部 最高降低30%成本
  6. 入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一
  7. 自建裸金属实例Oracle RAC上云
  8. 打散算法的三种解决方案及其选型场景
  9. “数据驱动”时代来临,阿里云数据中台如何赋能金融业?(附重磅报告下载)
  10. 怎么能学好Java开发,学好Java一般需要多少钱