AAR合并

作者: yin_xin | 来源:发表于2019-07-11 00:33 被阅读8次

前言

虽然标题叫AAR合并,但本文并不是让你将两个AAR文件通过硬核操作方式合并成一个AAR文件,本文主要是通过maven平台来解决这个问题。

解决方案

我们需要解决的问题并不是合并两个文件,而是给使用者提供统一的依赖入口,而合并只是解决这个问题一种方法。

如果将aar变成gradle依赖,那就没有这个烦恼了呢。
emmm....,这个方案可行性很高啊!

上传maven仓库时,首先会将library打包aar成文件,以及会生成一个pom文件以及其他几个文件,然后将这些文件上传到maven平台上,最终我们可以通过gradle依赖的方式直接引用到这个aar。

现在需要做的就是在正常发布的流程中,用我们需要合并的AAR A文件替换掉library生成的AAR B文件。那么最终在gradle中使用这个依赖时,就相当于直接使用了A文件的代码。

aar变成了gradle依赖,你都解决不了问题,反省一下!

如果不能使用maven等公有平台,点这里https://www.jianshu.com/p/8f7e32015836,不过这个方法我没有验证过。

替换AAR

在正常发布library到maven的流程中,将aar文件替换即可,所以在正式操作前,请务必能个正常发布library到maven。

一切准备OK后,在library的gradle文件中添加下面脚本。

/**
 * 在打包上传maven仓库之前
 * 用sdk/paradigmsdk.aar文件替换掉build/outputs/aarx-release.aar
 * sdk/paradigmsdk.aar是需要合并文件的路径
 */
task replaceMyAAR {
    //解析的时候执行
    println("初始化替换aar任务")

    doFirst {
        //执行任务前执行
        copy {
            println 'copy assembleDebug'
            from('sdk/paradigmsdk.aar')
            into('build/outputs/aar')
            rename {
                project.getName() + '-release.aar'
            }
        }
    }

    doLast {
        //执行完任务时候执行
    }
}

//在解析build.gradle之后执行该脚本
afterEvaluate {
    tasks.forEach { task ->
        // 注意这个 xjsdkwrap:bintrayUpload 参数
        // xjsdkwrap:bintrayUpload 是上传maven时最后一个task的名字,我们要在执行他前替换文件
       // 如何找这个参数下面会讲到
        if (task.getPath() == ":xjsdkwrap:bintrayUpload") {
            //hook住bintrayUpload,在执行上传操作前先执行替换逻辑
            task.dependsOn replaceMyAAR
        }
    }
}

因为每个工程的module名和使用的maven上传代码不一样,所以名字是不固定的。
那么如何寻找最后一个参数?

打开下面的面板或者输出日志,正常执行一次上传流程。观察最后上传的最后一次名字即可。


寻找参数

相关文章

  • AAR合并

    前言 虽然标题叫AAR合并,但本文并不是让你将两个AAR文件通过硬核操作方式合并成一个AAR文件,本文主要是通过m...

  • Android多模块构建合并aar解决方案

    参考:Android导出aar时嵌套引用的那些坑Android多模块构建合并aar解决方案android stud...

  • 合并 aar 文件

    需求 当一个功能模块特别庞大的时候,业务功能的耦合也会特别严重。耦合度增高,会导致维护成本越来越高。这时候需要对改...

  • Android AAR Manifrest文件theme冲突问题

    当我们引入aar作为项目的依赖时,由于aar一般包含资源文件,导致androidManifest清单文件需要合并。...

  • Android aar 拷贝到sdk一起打包成新的aar

    概述 1、需要将一个aar包与项目产生的aar包合并成一个,其中项目是源码2、项目是源码 解压依赖aar 解压aa...

  • Android Studio多module合为一个AAR

    前言 因项目有多个Module,要合并为一个AAR提供给客户。 android-fat-aar 网上搜到的最多的就...

  • 合并AAR踩坑之旅(fat-aar)

    博客已迁移至:https://leeon7.github.io[https://leeon7.github.io]...

  • aar合并踩坑记录

    使用的工具 采用查到的aar合并的方法是使用fat-aargit地址:https://github.com/cpd...

  • Android 打包错误

    aar文件放入lib里右键load后貌似就不用再app/build.gradle 里依赖啦,否则就会提示合并冲突

  • Manifest merger failed with mult

    1、问题项目合并第三方提供的aar,报错: 打开详细gradle报错日志,发现是执行任务processDebugM...

网友评论

    本文标题:AAR合并

    本文链接:https://www.haomeiwen.com/subject/dzklkctx.html