A build.gradle全局常量:

  •  //根路径def ROOT_PATH = rootProject.rootDir.pathdef 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文件中配置如下:
  1. 生成所需要的目录
  •   //生成对应目录task makeLibDir() {def outputPath = ROOT_PATH + '/aar_release'//脚本指定路径if(project.hasProperty('OUT_PUT_DIR_PATH')){outputPath = "${OUT_PUT_DIR_PATH}"}//创建aar所输出的目录createDir(outputPath)
    }
    复制代码
  1. 代码参数块
  •  def createDir = {path ->File dir = new File(path)if (!dir.exists()) {dir.mkdirs()}println "Generate the corresponding directory path is" + dir.toString()
    }
    复制代码
  1. 拷贝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 = " + outputPathinto outputPathprintln "----------> ARR copy succeeded <-----------"
    }
    复制代码
  1. 执行copyAAR
  •  tasks.withType(JavaCompile) {compileTask -> compileTask.dependsOn(copyAAR)
    }
    复制代码
  1. 使用命令执行**(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"//广告的SDKdef adPath = buildPath + GROUP + "." + MOB_SDK_VERSION_NAME + ".aar"//封装数组def modulePaths = [adPath]//删除AAR输出目录println "Delete -> " + aarOutPathdelete aarOutPath//循环删除各个AAR编译目录for (path in modulePaths) {println "Delete -> " + pathdelete path}//执行编译AAR脚本(原生脚本)dependsOn 'assembleRelease'//循环拷贝AAR到ARR输出目录for (path in modulePaths) {//显示开始拷贝println "-> Start of current copy <-"//当前目录println "From : " + pathfrom path//拷贝至 aarOutPathprintln "Into : " + aarOutPathinto 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 fileNameif (!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 ---> " + pathdelete path
    }//循环拷贝AAR到ARR输出目录
    for (path in modulePaths) {//显示开始拷贝println "-> Start of current copy <-"//当前目录println "From : " + pathfrom path//拷贝至 aarOutPathprintln "Into : " + aarOutPathinto aarOutPath;//显示当前拷贝结束println "-> End of current copy <-"
    }
    dependsOn 'assembleRelease'//任务结束
    println "----------> AAR Release Task End <----------"
    }
    复制代码

转载于:https://juejin.im/post/5ceb56f9e51d45105d63a46c

AndroidStudio脚本命令指定AAR生成目录与版本号相关推荐

  1. android aar编程,AndroidStudio脚本命令指定AAR生成目录与版本号

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

  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. Laravel 指定日志生成目录

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

  5. tree命令生成目录结构

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

  6. markdown 自动生成目录索引

    使用@[TOC]命令可以自动生成目录 方法: 将要放入目录中的行用"标题"符号注明 然后在文章中单独用一行写@[TOC]即可 举例: 在编辑目录中写: 文章目录 我是谁 我是帅哥 ...

  7. 基本BASH SHELL脚本命令——切换目录以及处理文件和目录的基本知识

    遍历目录 cd destination cd 命令可接受单个参数 destination ,用以指定想切换到的目录名.如果没有为 cd 命令指定目标路径,它将切换到用户主目录. destination ...

  8. 执行shell脚本进入指定目录

    在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: [plain]  view plain copy #!/bin/sh cd /home/user/Dow ...

  9. shell脚本进入指定目录

    在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本 framework.sh #!/bin/bash echo "\n----------- 开始进入指定文件夹 - ...

最新文章

  1. JVM基本架构及生命周期
  2. boost中的shared_ptr的一些理解
  3. linux中怎么安装ded包_快速提示:如何在Linux中安装.deb和.tar文件 - push博客
  4. 电脑老是提示虚拟内存不足的原因及解决办法
  5. java string su_JAVA基础--常用类String
  6. 《代码整洁之道》—第1章1.1节要有代码
  7. 如何在MySQL中重置AUTO_INCREMENT?
  8. Redis设计与实现 - chapter7 压缩列表
  9. 1030 Travel Plan [Dijkstra]
  10. 想听懂用户的声音,至少得先学会数据分析吧
  11. 推荐一个基于Spring Boot + Vue的实习管理系统
  12. 一道金蝶校园招聘试题数据库笔试题
  13. 记一次hive 报错NoViableAltException(-1@[215:51: ( KW_AS )?])
  14. 软件测试通过标准是什么?
  15. 独家对话阿里副总裁李飞飞:数据库的进化之路
  16. 一.什么是java面向对象 (小白神器)
  17. 常用生物信息 ID 及转换方法
  18. 计算机毕业设计SSMjava高校社团管理系统【附源码数据库】
  19. 对日软件开发过程中的质量管理
  20. POJ3159 Candies(差分约束)

热门文章

  1. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
  2. mac mini 装UBUNTU后没有WIFI解决办法
  3. 机器学习实战笔记(Python实现)-03-朴素贝叶斯
  4. 毫米波雷达、ADAS中的应用以及毫米波雷达的检测、测距、测速和角度测量
  5. zend studio 8安装与汉化
  6. linux的strace命令
  7. ADO.NET 2.0 中的架构
  8. C++11中std::shared_future的使用
  9. php发布商品信息逻辑,php – 逻辑思考一个数据库结构:为用户发布的东西添加“标签” – 一个单独的表或……?...
  10. matlab计算斜方差_协方差与Matlab的实现