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

gradle_logo.png

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文件中配置如下:
  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 = " + outputPath
        into outputPath
    
        println "----------> 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"
    
        //广告的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灵活打对应需求的版本则就略差一些。)

先来张最近奥迪漏油事件皮一波,免费打打广告

ad_publicity.jpg
好的,开始进入正题,首先灵活指定版本号,通过协定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 <----------"
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355