作者:福田商务汽车-日照方傲 | 来源:互联网 | 2023-10-11 14:04
背景
在项目开发中经常会使用别人的第三方依赖库,在之前的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
方法,要求在使用这个依赖库时必须在Application
的onCreate
方法中调用一次ToastInitializer.initializer(this)
把Context
传进来。
public static void initializer(Context context) {if (null != context) {appContext = context;}
}
其实这样的方式我们在使用依赖库时大部分都有遇到过。使用友盟推送SDK
时,要求你在Application
的onCreate
方法中调用一次PushAgent.getInstance(this)
;使用百度地图SDK
时,要求你在Application
的onCreate
方法中调用一次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
。
看到以下这样的页面表示推送成功。
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
供他人集成使用的过程,希望能给大家带来帮助!
下面是此依赖库的项目工程,欢迎大家参考指教。
项目地址 ☞ 传送门