-
假如我们在sdk中的build.gradle中加入依赖,开发完毕后直接打包,这里会出现一个问题就是打出来的包里面并不包含第三方库,会出现类找不到的情况,这个时候需要第三方开发者自己来导入我们sdk中所需要的依赖,假如我们不提供文档,开发者们都不知道要导入哪些?
-
我们使用arr打包方式,将我们用到的第三方库下载下来放进libs里面然后打包,这样可以打出来的包可以把第三方库打包进去使用!但是这样又会出现一个问题就是第三方开发者经常会遇到包冲突现象!
针对上面的问题提供以下几种思路:
- 提供开发文档在文档注明需要哪些第三方,把android常用的第三方库让开发者自己导入,例如okhttp,因为这些常用,所以开发者觉得这些都不是事,不用这个sdk我都会导入这些三方库
- 把不常用的库自己封装到sdk中,因为不常用很少有开发者会用产生版本冲突现象,例如dagger2等等!
- 使用maven仓库,用bintray进行版本管理
怎样将注解类的三方库封装进SDK?
这里其实我想到的是一个很笨的方法,但是确实是能解决问题的方法,如果读者有更好的方法,欢迎交流!
以dagger2为例,怎样将他封装进sdk?
步骤1
大家都知道使用dagger会用到如下东西:
apply plugin: ‘kotlin-kapt’
dependencies{
implementation ‘com.google.dagger🗡version’
kapt ‘com.google.dagger:dagger-compiler:versio’
}
我们按照上面的方式配置好以后,配合我们的业务代码,我们运行会通过kapt插件来生成中间的业务代码,生成的地方就是在:
/build/generated/source/kapt/debug
步骤2
我们将这些生成的中间类全部拷贝出来,放在我们sdk新建的一个目录下例如我这里新建的文件夹dagger
步骤3
我们业务代码需要导入生成中间类,例如下面的DaggerServiceComponent:
DaggerServiceComponent.builder().serviceModule(ServiceModule()).build().inject(this)
DaggerServiceComponent类我们这里不使用中间类,我们直接使用我们拷贝出来的类就行了!这样基本上dagger就通了!
步骤4
这个时候我们再将我们build.gradle中的dagger配置全部删掉,例如删掉前面的:
apply plugin: ‘kotlin-kapt’
dependencies{
implementation ‘com.google.dagger🗡version’
kapt ‘com.google.dagger:dagger-compiler:versio’
}
步骤5
我们将dagger的库下载下来放libs:
步骤6
因为我们要把第三方库下载下来自己打包进sdk,所以这里我们采用的是arr打包的方式!直接打包出来!这样我们丢给第三方开发者他对我们sdk中的dagger就并不需要做各种麻烦的配置了!
打包的方式
arr的打包很简单的
-
我们新建好了library的module
-
找到IDE右边的gradle,找到本library下build文件夹下的assemble运行就是了
jar打包稍微麻烦一点
- 在library下的build.gradle中假如如下代码:
def SDK_BASENAME = “$SdkName” /* 生成jar包的名字*/
def SDK_VERSION = “_V$VersionName”
def sdkDestinationPath = “build” /设置生成的jar包输出的路径/
def zipFile = file(‘build/intermediates/packaged-classes/release/classes.jar’)
//生成一个新的包时候调用这个方法删除原来的包
task deleteBuild(type: Delete) {
delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + “.jar”
}
//打包脚本
task makeJar(type: Jar) {
from zipTree(zipFile)
from fileTree(dir: ‘src/main’, includes: [‘res/**’])
baseName = SDK_BASENAME + SDK_VERSION
destinationDir = file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild, build)
2.找到IDE右边的gradle,找到本library下other文件夹下的makeJar命令运行就是了,也可以使用命令gradlew makeJar操作
混淆打包可以参考这里
第一次完sdk开发,估计有很多地方有待优化!如果你有更好的方式方法我们可以交流
作者:imkobedroid
链接:https://www.jianshu.com/p/5578132d28bb
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
写在最后
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料
如果你熟练掌握以下列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包,最后觉得有帮助、有需要的朋友可以点个赞
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
可以点个赞
[外链图片转存中…(img-5gFW3lln-1712342451161)]
[外链图片转存中…(img-rmSj5Mq5-1712342451161)]
[外链图片转存中…(img-riLbjdJI-1712342451162)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!