发布Android开源库
在很多时候我们都会写一些自己的工具类或者自定义View,因为有着自己独到的见解,希望分享给他人使用,并在别人的指导和批评中将代码变得更完善,因此需要发布自己的开源库。
下面将叙述一下本人发布开源库的流程:
1.在Android Studio新建一个名为LogsDemo的项目后,选择File->New->New Module。

2.随后选择Android Library。

3.随后输入模块名OpenLibrary,此模块名可自定义。随后点击Finish,完成模块的添加。

4.之后展开模块OpenLibrary,在java目录的包下新建一个Java类。

这里本人建立的Java类是Logs.java,代码如下:
package com.linchange.library;
import android.app.Activity;
import android.util.Log;
import java.util.Arrays;
/**
* Created by lkmc2 on 2017/12/31.
* 打印日志工具类
*
* PS:
* 1.如果是想全局打印同一个Log名,直接修改下面的TAG变量的名称,然后使用类名 + 点 + 方法名即可,
* 如:Log.v("你想输入的信息");
*
* 2.如果想每一个Activity都使用不同的Log名,直接在t(String)方法中传入自定义的TAG名,然后再调用方法,
* 如:Log.t("自定义的TAG名").v("你想输入的信息");
*
* 3.如果想每一个Activity都使用不同的Log名,又不想另行定义TAG名,直接在t(Activity)方法中传入Activity的Context,
* 然后再调用方法,如:Log.t(this).v("你想输入的信息");,这时将类名作为TAG名(不含包名);
*
* 4.使用t(String)或者t(Activity)方法后,全局TAG的名字将永久改变,不建议将Log.v(String)方法与
* Log.t(String).v(String)混搭使用。要么只使用Log.v(String),或者只使用Log.t(String).v(String)的方式。
*
* 4.如果不喜欢编译器出现黄线警告,可在类上添加@SuppressWarnings("AccessStaticViaInstance")注解。
*/
public final class Logs {
private static String TAG = "LogInfo"; //全局TAG名
private static final boolean DEBUG = true; //打印日志的开关,若为false不打印日志
private static class Holder { //静态内部类
private static final Logs INSTANCE = new Logs(); //静态实例对象
}
/**
* 设置TAG名
* @param tag TAG名
* @return Logs类实例对象
*/
public static Logs t(final String tag) {
TAG = tag;
return Holder.INSTANCE;
}
/**
* 设置TAG名(使用Activity的类名设置)
* @param activity Activity对象
* @return Logs类实例对象
*/
public static Logs t(final Activity activity) {
if (activity != null) {
String activityName = activity.getClass().getName(); //获取类名
TAG = activityName.substring(activityName.lastIndexOf(".") + 1); //设置TAG名(去掉包名)
} else {
throw new ClassCastException("You should use Activity context");
}
return Holder.INSTANCE;
}
public static void v(final String msg) {
if (DEBUG) {
Log.v(TAG, msg);
}
}
public static void e(final String msg) {
if (DEBUG) {
Log.e(TAG, msg);
}
}
public static void w(final String msg) {
if (DEBUG) {
Log.w(TAG, msg);
}
}
public static void i(final String msg) {
if (DEBUG) {
Log.i(TAG, msg);
}
}
public static void d(final String msg) {
if (DEBUG) {
Log.d(TAG, msg);
}
}
//以下方法是上面静态方法的重载,防止Android Studio中实例无法调用静态方法
public void v(final String... msg) {
if (DEBUG) {
Log.v(TAG, Arrays.toString(msg));
}
}
public void e(final String... msg) {
if (DEBUG) {
Log.e(TAG, Arrays.toString(msg));
}
}
public void w(final String... msg) {
if (DEBUG) {
Log.w(TAG, Arrays.toString(msg));
}
}
public void i(final String... msg) {
if (DEBUG) {
Log.i(TAG, Arrays.toString(msg));
}
}
public void d(final String... msg) {
if (DEBUG) {
Log.d(TAG, Arrays.toString(msg));
}
}
}
5.之后在Project的build.gradle配置文件的dependencies中添加android-maven-gradle的插件(具体参看 android-maven-gradle-plugin),本项目添加如下一行代码:
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'

6.随后在OpenLibray的build.gradle文件中添加如下三行(其中group和version都可以自定义):
apply plugin: 'com.github.dcendents.android-maven'
group='com.github.lkmc2'
version = '3.0'

7.而后在Project的setting.gradle文件中添加一行(rootProject.name属性可以自定义):
rootProject.name = 'com.lkmc2.logs'

8.项目开发完成后,按下图所示步骤将项目同步到Github上。

9.打开开源项目的地址(本项目地址为:https://github.com/lkmc2/LogsDemo),点击release。

10.随后打开下图所示的按钮create a new release(或draft a new release)。

11.其后输入版本名,以及版本描述信息之后,点击Publish Release按钮,发布新版本。

12.随后打开JitPack(一个用于发布JVM或者Android库的网站)的网址https://jitpack.io/,在输入框中输入Github中项目的网址(本项目的地址是:https://github.com/lkmc2/LogsDemo),点击Look up按钮。

13.系统将列出该项目已发布的所有版本,找到想要发布的版本,点击Status下的Get it按钮,点击后稍等片刻,即可顺利生成在Android Studio可用的开源库。

生成开源库后,系统会提示之后在新项目使用开源库所需要添加的参数。

14.发布后的开源库如果要在新项目中进行使用,需要按如下步骤操作:
①在Project的build.gradle文件中的allprojects下的repositories添加如下一行:
maven { url 'https://jitpack.io' }

②在app的build.gradle的dependencies中添加如下一行(视JitPack网站给出的参数而定):
compile 'com.github.lkmc2:LogsDemo:v7.0'
随后点击Sync Now,同步完成后即可在新项目使用开源库。
