关于aar的一些坑

1. gradle工程如果有远程依赖,则生成aar后,默认不会包含这些远程依赖。所以如果主工程引用了若干aar,应该检查aar对应的原工程是否有远程依赖,如果有的话,都应该在主工程中添加。否则编译会报NoClassDefineException。以github上的usb carema驱动为例,引用其aar的同时应包含对应远程依赖:

dependencies {
	compile fileTree(include: ['*.jar'], dir: 'libs')
	compile 'com.android.support:support-v4:26.+'

        compile(name: 'libuvccamera-release', ext: 'aar')
        compile(name: 'usbCameraCommon-release', ext: 'aar')
        compile "com.android.support:support-annotations:${supportLibVersion}"
        compile("com.serenegiant:common:${commonLibVersion}") {
            exclude module: 'support-v4'
        }
}

repositories {
    jcenter()
    flatDir {
        dirs('libs')
    }
}

2. 在子工程中引用了若干aar,在编译时,主工程报错:找不到对应的aar。解决的办法如下:

第一种,在主工程的libs下添加对应的aar。比如子工程中引用了lib-release.aar,在主工程中的libs目录也放一份,并配置gradle。

dependencies {
	compile fileTree(include: ['*.jar'], dir: 'libs')
	compile 'com.android.support:support-v4:26.+'
        compile(name: 'lib-release', ext: 'aar')
}

repositories {
    jcenter()
    flatDir {
        dirs('libs')
    }
}

第二种,在主工程build.gradle中配置子工程放置aar的路径。xxx为子工程的名字。

repositories {
    jcenter()
    flatDir {
        ...
        dirs project(':xxx').file('libs')
    }
}

第三种,在最外层Project下的build.gradle中配置:

allprojects {
    repositories {
        jcenter()
        flatDir {
            ...
            dirs project(':xxx').file('libs')
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值