关于写sdk的时候,避免jar冲突的一些小见解

SpringBoot项目实战:如何快速集成移动云MAS短信SDK(附依赖冲突解决方案) 本文详细介绍了在SpringBoot项目中快速集成移动云MAS短信SDK的实战步骤,并重点提供了解决因SDK打包了冗余依赖(如Spring框架)而引发的依赖冲突的根治方案,包括使用Maven Shade插件重写等工程化方法,确保项目稳定运行。 阅读详情

前段日子,有朋友遇到了jar冲突的问题,就是他自己的A.aar里面用到了某个B.jar包,然后他的客户使用了他的A.aar包,但是客户本来的app里面也同样添加了那个B.jar包,于是乎,在不删除客户的B.jar包的前提下,就造成了jar冲突的问题。百度了很多,各种exclude也不起作用。然后我就去问了另外一个大神,大神不愧是大神,问题马上迎刃而解了。不好意思,啰嗦了这么多,下面就说说大神是怎么解决问题的。

关于jar冲突,一般有两种情况。

  1. sdk中起冲突的jar包都是直接把jar包打包进去sdk中的。例如:
    项目A:libs中有C.jar;
    项目B:libs中有C.jar;
    这种情况下就没办法了,只能是其中一个删掉jar才能解决,否则我暂时没有发现解决的办法。

  2. sdk中起冲突的jar包,有一个是通过compile的方式打包进sdk中的。

    • 项目A:libs中有C.jar
    • 项目B:libs中没有C.jar,而是通过在gradle中通过compile(或者implement)进来的。
    • 这种情况下,网络上的exclude就起作用了。具体用法我就不说了。

说了好像没说一样。。。。。。好吧,其实我主要想说的是,对于我们自己写sdk的,要是想引用第三方的项目,最好就是通过以下两种方式:

  1. 在gradle中compile的方式进行引用;
  2. 如果说,实在是没有办法compile,那么我们可以尝试着新建一个library,然后把相关的jar包放到library中,然后我们自己的sdk项目就通过compile那个library来使用相关的jar,这样的话,可以起到和上面一样的效果。

这样写的话,那么我们打包出来的aar就是干净的,不会那么容易跟其他的aar或者jar包起冲突,哪怕是真的起冲突了,也可以在使用的过程中,通过exclude把起冲突的包去掉,不下载下来,从而去使用其他aar中所拥有的那个jar包。
大概就是这么多,如果没有帮到你的话,请见谅,我权当是自己做一下笔记了。

Unity Android SDK集成全解析:从aar/jar原理到Gradle依赖冲突解决 在移动应用开发中,SDK集成是实现广告变现、支付、社交分享等核心功能的关键环节。其原理在于通过原生库文件封装特定功能模块,供主程序调用。对于Unity开发者而言,掌握Android平台SDK集成技术能显著提升开发效率与项目稳定性。实践中,开发者常需处理.aar与.jar格式库文件的差异,理解它们分别作为Android专属包和Java标准包在资源包含上的区别。通过合理配置Plugins/Android目录结构,并运用Gradle依赖管理机制,可有效解决多SDK版本冲突问题。这些技术最终应用于Unity游戏开发 阅读详情

相关推荐

配置 Druid 数据源及密码加密-SpringBoot 实战基础

在SpringBoot中配置 Druid 数据源及密码加密的方法前文集成 MyBatis Plus,实现了一组增删改查接口。在启动服务时,从控制台中可以看出 Spring Boot 默认使用 Hikari 作为数据库连接池,Hikari性能很优秀。在国内使用较多的连接池还属阿里开源的 Druid,中文发音为德鲁伊。Druid 结合了 C3P0、DBCP 等 DB 池的优点,同时还加入了日志监控,可以很好的监控 DB 池连接和 SQL 的执行情况。...

m0_67698950的博客 954

SDK,JDK,JRE,JAR,API解释及关系

SDK SDK(Software Development Kit),软件开发工具包,是一个覆盖范围相当广的名词,可以说辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做 SDK。 SDK是一系列文件的集合,他为软件的开发提供一个平台为软件开发使用提供各种API提供便利。 JDK JDK(Java Development Kit)Java开发工具包,是SUN Microsystems针对Java开发者的产品,JDK已经成为使用最广泛的JAVA SDK 。 可以认为JDK是SDK的一个子集 。 J

