使用简单的方法发布自己的android开源库

在android开发的过程中,我们经常使用一些大神或者前辈们打包好的开源库和功能组件,这些开源项目给我们的开发带来了极大的便利,我们通过简单的几行代码就可以为自己的应用添加上一个好用的功能模块,类似这样:

使用github上的开源库

下面我们就亲自动手来发布自己的开源库。
在网上查阅了好多大神的教程,也照着做了,但是都没有成功,因为配置build.gradle那块比较复杂,老是出现各种问题,后来我通过观察其他有名的开源项目发现国外大神已经把大部分的gradle配置操作帮我们做好了,并打包了一个很好用的开源项目,点这里 我们只需要引用就可以了,在此表达下对大神的景仰!

一、首先你得有自己的开源项目

23333,其实暂时没有也没关系,目前主要是来学习怎么发布,随便找一个项目练练手就行。
假设现在你已经有了一个android studio项目。

1.在自己的项目上,右键,新建一个moudle:

新建moudle

注意选择moudle类型是Android Library:

选择类型

完成了之后你的project下就会多出来一个类似这样的moudle:

library

名字你可以写你自己的library的名字。然后就可以在这个library中编写你的代码。这里我为了方便,删掉了所有的测试代码,如果你有编写测试的话,可以保留。

二、jFrog bintrary操作

1.开通JFrog

打开jFrog bintrary注册账号,可以用github账号或者google账号直接登录。

2.创建maven仓库

这一步和创建git仓库稍微有些类似。

创建maven仓库

填写仓库信息

这里需要注意的一点是仓库名字必须填maven,否则后面上传的时候会有错误,这个有点奇怪,后面有时间再看下。

3.添加package

仓库建好后开始进入你的仓库,添加一个package。

添加package
填写package信息

这里弄完了之后,jFrog的配置基本上就弄好了。

三、library发布前的配置

1.首先打开你的project下的build.gradle,修改成下面这样

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'//你的gradle版本
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'//添加maven插件
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.novoda:bintray-release:0.4.0'//引入我们前面所说的插件(关键)
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这里有个问题就是gradle版本和maven插件版本的匹配问题,大家要找到和自己的gradle版本匹配的maven插件。

2.编辑library所在的moudle下的build.gradle。

同样打开文件,对应下面的标注修改。
这里为了方便,我删掉了所有的测试模块相关的内容,因为我没有写任何的测试代码,如果你有写测试代码的话,可以保留测试模块。

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.novoda.bintray-release'//添加插件

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 2
        versionName "1.0.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
    }
}



allprojects {
    tasks.withType(Javadoc) {//兼容中文字符
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

publish {
    userOrg = 'misakamikoto'//bintray.com 用户名,在你登录jfrog后右上角可以看到,例如我的是misakamikoto
    groupId = 'com.mewlxy.commontitlebar'//JCenter上显示的路径 path
    artifactId = 'CommonTitleBar'//项目名称 之前填写过的library名称
    publishVersion = '1.0.1'//版本号 version code
    desc = 'this is a common titlebar for android'//项目描述 description
    website = 'https://github.com/lxygithub/CommonTitleBar' //项目网址链接 link
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-compat:25.3.1'
}

3.编译、打包和上传

com.novoda:bintray的主页,我们可以看到使用说明,非常简单,一句命令就搞定了。
先在你的android studio下方找到Terminal,打开它。
然后输入线面这条命令:

gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

这里需要填写两个参数,BINTRAY_USERNAME就是我们上面填写的那个jFrog上的username。
BINTRAY_KEY在这里可以看到:

点击Edit profile
点击API Key

然后在显示的输入框中输入你的密码,就可以看到了。

把上面的命令中的两个参数替换了之后,回车执行就可以了。成功后你会在命令行中看到BUILDED SUCCESS的字样。

从上面的命令我们可以看出一共执行了三条命令,分别是clean、build和bintraryUpload,也就是这条命令把gradlew clean、gradlew build和gradlew bintraryUpload这三个命令合成了一条,如果你只是想执行其中一个操作的话,也可以单独执行命令,只有bintraryUpload命令是需要传username和key参数的。

四、提交到jcenter审核

命令执行成功之后,你的library下面的build目录下的outputs文件夹下会多出几个文件类似这样:

生成的文件

这些就是被上传到jcenter的库文件。

回到jfrog,可以看到我们刚才上传成功的package file:


新增的package

点击它,进入:

提交审核

提交

提交完成之后,等待一段时间,审核通过之后(审核通过会有右键提醒),就可以在项目中愉快的使用开源库了。:)
当你的library更新时,就重新使用命令build并上传就可以了。切记要更改版本号!
我的gradle配置,大家可以参考下。

参考资料

http://blog.csdn.net/hejjunlin/article/details/52452220
http://blog.chengdazhi.com/index.php/217

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

推荐阅读更多精彩内容