美文网首页Android文集Android第三方库Android studio编程
Android 写自己的开源库,发布到 JitPack.io

Android 写自己的开源库,发布到 JitPack.io

作者: icodeyou | 来源:发表于2015-12-30 09:59 被阅读10671次

博客地址首发:http://icodeyou.com/2015/12/23/2015-12-23-AndroidLibraryJitPack

之前一直在用别人的开源库,尤其有了 Gradle 后,依赖别人的开源库就更简单了,只需要在项目的 build.gradle 文件中添加上类似 compile 'com.github.icodeu:CommonAdapter:v1.0' 的就好了,剩下的就可以交给 Gradle 帮助我们完成 library 依赖了。但这个是怎么做的,如果你也想学习怎么写自己的 library,然后能够提供给别人使用的话,可跟着本篇博客学习一下。本篇分为两个部分,首先讲解如何单纯的写个 library 并在本地自己依赖着(玩),然后进入主题讲解怎么使用 JitPack.io 来发布我们自己的 library,所以如果你已经知道了怎么写 library,可以直接跳到第二部分。

我也试图在网上找一些关于使用 JitPack.io 的教程,但是搜出来的基本是这篇的复制品,根本没讲什么实质性的东西,所以一切只好自己来了。

如何写 library

在本节,我们一起来新建个 library,打开 Android Studio,New Project,在此工程名为 Hellolibrary,此后一直点击 next 直至 finish 即可。此时应该是只有一个 module 名为 app,一会我们会把它当做依赖 library 的示例模块来使用,暂时先不管,我们先来创建一个 library,File->New->Module,选择 Android library,之后起个名字,在此叫做 library,finish 即可,此时工程目录如下所示,其中 app 用来依赖使用 library。

img img img img

怎么指定一个 module 到底是普通的 application 还是 library 呢?打开 module 对应的 build.gradle 文件,看第一行 apply plugin: xxx,如果是 application 的话,plugin 就是 'com.android.application',library 的话就是 'com.android.library',就这么简单,如下图:

img img

接下来在 library 中 New->Java Class,在此就是演示,所以我们就尽可能把不重要的东西简单化,名字就叫做 CustomUtil,只有一个静态方法,如下图所示:

img

其实到此最简单的 library 就写好了,下面就在 app 中来依赖刚才的这个 library 看看效果。打开 app 的 build.gradle,在最后的 dependencies 节点添加一行,compile project(':library'),再 Sync 一下 Gradle即可,这样 app 就完成了对 library 的依赖。另外还有一种方法去依赖 library,右键 app 这个 module,选择 Open Module Settings,切换到最后一个Tab:Dependencies,点击左下角的加号->Module dependency->选择 library,这样也能完成 app 对 library 的依赖。

img

那怎么能在代码上看出来 app 确实成功依赖了 library 呢?我们打开 app 中的 MainActivity,输入 CustomUtil 试一下,如果发现像下图那样给你智能提示了,那就OK了,从下图还能看到 CustomUtil 类所在的包是 com.icodeyou.library。我们调用一下它吧,如下图也很简单,不解释了。

img img

到此为止我们就自己写了一个最简单的 library 并完成了自己本地的依赖调用,这都是自己玩玩,那怎么能让别人也用上咱们刚才那个高大上的 library 呢,继续往下看。

如何在 JitPack.io Publish Android Library

首先来概览一下我们要完成的最终效果是什么,我之前有一个开源库,地址在 https://github.com/icodeu/CommonAdapter,打开 JitPack.io 的网站,将我的开源库地址粘贴进去,Look up->Get it,即可看到熟悉的 compile 了,按照下面那个提示复制到相应的 build.gradle 文件中就可以完成 library 的依赖了,不信你试试啊。

img

下面就来具体讲解一下如何将刚才本地的 library 与 JitPack.io 结合起来,JitPack 的官方文档在这里 Publish Android library

打开 Project 的 root build.gradle,在 dependencies 节点添加一个 classpath:classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3',再打开 library 的 build.gradle,在文件起始添加如下两行 apply plugin: 'com.github.dcendents.android-maven' group='com.github.icodeu'(注意这是你GitHub的用户名),两个文件的示意图如下:

img img

下面检查你的Project目录是否存在 gradle/wrapper/gradle-wrapper.jar、gradle-wrapper.properties 这两个文件,如果存在可跳过下面这步,如果不存在,请按下面的进行操作。打开当前项目的 Terminal,先后执行 gradle wrapper./gradlew install 两个命令,如下图:

img img img

从 JitPack 首页也能看出来,其实我们是要粘贴一个 GitHub 项目地址进去,所以我们接下来就要把 library 先上传到 GitHub 上面。

在 GitHub 上新建一个仓库,这里命名为 HelloLibrary,之后 clone 到本地,再把 Project 目录所有的文件复制进去,比如在我这里,仓库 clone 到了桌面的 HelloLibrary 文件夹,如下图:

