热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何制作开源依赖库上传至GitHub供他人使用

背景在项目开发中经常会使用别人的第三方依赖库,在之前的Eclipse时代,基本都是通过拷贝jar包引入到工程中去使用。现如今大部分Android开发者

背景

在项目开发中经常会使用别人的第三方依赖库,在之前的Eclipse时代,基本都是通过拷贝jar包引入到工程中去使用。现如今大部分 Android开发者都开始使用Android Studio工具进行开发,只需要在项目下的build.gradle文件中添加依赖,就可以完成第三方依赖库的引用。

大多数情况都是使用别人的依赖库,那么我们为什么就不能考虑自己也写个依赖库让别人使用呢?在此前,我们需要知道如何才能将自己的库上传给别人使用。以下我就介绍一种上传到JitPack让别人使用的方式。


集成

1、创建一个Library

在创建的Project工程中新建一个Module:

项目工程右键 -> New -> Module -> Android Library -> 给库命名如ToastLibrary

然后我们就可以创建一个Module

2、在新建的Module中添加需要提供的依赖文件

我们在这里添加了一个自定义的吐司工具类ToastUtil

注意:如果我们已经有了项目工程时需要将其打包成依赖库,那么就需要将原工程中的核心代码转移到Module中,比如一些接口、工具类、公共的封装类等,原工程只保留UI相关以及封装框架的使用。尤其要注意的一点是不要将Application移过去,如果在Application中已经写了一些通用的方法,如定义了如下方法:

public static void runOnUiThread(Runnable task) {mainHandler.post(task);
}

解决方法是在Module中新增一个静态类,比如我这里命名是ToastInitializer,它用于完成Application的职责。ToastInitializer静态类中有一个initializer方法,要求在使用这个依赖库时必须在ApplicationonCreate方法中调用一次ToastInitializer.initializer(this)Context传进来。

public static void initializer(Context context) {if (null != context) {appContext = context;}
}

其实这样的方式我们在使用依赖库时大部分都有遇到过。使用友盟推送SDK时,要求你在ApplicationonCreate方法中调用一次PushAgent.getInstance(this);使用百度地图SDK时,要求你在ApplicationonCreate方法中调用一次SDKInitializer.initialize(this);是不是感觉似曾相识?这些都是为了实现类似的功能,那就是传递app context。这样你在库中即使没有Application也可以随意使用app context来进行一些操作。又因为ToastInitializer是个静态类,所以在调用ToastInitializer.initializer(this)时就会加载这个类,也就是在Application初始化时app context就会传进去,ToastInitializer类里的静态块会比别的类和方法先执行。

如果需要在原工程中引用库中的方法,需要在原工程的build.gradle中添加如下内容:

dependencies {compile project(path: ':toastlibrary')
}

其中toastlibrary是你的类库名称。

3、上传依赖库至GitHub

Library库完成后需要将其上传至GitHub中,具体上传方式见我另一篇博客Android Studio中Git的使用。

4、Releases Github Project

GitHub中打开提交的依赖库,点击releases -> 创建新版本Create a new release -> 填写版本号、发布标题、版本描述,然后进行推送版本Publish release

点击releases

创建新版本

推送版本

看到以下这样的页面表示推送成功。

这里写图片描述

5、添加到JitPack

打开JitPack官网 https://jitpack.io/ 地址,输入GitHub中对应的项目地址,点击Look up在查询得到的版本中点击需要版本号的Get it完成依赖库的生成。

生成依赖库

然后就可以看到使用方法了,接下来就可以按照它的使用方法在我们的项目上使用这个依赖库了。

使用方法

6、项目中集成依赖库

在项目根目录的build.gradle添加以下代码:

allprojects {repositories {jcenter()maven { url 'https://jitpack.io' }}
}

app目录的build.gradle添加依赖引用:

dependencies {compile 'com.github.wiggins9629:Toast:v1.0.1'
}

如果依赖库需要app context来进行一些初始化操作,那么还需要在项目Application中的onCreate方法中添加ToastInitializer.initializer(this)来传递app context:

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();ToastInitializer.initializer(this);}
}

至此我们就完成项目依赖库的集成了,可以在项目中调用依赖库的方法了。

public class MainActivity extends BaseActivity implements View.OnClickListener {private TextView mTvToast;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();setListener();}private void initView() {mTvToast = (TextView) findViewById(R.id.tv_toast);}private void setListener() {mTvToast.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.tv_toast:ToastUtil.showText("测试Toast依赖库的集成");break;}}
}

需要注意的是可能会出现离线的问题,需要设置一下非离线状态,把Offline work给去掉,再同步一次工程就可以了。

非离线状态设置

以上就是通过Android Studio制作开源依赖库上传至GitHub供他人集成使用的过程,希望能给大家带来帮助!

下面是此依赖库的项目工程,欢迎大家参考指教。

项目地址 ☞ 传送门


推荐阅读
author-avatar
福田商务汽车-日照方傲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有