aar使用相关

关于库aar使用问题:

从项目类库中取出来的aar,不会包含三方引入的包的,可以通过一些合并aar脚本处理,或通过maven关联处理。

 

so放在lib下,需要build文件中配置:

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

关于库拓展包copy:

1.aar形式引入的拓展包,不可copy

2.通过脚本编译引入的拓展包,可以copy,并且只能copy在AS工具中

aar关联引用:

但是如果aar中包含了远程依赖,例如aar中依赖了第三方库:

compile 'com.zhousf.lib:okhttp3:2.8.6'

若采用上面的方法引用则在运行时会找不到okhttp3 库中的类。

针对这种问题可以采用maven仓库来解决,我们可以将aar生成到本地或远程maven仓库,再引用仓库中的aar.

 

jars目录下放aar,android标签内(外也行)引用:
repositories {
    flatDir {
        dirs 'libs'
    }
}
compile(name: 'oklib-release', ext: 'aar')

注意:使用库的aar不会把compile 'com.android.support:percent:22.2.0'内容也附带过来,但是使用jcenter引用的方式会附带过来

 

类库中使用aar文件方案:

解决:

1.在主app依赖文件中指向类库libs,并引用类库

//主app的build文件需要指向类库的libs(包含aar文件)
repositories {
    flatDir {
        //dirs 'libs' 这里可以配置多个libs指向路径
        dirs project(':oklibhelp').file('libs')
    }
}

引用类库:compile project(':oklibhelp')

2.在类库中,指向libs,并引用

//类库这里也需要指向一下,不然无法运行
repositories {
    flatDir {
        dirs 'libs'
    }
}

引用

compile(name: 'windowlib-release', ext: 'aar')
compile 'com.android.support:design:26.0.0-alpha1'
compile 'com.alibaba:fastjson:1.2.35'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

注意: 多个类库关联,那么中间的类库也需要指向libs

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

注意:

1.遇到一个坑,估计是oklibhelp库一定要完整独立,最好不好再依赖其他类库,其中只要有aar就行了,其他源码依赖通过其他方式,不然会造成aar异常,总是无法安装apk并且不提示错误

2.aar太多,会冲突,导致安装不成功,初步估计是图片的okio与okhttp版本不同

发布了101 篇原创文章 · 获赞 5 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览