V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wang23412
V2EX  ›  Android

[Github] 发一个自己写的将 android 依赖库打包进 aar 的插件,请大家多指教哈~

  •  
  •   wang23412 · 2019-07-31 11:44:22 +08:00 · 9990 次点击
    这是一个创建于 1946 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家如果使用过 android 打包的 aar 文件,就会知道 android 打包生成的 aar 文件里面不包含依赖的库,app 模块使用 aar 文件时还得重新导入 aar 文件依赖的库,如果 aar 文件还依赖了一个本地 aar,那么 app 模块使用的时候还得把这个本地 aar 文件拷贝到 libs 目录。

    如果不想将 aar 发布到 maven 库的话,这个特性或者缺陷在公司合作中会显得很不舒服,这里有一些关于这个问题的讨论: 讨论 1 讨论 2

    曾经也有人发布过解决方案, 可惜作者不再维护,在 android gradle 3.0 以上基本不能用.

    于是我开发了此插件,能将依赖库直接打包进 aar 文件,app 模块在使用 aar 文件时无需再重新引入依赖库: https://github.com/cpdroid/fat-aar

    以上,请大家多多拍砖,多多指教~


    以下是用法

    在根目录的 build.gradle 文件里面添加如下语句:

    buildscript {
      repositories {
        jcenter()
      }
      dependencies {
        classpath 'com.cpdroid:fat-aar:1.0.0'
      }
    }
    

    library 工程的 build.gradle 里面添加如下语句:

    apply plugin: 'com.android.library'
    apply plugin: "com.cpdroid.fat_aar"
    

    确保 'com.cpdroid.fat-aar' 在'com.android.library'后面

    用关键字 "embedded" 替代 "implementation" 或者 "compile" 就可以把依赖的库打包进你的 aar 文件:

    embedded fileTree(dir: 'libs', include: ['*.aar'])
    embedded project(':moduleA')
    embedded 'com.gongwen:marqueelibrary:1.1.3'
    

    运行 gradle 任务, 一般来说是 "assembleRelease", 把生成的 aar 文件复制进 app 模块的 libs 目录

    示例

    2 条回复    2019-10-25 02:48:45 +08:00
    wang23412
        1
    wang23412  
    OP
       2019-07-31 11:47:26 +08:00
    本来想把用法折叠起来,奈何 github 上的折叠方式在这里不起作用,请问 V2EX 怎么折叠代码
    a1024a
        2
    a1024a  
       2019-10-25 02:48:45 +08:00
    大神,nb.....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.