在集成的过程中遇到了一些问题,如果将aar放到lib目录下,aar里面依赖的第三方库无法调用,因为编译aar的时候,并没有将第三方依赖的库编译到aar中,aar中只有源代码\资源文件等.
在网上搜了一大堆解决方案,有说在主项目中把aar需要的依赖加上,虽然说也可以,但是违背了项目需求的意愿,不能满足将某个模块抽取出来,想使用的时候就集成进去,不想用直接不集成. 而这里要提出的解决方案是将aar打包发布到本地的Maven仓库,如果公司有私服的话,可以直接放到私服上,私服上会自动让aar继续依赖其他的第三方库,这样在主项目中就可以在build.gradle中以依赖的形式来集成aar.
首先在开发的模块中的build.gradle中加入上传本地Maven仓库的配置:
apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { pom.groupId = "com.crypt.lord.feature.news" pom.artifactId = "newsclient-release" pom.version = "1.0.0" repository(url: "file://localhost/" + "Users/hepengcheng/Library/Android/sdk" + "/extras/android/m2repository/"); } } }我这里建立的是本地仓库,如果有自己的私服的话,可以这样配置:
apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { pom.groupId = "com.crypt.lord.feature.news" pom.artifactId = "newsclient-release" pom.version = "1.0.0" repository(url: "http://localhost:8081/nexus/content/repositories/newsclient/") { authentication(userName: "admin", password: "admin123") } } } }然后在命令行中进行编译:gradle uploadArchives
最后在主项目中进行引用:
配置仓库地址 repositories { flatDir { dirs 'libs' } maven { url "https://jitpack.io" } maven { url "http://172.16.18.155:8081/repository/android.lianmeng" } } 引用aar compile 'android.sdk.news:newsclient-release:1.0.0'搞定!