当前位置: 首页 > news >正文

android sdk打包aar方案步骤

1.使用fat-aar库https://github.com/kezong/fat-aar-android/blob/master/README_CN.md

第一步:添加以下代码到你工程根目录下的build.gradle文件中:

For Maven Central (The lastest release is available on Maven Central):

buildscript {repositories {mavenCentral()}dependencies {classpath 'com.github.kezong:fat-aar:1.3.8'}
}

第二步: Add plugin

添加以下代码到你的sdk所在library的build.gradle中:

apply plugin: 'com.kezong.fat-aar'

第三步: Embed dependencies

  • embed你所需要的工程, 用法类似implementation

代码所示:

dependencies {implementation fileTree(dir: 'libs', include: '*.jar')// java dependencyembed project(path: ':lib-java', configuration: 'default')// aar dependencyembed project(path: ':lib-aar', configuration: 'default')// aar dependencyembed project(path: ':lib-aar2', configuration: 'default')// local full aar dependency, just build in flavor1flavor1Embed project(path: ':lib-aar-local', configuration: 'default')// local full aar dependency, just build in debugdebugEmbed(name: 'lib-aar-local2', ext: 'aar')// remote jar dependencyembed 'com.google.guava:guava:20.0'// remote aar dependencyembed 'com.facebook.fresco:fresco:1.12.0'// don't want to embed inimplementation('androidx.appcompat:appcompat:1.2.0')
}

第四步: 执行assemble命令

  • 在你的工程目录下执行assemble指令,其中lib-main为你主library的工程名称,你可以根据不同的flavor以及不同的buildType来决定执行具体的assemble指令
# assemble all 
./gradlew :lib-main:assemble# assemble debug
./gradlew :lib-main:assembleDebug# assemble flavor
./gradlew :lib-main:assembleFlavor1Debug

2.将会引起冲突的库使用jar包依赖可以减小aar的体积

3.将sdk所在目录的混淆打开可以减小aar的体积

遇到的坑:

1.如果sdk目录的libs包下引用了jar包,需要在sdk的build.gradle中dependencies添加

implementation fileTree(dir: 'libs', include: '*.jar')

否则会出现jar包打不进sdk中的问题

2.module里面通过Gradle方式集成的依赖不会打进aar里面,把需要打进aar里面的东西用jar依赖,可能会引起依赖冲突的库,用Gradle方式

http://www.lryc.cn/news/137256.html

相关文章:

  • Redis之bitmap类型解读
  • stm32之10.系统定时器
  • PyTorch安装教程:从头开始配置PyTorch环境
  • Docker拉取并配置Grafana
  • Vue+Axios搭建二次元动态登录页面(mp4视频格式)
  • 【Kubernetes】K8S到底是什么,最近怎么这么火
  • Java爬虫下载网页图片
  • C语言之扫雷游戏实现篇
  • Python面向对象中super用法与MRO机制
  • 高性能网络模式-Reactor
  • gRpc的四种通信方式详细介绍
  • JWT令牌的介绍
  • C语言入门 Day_9 条件判断
  • Nodejs-nrm:快速切换npm源 / npm官方源和其他自定义源之间切换
  • 数据驱动洞察:各种词频分析技术挖掘热点数据
  • ES6-简介、语法
  • 诚迈科技子公司智达诚远与Unity中国达成合作,打造智能座舱新时代
  • 算法与数据结构(十)--图的入门
  • 【Go 基础篇】Go语言 init函数详解:包的初始化与应用
  • wazuh环境配置及漏洞复现
  • Java接收前端请求体方式
  • 私有化部署即时通讯平台,30分钟替换钉钉和企业微信
  • 如何深入理解 Node.js 中的流(Streams)
  • MSP430FR2xxx开发(一)添加driverlib
  • 【C++】做一个飞机空战小游戏(九)——发射子弹的编程技巧
  • 34.SpringMVC获取请求参数
  • TC1016-同星4路CAN(FD),2路LIN转USB接口卡
  • Android源码——从Looper看ThreadLocal
  • 16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及JDBC示例(4)
  • MySQL 自定义 split 存储过程