在日常对接sdk 或者Android开发中我们通常会用到 一些第三库 ,包,或这api,一部分是直接依赖远程仓库中的 ,还有一部分就是我们放在本地 模块下的libs目录下的,当我们多个moudle都依赖同一个库时,要怎么办呢?
这是我昨天练习的时候遇到的一个问题,我的Android项目是从unity中导出的 ,unityLibrary模块下的libs目录中有unity PlayerEngine的sdk ,也就是指的我们常见的classes.jar包,com.unity3d.player.UnityPlayerActivity 中就引用了这个jar包中的API。
当我新建了一个Module,用来给Unity发消息时,我发现 UnityPlayer.UnitySendMessage
这个API,也要用到 classes.jar的库,当然直接copy一份放在当前模块的libs目录下可以解决这个问题,但是我觉得一定可以跨模块依赖到unityLibrary下的 库。
我们平时最常见的实现依赖的就是: implementation ,implementation指令依赖是不会传递的,也就是说当前引用的第三方库仅限于本module内使用,其他module需要重新添加依赖才能用。
在查阅文档之后我发现还有另外一种 添加依赖的方式 就是吧 implementation 改为 api
gradle 中依赖implementation、api的区别:
其实api跟以前的compile没什么区别,将compile全部改成api是不会错的;
而implementation指令依赖是不会传递的,也就是说当前引用的第三方库仅限于本module内使用,其他module需要重新添加依赖才能用,下面用两个图说明:
以上就是两个api的区别,其实第三方库的复用,也可以直接把其他要用到这个库的模块,放在库所在的模块下面,这样的话 implementation 也可以实现,我们项目中就是用的这种方式。如图:
今天的分享结束,感谢来访!