img img

把这些文件 push 到 GitHub 上,push 成功之后,点击项目的 releases->Create a new release,填写好版本号等内容,如下图:

img img

填写好后点击 Publish release 即可,然后我们复制下图红框中的项目地址,粘贴到 JitPack.io 上面,Look up->Get it,在下面就能看到使用方法了。

img img

首先打开 Project root 的 build.gradle,在 repositories 节点添加上 maven { url "https://jitpack.io" },之后打开想依赖这个 library 的模块,比如这里我们是 app 这个 module,在 dependencies 节点添加上 compile 'com.github.icodeu:Hellolibrary:v1.0',Sync 一下 Gradle,这样就可以了。如果 Sync 成功了,那我们在 app 中就成功依赖了 GitHub 上的 library,此时可以打开 app 的 Module Settings,看一下它的 Dependencies,如下图:

img img img

好了,到此就完成了使用 JitPack.io + GitHub 发布开源库了,相比 jCenter 和 MavenCentral 方式简直爽的不要不要的

相关文章

网友评论

  • HWilliamgo:syn的时候报错:No service of type Factory available in ProjectScopeService
    定位错误的地方是:apply plugin: 'com.github.dcendents.android-maven'
    怎么解决呀??
  • 吉凶以情迁:现在情况不对了,我明明只有一个释放的叫0.3,结果一直是v0.3啊可以帮我看看咋回事吗?我特么快疯了http://github.com/qssq/banner/release ,感觉没有jcenter容易,jcenter只是最近出问题了,addjcenter都不识别找不到库,不然我一个命令就发布上去了的。
    吉凶以情迁:我发现个很奇怪的问题,我加上v的可以不加上v就没法弄进去了。
  • jackzhoud:依赖项目的时候出错
    Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.
    是我的仓库多传了一些上去吗
  • emial:请问下如果发布的项目有gradle 插件,怎么部署到jitpack上,我老是报错
    * Where:
    Build file '/home/jitpack/build/app/build.gradle' line: 2

    * What went wrong:
    A problem occurred evaluating project ':app'.
    > Plugin with id 'debug.helper' not found.
  • Xanthuim:就是不太喜欢还有加个“maven { url 'https://jitpack.io' }”这个,如果用jcenter的话就不用了。
    Xanthuim:@大博同学 什么意思?有jcenter还要这个做什么?
    大博同学:如果忘记加maven这个东西岂不是很麻烦,不知道你找到不用jitpack的方法
  • 大大大大苏:Error:Dependency com.github.Huazhiling:ViewPagerRotation:v1.0 on project app resolves to an APK archive which is not supported as a compilation dependency. File: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.github.Huazhiling\ViewPagerRotation\v1.0\2466af26d04557cb52f9277e63ac883171aa820a\ViewPagerRotation-v1.0.apk

    依赖的时候抛出了这个异常...求解
  • 阿明的小蝴蝶:是比 Jcenter 简单 ,可惜就是 Android Studio 默认不去 JitPack 仓库去找,还得自己加 url 自己知道咋回事 给小白用就整不明白 估计会老忘记加 jitpack 的 url
  • 卜俊文:你好,我想问下,我项目类中方法有带注释,但是上传到JitPack后,下载下来用的时候,注释就没有了?这怎么办?
    mcxinyu:注释是单行注释?块注释?还是方法注释?这些是有区别的哦。
  • rrrui:zan
  • c26906a538a5:Error:(50, 13) Failed to resolve: com.github.1990MyLove:HouseKeeper:2.0.0
    Disable offline mode and Sync openFile:C:/Users/wgl/Desktop/HouseKeeper/app/build.gradle"
    open.dependency.in.project.structure"
    我只要同步,就会出现resolve depencies app:debugCompile。。。。很慢很慢,
    我没配置之前,gradle是可以用的
    这是什么原因?
    小六01:@喂借根铅笔 我改过了 还是不行
    c26906a538a5: @Huson 解决了,http://m.blog.csdn.net/article/details?id=51917621
    实际上没问题,只是studio去加载V7库了,很慢
    5b5bf4101dfa:@喂借根铅笔 我也同样出现了这个异常,请问你找到解决办法了吗?该怎么解决呢?求指教
  • 囧_囧:请教个问题,我把demo工程整个上传到github的仓库A中,demo工程中有一些通用的module,使用demo工程这是为了测试这些module。我也想像楼主一样把这些module通过 JitPack.io发布,请教下我是否需要重新建立多个仓库分别存放这些module(module挺多的)?

    A仓库还能抢救下吗? :sob:
  • 囧_囧:挺有意思,我现在是做一个基础的aar然后再本地架设nexus,把aar上传至本地库。楼主 :+1:

本文标题:Android 写自己的开源库,发布到 JitPack.io

本文链接:https://www.haomeiwen.com/subject/oteihttx.html