发布Android开源库

在很多时候我们都会写一些自己的工具类或者自定义View,因为有着自己独到的见解,希望分享给他人使用,并在别人的指导和批评中将代码变得更完善,因此需要发布自己的开源库。

下面将叙述一下本人发布开源库的流程:
1.在Android Studio新建一个名为LogsDemo的项目后,选择File->New->New Module。


步骤1.png

2.随后选择Android Library。


步骤2.png

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

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


步骤4.png

这里本人建立的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'
步骤5.png

6.随后在OpenLibray的build.gradle文件中添加如下三行(其中group和version都可以自定义):

apply plugin: 'com.github.dcendents.android-maven'
group='com.github.lkmc2'
version = '3.0'
步骤6.png

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

rootProject.name = 'com.lkmc2.logs'
步骤7.png

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


步骤8.png

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

步骤9.png

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


步骤10.png

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


步骤11.png

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

步骤12.png

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


步骤13.png

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


新项目使用开源库所需要添加的参数.png

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

maven { url 'https://jitpack.io' }
步骤14.png

②在app的build.gradle的dependencies中添加如下一行(视JitPack网站给出的参数而定):

compile 'com.github.lkmc2:LogsDemo:v7.0'

随后点击Sync Now,同步完成后即可在新项目使用开源库。


步骤15.png

本项目的地址:https://github.com/lkmc2/LogsDemo

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容