1.组件化结构: app主项目 + library1库+library2库
1.一般情况 主项目app依赖library1和library2:只要添加依赖库,就可以直接调用library中的方法了。但是如果要是想直接调用library库中的远程依赖或者jar,那么需要library库在添加依赖的时候使用api而不是implementation。
2.app可以直接依赖library,也可以直接依赖library生成的aar。aar可以把代码 资源文件 布局 以及libs下面的jar都打进去,所以app不仅可以直接调用library中的方法还可以直接使用其依赖的jar中的方法。但是需要注意的是library是不能将自己libs下的aar和build中的远程依赖打进去的。所以遇到这种情况需要特殊处理。
3.如果你需要给别的项目提供aar,而生成aar中的library中涉及到依赖别的aar或者远程依赖库怎么办呢?其实不用担心,自己的项目用到什么aar和 远程依赖,就该怎么集成怎么集成就行了 ,为了防止版本冲突最好自己用的aar和远程依赖的版本和主项目一致就可以了。
4.如果library需要使用某个jar 而主项目也使用此jar 怎么办呢?怎么避免重复呢?可以将主项目的jar复制到library的libs中,library在添加的时候用provided。这样就不会将此jar包打入aar中,然后将此aar提供给主项目直接可以使用不会报错。远程依赖亦是如此。
总结:主项目直接依赖自己项目中的library,library中使用api添加依赖或者jar,则主项目既可以直接用library的方法又可以用library的libs下的jar包和远程依赖 。
如果主项目需要使用library1中的aar1中的jar,那么library1再引入aar1的时候需要用到api
大抵如此,有问题再继续追加....