Lemon的博客 5527

STM32电机库(ST-MC-Workbench)实战指南——三电阻电流采样电路参数配置详解

本文详细解析了STM32电机库(ST-MC-Workbench)中三电阻电流采样电路的参数配置方法,涵盖电阻选型、放大增益计算、滤波时间优化等关键步骤。通过实战案例和调试技巧,帮助工程师快速掌握电流采样技术,提升电机控制系统的精度与稳定性。特别针对ST-MC-Workbench界面参数设置提供了详细指导。

weixin_29186249的博客 505

Android【SDK】 jar、so、aar包的区别

在软件开发的世界里,SDK(Software Development Kit)扮演着至关重要的角色。它不仅极大地提高了开发效率,还为应用程序的扩展和集成提供了无限可能。本文将深入探讨SDK的定义、分类、开发原则以及实践经验,旨在为开发者提供一份全面的SDK开发指南。SDK,即软件开发工具包,是一套专门为软件开发而设计的工具集合。它可以是为开发特定软件包、软件框架、硬件平台或操作系统的应用程序而设计的。SDK通常包括一系列开发工具,如编译器、调试器、和应用程序接口(API),以及可能包含文档和示例代码。

一碗清深的博客 2979

告别外置天线!手把手教你用HFSS仿真设计一个20x40mm的433MHz PCB蛇形天线

本文详细介绍了如何使用HFSS仿真工具设计一个20x40mm的433MHz PCB蛇形天线,解决物联网设备小型化中的天线集成难题。通过对比外置天线与PCB天线的性能差异,深入解析蛇形天线的电磁学原理,并提供从建模到优化的全流程实战指南,帮助工程师实现高效、低成本的微型化天线设计。

weixin_30606461的博客 430

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 527

项目开发中常用的jar包以及sdk

项目开发中常用的jar包以及sdk 1.MetricService Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同时,Metrics能够很好的跟Ganlia、Graphite结合,方便的提供图形化接口。 2.Guava中的缓存 引入com.google.common.cache包,使用缓存。 /** * 保存各个websocket连接 */ private Cache<

xiaotai1234的博客 1734

坐标偏移不一致或瓦块重名的多个OSGB工程的融合

介绍如何使用实景三维小助手OSGBLab对坐标偏移不一致或瓦块重名的多个OSGB工程的融合

OSGBLab的博客 3231

java项目引入sdk后打成jar包

在项目中添加了sdk后,打包项目到服务器里报错找不到文件的处理方法

cjy1575944940的博客 1474

多模态论文笔记——BLIP

本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:BLIP。

haopinglianlian的博客 2453

国科大学习资料--模式识别与机器学习(黄庆明)--2020期末考试题

国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 ============================================================================================================================================================

无名何许人的博客 2599

SDKjar从打包到混淆

因为需要给客户提供特定功能的SDK,但是又不想让自己的代码暴露给别人,所以打包后的jar包还是有必要做下混淆工作的,都是亲测有用的一.打包首先说打包,在开发中需要测试所以可能在项目中写或者通过依赖库的形式写的,我是通过库的形式,在打包上as已经提供了打包好的jar包存放在build/intermediates/bundles/debug或者release下classes.jar,或者自己通过grad

duo_shine的博客 700

基于51单片机设计的花样流水灯设计

花样流水灯是一种常见的LED灯效果,通常由多个LED灯组成,通过控制每个LED灯的亮灭顺序和时间,实现花样流水灯的效果。在51单片机中,可以使用定时器和端口控制来实现这一效果。

3429

解决aar内含jar包冲突的方法

1背景和问题 最近在尝试将两个SDK集成到一个App中。这两个SDK都是以aar格式提供的,在分别集成时都可以正常工作。但如果同时使用两个SDK,编译器会报告错误: Execution failed for task ':transformClassesWithJarMergingFo...

chengoufei1914的博客 5587

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android Studio中解决framwork.jar和SDK api冲突的方法

