以往我们需要一些小组件的时候都是去GitHub上寻找,然后在gradle中用implementation命令导入项目中。这样也引起了一个思考,怎么将自己项目中可复用的部分进行封装和发布,采用同样的方式进行导入。
主要包含以下几个步骤:
(1)、开发组件的Demo,并修改为module组件
(2)、在新项目中导入刚才的module,测试是否能使用
(3)、发布到github,设置版本
(4)、托管到https://jitpack.io
(5)、如何使用
以一个时间小控件为例,详细说明上述步骤。
第一步:开发组件Demo,并修改为module组件
1、新建一个empty activity项目,开发出demo,可运行。
2、修改gradle文件中以下两处,将项目性质由application修改为library
将apply plugin: 'com.android.application'
修改为apply plugin: 'com.android.library'
将applicationId "com.example.testapplication"
删除
3、删除AndroidManifest.xml文件里红框中的部分
AndroidManifest.xml
至此,application就被改为了一个module,第一步完成!关闭此项目。
第二步:在新项目中导入刚才的module,测试是否能使用
1、新建一个项目,在新项目中file->new->import module
2、选择刚才已经被改为module的项目
image.png
3、勾选import,并给该module取个别名,因为"app"这个名字会和主application的名称重复
点击finish后可以在目录结构中看到该module,与app模块平行
image.png
4、修改app文件的gradle,用implemention命令导入CustomDatePicker这个module。
implementation project(path: ':CustomDatePicker')
,path里面的就是module名称image.png
5、导入CustomDatePicker这个module的依赖
点击file->projectStructure打开项目结构
project结构
点击Dependencis,选择主模块app,点击+号,选择Module Dependency
image.png
再选择CustomDatePicker这个module,如图所示则导入成功。第二步完成! image.png
导入module后,项目可能会报一些错误,比如在module中是不允许使用switch来对系统资源做选择的,需要改为if else的方式。
例如:
switch(view.getId()){
case R.id.edit1:
......
}
要改为:
if(view.getId() == R.id.edit1){}
else if()......
还有一些版本之间的问题,可以查询百度解决。
三、发布到github,设置版本
测试module可以使用之后,修改该module的gradle文件,添加以下内容
在第一行之后添加以下两行
apply plugin: 'com.github.dcendents.android-maven'
group='com.github.你的github账户名字'
在buildscript后照抄以下四行
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
如下图所示
image.png
在github上建立一个新的仓库。将CustomDatePicker这个module的整个文件夹上传上去。
image.png
传上去之后,点击releases
image.png
点击drafe a new release,创建一个新的版本,填写版本信息。
image.png
提交之后此步骤完成!
第四步、托管到https://jitpack.io
用github账号登录该网站,并在搜索框中搜索仓库名称
image.png
在版本之后会出现按钮 git it,点击按钮稍等一小会,会出现绿色或者红色的Log,绿色表示检测通过。组件发布的所有工作就完成了。
红色表示代码里有一些bug,点击该文件,查看bug在哪,修改代码之后,更新到github改个版本号,继续来Jitpack测试。
image.png
一般问题会出现在 build failed这行之前。
第五步、使用方法
刚才那个页面,往下拖动滚动条就能看到使用方式,在项目中使用implementation命令引用即可,记得将Tag改为正确的版本号,例如本文中为 1.03
image.png
网友评论