AndroidStudio 多层级 Module 对 aar 引用问题

2019-09-23 16:34:38

最近碰到这么个恶心的问题


问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件。(同时如果又有Module C 依赖了Module B,C也会出同样的问题)


解法:

1、正常给一个module加入aar文件的步骤是:

  1. 把aar文件放入module文件夹下libs包下

  2. 然后在项目的build.gradle文件的android节点下加入


    1. repositories {
          flatDir {
              dirs 'libs'
          }
      }
  3. 然后继续在dependencies节点中加入:compile(name: 'svprogresshud-release', ext: 'aar')

 

2、就是这样会引发上面的问题,所以你要做的是,给所有依赖或间接依赖Module A 的Module的build.gradle的android节点下加入

 

repositories {
    flatDir {
        dirs '../common/libs','libs'
    }
}

其中dirs前面一段路径是Module A的文件夹

 

问题原因:

对于Module B和Module C来说,他们依赖了Module A,不管用不用,他们都会去把Module A的依赖走一遍,当走到你添加的aar本地依赖时,他们去找aar的路径也需要你给出,而且给的方式如果是libs这样的路径,它会去找自己包下的libs,里边自然没有,所以你要给出另一个相对路径:../common/libs这样才能找到,而为了不影响自己这个Module对自己Module下的libs的引用,就使用逗号再添加一个路径


  • 2020-02-04 18:43:10

    AssetManager.finalize() Timed Out 解决办法以及分析

    在我们的项目崩溃中,有一个比较常见的bug,就是 java.util.concurrent.TimeoutException android.content.res.AssetManager.finalize() timed out after 10 seconds 意思简单明了,就是说在AssetManager析构的时候发生了超时异常。

  • 2020-02-06 13:32:10

    android.os.NetworkOnMainThreadException

    在Android 4.0以上,网络连接不能放在主线程上,不然就会报错android.os.NetworkOnMainThreadException。但是4.0下版本可以不会报错。

  • 2020-02-07 23:46:44

    You must call removeView() on the child's parent first解决办法

    出现这样的情况最多是发生在recyclerView中,holder复用的过程中,多次添加view,第一次添加的时候view有了父类了,可能就是复用引起的。 我是发生在给recyclerView添加广告view的时候发生的。

  • 2020-02-11 17:43:35

    基于VCamera,仿微信录制短视频

    vcamera.so这个确实挺好用,可定制性也挺高,但是确定也不小,需要引入的这个so包,10M啊。对于安装包苛刻的用户,这是致命啊。 我现在是抛弃他了。但是在这里还是记录一下用法吧。防止以后再用他。