Android SDK 开发
无论是否开源,只要是编写一个库提供给其它的项目去使用,就可以统称为 SDK 开发。
SDK 开发和传统的应用程序开发会有一些不同之处。
- 首先 ,SDK 开发界面相关的工作会相对比较少,许多库甚至是完全没有界面的,因此 SDK 开发多数情况下是以实现功能逻辑为主的。
- 其次,产品的形式不同。应用程序开发的最终产品可能是一个可安装的 APK 文件,而 SDK 开发的最终产品通常是一些库文件,甚至只有一个库的引用地址。
- 最后,面向的用户群体不同。SDK 开发面向的用户群体从来都不是普通用户,而是其他开发者。因此如何让我们编写的库可以保持稳定的工作,同时还能提供简单方便的接口给其它开发者去调用,这是我们应该优先考虑的事情。
由于 app 模块是一个专门用于开发应用程序的模块,所以会新建一个模块,并在此模块中实现具体的功能。
在最顶层的目录右击 -> New -> Module -> 选择 Android Library。
查看 Library 模块中的 build.gradle 文件:了解一下应用程序模块和库模块的主要区别。
1 | // com.android.library 表示这是一个库模块。而 app 模块内的 com.android.application 表示是一个应用程序模块。 |
当开发和测试工作完成后,接下来要做的事情就是将编写的库发布出去。
每一个 Android 项目工程最外层目录下的 build.gradle 文件中都会默认配有仓库,一般包括 google() 和 jcenter() 两个仓库,前者包含的主要是 Google 自家的扩展依赖库,后者包含的大多是一些第三方的开源库,如 Retrofit、Glide 等,所以,我们也要将自己的库发布到 jcenter 仓库才行。
首先,要注册一个 Bintray 账号,然后创建一个新的仓库,Bintray 是一个专门提供软件分发服务的网站,jcenter 仓库的发布与下载服务都是由它提供的。(提示,qq 邮箱或者 163 邮箱可能无法注册,会一直报红)
然后使用第三方插件 bintray-release 将代码发布到 jcenter 仓库中,在库模块的 build.gradle 文件尾部加入配置:这段配置就表示将插件引入模块中。
1 | apply plugin: "com.novoda.bintray-release" |
然后再加入一段 publish 闭包来设置一些必要的参数:
1 | publish { |
然后打开 Android Studio 底部的 Terminal 窗口,添加命令:(Mac 系统)
./gradlew clean build bintrayUpload -PbintrayUser=USER -PbintrayKey=KEY -PdryRun=false
- USER 部分要替换成 Bintray 的用户名
- KEY 部分要替换成 Bintray API Key
执行命令之后,就可以将库上传到之前创建的 Maven 仓库中。然后将库发布到 jcenter 仓库中,并等待邮件提示。
注:更加详细的操作,请查看第一行代码。
后续的对库的更新,只需要升级 publish 闭包中的版本号即可,版本号通常以 3 位数字的格式居多。其中,如果是一些 bug 的修复或者是小功能的修改,应该升级最后一个版本号。而如果是一些比较大的功能或 API 变更,则应该升级中间一位版本号。只有涉及非常大的功能变更甚至是整体架构的改变时,才应该升级第一位版本号。
升级完版本号之后,只需要重新执行发布命令,就可以将新版的库发布到 jcenter 仓库中了。
一切都完成之后,最后将库的 GitHUb 主页进行更新,添加一些对此库的使用描述即可。
备注
参考资料:
传送门:GitHub