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

背景

在项目开发中经常会使用别人的第三方依赖库,在之前的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 {

    @Override
    public void onCreate() {
        super.onCreate();
        ToastInitializer.initializer(this);
    }
}

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

public class MainActivity extends BaseActivity implements View.OnClickListener {

    private TextView mTvToast;

    @Override
    protected 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);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tv_toast:
                ToastUtil.showText("测试Toast依赖库的集成");
                break;
        }
    }
}

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

非离线状态设置

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

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

项目地址 ☞ 传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值