Android Studio中多moudle依赖aar的配置

Android Studio中多moudle依赖本地aar文件的配置

在Android开发中,我们有时会引入其他第三方的库或者资源等,可能是添加一个jar文件,也可能是添加一个aar文件,又由于aar可以包含资源文件,所以android库通常会打成aar格式的文件,在工程中引用的时候通常有两种方式,一种是引用Maven库中的aar,一种是将aar拷下来,放在libs文件夹下。引用Maven库中的aar比较简单,这里说一下自己在引用本地aar的时候遇到的问题。引用本地的aar也分两种情况:

一、单个moudle依赖aar

直接依赖比较简单:

  1. 先将aar文件拷到libs文件夹下
  2. 在app下的build.gradle文件中作以下配置

    repositories {
        flatDir {
            dirs 'libs' //声明文件目录做为依赖库,'libs'路径是build.gradle的相对路径,目录名称可以任意
        }
    }
    
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs') //如果只有aar包,这行可以不要
        compile (name:'alicloud-android-push-3.1.3', ext: 'aar')
    }
    
  3. 这样就配置完了,重新编译就可以了。

二、多个moudle依赖aar

在多moudle的工程中,我们会很自然地想到把一些公用的aar包放到一个公共的lib库中,而其它moudle依赖这个lib库就可以了。我也是这样想的,以为把上面的配置直接放到lib库中的build.gradle文件中就可以了,没想到在 sync gradle的时候报错了:

Error:Failed to resolve: :alicloud-android-push-3.1.3:
       Open File

alicloud-android-push-3.1.3 就是要依赖的aar,当时觉得好纳闷。就上网查了一下,才发现多moudle依赖aar并不是直接在lib库中直接配置一下就行了,还要在其它moudle中指定aar所在的文件夹,具体做法是这样的:

  1. 将aar文件拷到公共库(如下面的 lib_framework)的libs文件夹下
  2. lib_framework中的build.gradle文件按照以下方式配置

    // project/lib_framework/build.gradle文件中的配置
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs') //如果只有aar包,这行可以不要
        compile (name:'alicloud-android-push-3.1.3', ext: 'aar')
    }
    
  3. Project中的build.gradle文件中按照以下配置指定依赖库目录即可,注意是在 Project中的build.gradle文件,就是最外层的 build.gradle文件。

    // project/build.gradle文件中的配置
    allprojects {
        repositories {
            google()
            jcenter()
    
            flatDir {
                // 声明所有工程都将'lib_framework'库下的'libs'目录做为依赖库
                dirs project(':lib_framework').file('libs')
        }
    }
    
  4. 然后重新 sync 一下,就不会报错了。



由于水平有限,如果文中存在错误之处,请大家批评指正,欢迎大家一起来分享、探讨!

博客:http://blog.csdn.net/MingHuang2017

GitHub:https://github.com/MingHuang1024

Email: [email protected]

微信:724360018

你可能感兴趣的:(android开发)