Android Studio中解决framwork.jar和SDK api冲突的方法 Android开发中,系统工程师可能需要在系统层添加接口,这些新加的接口在Android Studio应用调用时常常会因找不到接口而导致编译不通过。现以SetupWizard_oem应用为例来说明解决方法。一、添加相应的Jar包到编译环境。 out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes-full-debug.jar取出该jar放置到

jb_home的博客 1482

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jar包名冲突gradle_解决aar内含jar包冲突的方法

1背景和问题最近在尝试将两个SDK集成到一个App中。这两个SDK都是以aar格式提供的,在分别集成时都可以正常工作。但如果同时使用两个SDK,编译器会报告错误:Execution failed for task ':transformClassesWithJarMergingForDebug'.> com.android.build.api.transform.TransformExce...

weixin_33806859的博客 929

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jar包名冲突gradle_完美解决android 项目jar包冲突的问题

大家在做开发中竟然需要用到一些三方库 或者 需要集成三方的SDK开发包,尤其是项目特别庞大的时候,引用的三方的东西特别多,那么肯定会碰到一些jar包冲突的情况。常见的情况有以下几种1.项目自己引用jar包重复2.项目中jar包和三方SDK3.三方sdk之间都含有相同类4.打包时候出现编译错误,出现冲突1.项目自己引用jar包重复com.android.dex.DexException: Multi...

weixin_39963819的博客 967

jar版本冲突问题解决

jar版本冲突问题解决

QQ563627436的博客 1622

android 项目jar包冲突问题解决

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2401_84123201的博客 1067

导入 jar包 aar包名冲突

背景 使用其他部门的两个sdk,因为出自同一个部门,有些包名类两个不同的sdk也会有相同的,只是部分代码,并不是aar 集成aar 那种嵌套方式。 已经让他们在改了,但是我着急,只能先另辟蹊径 解决 0x1.在library中集成(没有成功 1.首先在主程序中集成其中一个aar或者jar 2.在项目中创建一个module,然后在module中集成其中另一个aar 或者jar,实现其入口函数,也就是自己在重新封装一下 3.然后通过主工程引入module,或者引入通过assemble生成aar 或者生成j

qq_35629609的博客 912

如何解决 maven 第三方 sdk 的 jar 包冲突

背景 最近, 我们提供给公司其他部门的 sdk, 对方在引入后, 运行报错, 因为他们项目中依赖的 jar 和我们提供的 sdk 依赖的 jar 冲突. 然而, 仅仅使用 exclusions 排除依赖, 可能并不能真正解决问题. 假如我们就是想引入两个不同版本的依赖呢? 方案 事实上, 已经有成熟的 maven 插件可以做这件事情, 就是 maven-shade 插件. 该插件原理就是手动配置好需要重命名的包和要改名为的包, 在 mvn package 时, 就会自动把依赖的 jar 修改 class 文

艾斯比 1798

android 项目jar包冲突问题解决,android面试题选择题

在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!加入我们吧!

m0_60721823的博客 535

解决NoSuchMethodError,maven的依赖冲突,jar包冲突,SecurityException,ExceptionInInitializerError问题。

遇到maven的依赖冲突三种主要解决方法,解决NoSuchMethodError,maven的依赖冲突,jar包冲突,SecurityException,ExceptionInInitializerError问题。 signer information does not match signer information of other classes in the same package SecurityException: Invalid signature file digest for Manif

MovemOemVeovE的博客 2008

将framework.jar API优先于SDK API被调用和识别,支持将多个jar中的api优先级排序。

一、前言 在开发一些和系统有关的功能时,通常需要用到跟系统相关的api,通过引入framework.jar依赖包来实现,但是引入后编译依然报错,提示找不到对应api,或者找到的是SDK中同名的api(系统已经将api重写的情况下),针对这种情况,我们需要将framework.jar中的api优先于sdk中的api调用。 framework.jar包所在位置(需要先全编译系统)在\out\target\common\obj\JAVA_LIBRARIES\framework_intermed...

May-gemini的博客 795
上一篇: [Exception]Cannot set the value of read-only property 'outputFile'
下一篇: Android性能优化:内存泄漏(只是做个总结笔记)
pgm_monkey
博客等级 码龄11年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值