Android SDK开发初体验 --aar打包无法引用三方依赖问题

今天周末,也是刚起床,昨天晚上睡觉比较晚一点钟才睡,为了就是实现一个SDK打包问题,虽然不是上班时间,但由于负责2项项目的研发,用工作的时间明显不够用,而且这也是我第一次接触到SDK开发,内心是有点抵触的,但为了使自己能够更加优秀,就开始学习了SDK开发的基本的思路和知识点。

其实SDK开发和app的开发都差不多,主要的区别在于SDK开发需要集成。集成也有两种方式一种是打包成jar包,另外一种是打包成aar文件,区别在于jar包的文件只有class类不包含资源文件,aar包含资源文件。

对于我们聊天的SDK里面是有聊天页面的,所以我这里的打包方式是基于aar打包的方式

step one

1.打开gradle application改为library  applicationId删除。

2.打开清单文件。把红框中的内容去掉

3.选择release 方法步骤如下图

4.点击androidstudio右上角的gradle 步骤如下 点击 assembleRelease 

5.编译成功后 找到aar


到这里aar的打包流程差不多已经结束了,但如果你认为这样会就能成功,那还不如去百度搜打包aar一大把的资料,我还有必要写这篇文章吗?

答案显然不是,当你打包成功使用一个测试的项目进行测试的时候你会发现很有问题。主要问题就是涉及到第三方依赖的问题,你会发现,当你引用SDK接口运行的时候找不到aar中引用的三方库,为什么呢?原因在于打包aar只是单纯的引用library项目中的class和资源,对于需要的第三方依赖是没有引入到aar中的,一种简单的方法就是在你的项目gradle中重新引入依赖,这样是可以运行的,但这本身就是一个问题,所以不推荐使用这种简单粗暴的方法

具体的方法我现在只知道两种如果有小伙伴知道其他方法的可以交流一起学习成长,主要如下

一种是直接把三方库作为jar包导入到你的SDK中,如果有很多的引入呢都用jar包  貌似也可以。但我这里不是这样处理的,如果你有兴趣的话可以尝试一下,也可以跟我交流你是怎样引入以及打包成SDK并能够正常运行的

还有一种就是使用maven,这种方式在很多地方都用到过,对于aar中有第三方依赖这种方法很实用,也很简单,虽然在实践的过程中花费了我大量的时间毕竟是第一次接触SDK,通过这篇文章能够让更多的朋友少走弯路,节省大量时间,如果对你有帮助的话。记得给个小赞哟,闲话不多讲,就是干

打开你的SDK。gradle文件配置如下

第一步

第二步 implementation'com.novoda:bintray-release:0.2.7'

点击Android studio右上方的同步一下。 下面的重点来了 groupId 中的xxx是你公司的名称这个对于程序员的你来说应该都知道

下面这段放在依赖三方的下面。然后再点击同步

publishing { publications { maven(MavenPublication) { groupId 'com.xxx.im' //You can either define these here or get them from project conf elsewhere artifactId 'IMLib' version '0.0.2-SNAPSHOT' artifact "$buildDir/outputs/aar/app-release.aar" //aar artifact you want to publish //generate pom nodes for dependencies pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.implementation.allDependencies.each { dependency -> if(!"unspecified".equals(dependenciesNode.name)){ def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dependency.group) dependencyNode.appendNode('artifactId', dependency.name) dependencyNode.appendNode('version', dependency.version) } } } } } //publish to filesystem repo repositories{ maven { url "$buildDir/repo" } }}

同步完成后,点击Android studio的右上角的grandle你会找到如下图所示


点击publish 编译完成后,你会发现我们想要的aar文件和pom文件,简单介绍一下pom文件,这个文件就是我们的第三方引用文件。我们引用三方文件有两种一种是compile 现在多用implementation或者api 区别可以在网上找这种很多的,当你用这种方式的时候其实就是引用的jar包可以在External Libraries中找到,还有一种方式就是使用pom的方式引用这种主要是在进行SDK开发的时候用的比较多,这个也是我第一次遇到

打开pom文件进行查看你会发现你引用的三方的文件名称版本号等

这样打包SDK就算完成了,如果你有私服的话也可以把生成的文件放入到私服中,别人使用你的SDK的时候他也可以通过implements的方式来引用你的SDK了

打包完成。如何使用呢。很简单。在你的项目的根gradle中加入本地路径

项目gradle中加入

implementation ('com.zhoafan.im:IMLib:0.0.2-SNAPSHOT@aar'){transitive=true}就可以了。 transitive=true的作用就是引用三方依赖pom文件

接入接口运行 还是会出现一些问题 如你引用第三方资源失败 主要是你没有在根gradle中引入三方的相关库如。 maven{url'https://jitpack.io'}等等

还有就是pom中需要把implementation'com.novoda:bintray-release:0.2.7依赖去掉 还有就是不相关的引用删掉   我出现的引用出现的问题也就是这两种问题,如果对你有帮助 记得点个赞👍  如有更好的关于SDK开发的文档和资料也希望留言。如还是不行记得留言。还有就是这篇文章主要是SDK打包到本地使用  如有时间再来一篇关于上传私服引用的SDK开发

祝大家周末愉快,也快到元旦了。提前祝大家元旦快乐!!!

最近有读者问我如何将sdk生成的文件上传到私服,为此做了一篇文章来讲解介绍了下,如果有读者对上传到服务器有疑问的。可以查看我的另外一篇关于如何上传到服务器的文章https://www.jianshu.com/p/68d2d4e217b5

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容