Android Studio发布Android库到JCenter

前言

虽然已经有很多大神发过这种文章,但是自己做的时候还是有一些疑问,所以发这篇文章记录一下,希望能给各位一些帮助。

准备工作

  1. 一个GitHub账号,当然这不是必要的
  2. 一个自己的Android Library
  3. 科学上网, Bintray似乎国内访问不了

发布步骤

JCenter仓库创建

JCenter 是由Bintray进行管理的,所以我们所创建的仓库也是由它进行管理。下面是详细步骤

1. 创建Bintray账号,这一步可以使用GitHub账号进行代替

注册.png

2. 创建用户组织(user orgnization)

创建用户组织.png

如图所示,jonnypeng就是在下创建的组织ID,这一步是必须的,创建一下,反正不会怀孕。。

选择创建方式.png
创建过程.png

在选择完创建方式之后就可以进行创建组织了,不过我就填了三个,图中Unique Identifier(唯一标志符)和组织名称是必填的,在创建用户组织里面显示的是jonnypeng是Unique Identifier而JSoftware则是组织名称。。像我这种有强迫症的人来说,最好取个带点意义的名字吧,免得到时候又要来删就不好了。。囧

3. 创建仓库

点击左下角Add New Repository的按钮进行创建仓库

添加仓库3.1.png
添加仓库3.2.png

在这里Type一般我们都是选择Maven仓库,Android Studio就支持这个,协议一般我都选择MIT,因为即使你选其他的也没卵用,因为这里是中国。。如果搞不清楚协议的区别的可以去看如何选择开源许可证?这篇文章,还有仓库是可以添加很多项目的,所以不要把项目名和仓库名混在一起了。创建完成之后Add New Repository就会有你的仓库

4. 创建Package

点击仓库进行创建Package

创建Package4.1.png
创建Package4.2.png
创建Package4.3.png

这里一张截图放不下,分两张,具体的注意点已经给出,上面就是创建JCenter的仓库的步骤了,接下来还要进行配置Android Studio。好累!!!

配置Android Studio Gradle

1. 配置Project 下Gradle

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    //下面这两行是需要添加的
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

2. 配置API Key

忘记了,还要获取API Key。。囧

配置API Key 2.1.png
配置API Key 2.2.png

通过上面两步就可以获取到API Key,下面进行配置

bintray.user=johnypeng  //你的用户名,在右上角
bintray.apikey=************************************//API Key

3. 配置Module Gradle

下面的很多我也不知道是什意思,所以我就全复制过来了,大家按照自己项目的详细情况进行配置。。

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

version="0.1"
//这个地方比对一下自己的项目
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    //这个地方不需要改
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.2.0'
    testCompile 'junit:junit:4.12'
}

def siteUrl = 'https://github.com/JohnyPeng/ActionSheetDialog'      // 项目的主页
def gitUrl = 'https://github.com/JohnyPeng/ActionSheetDialog.git'   // Git仓库的url
group = "com.android.actionsheetdialog"       // Maven Group ID for the artifact,一般填你唯一的包名

install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                // Add your description here
                name 'A bottom dialog like IOS'     //项目描述
                url siteUrl
                // Set your license
                licenses {
                    license {
                        //
                        name 'Massachusetts Institute of Technology'
                        url 'http://www.opensource.org/licenses/mit-license.php'
                    }
                }
                developers {
                    developer {
                        id 'JonnyPeng'        //填写的一些基本信息
                        name 'Jonny'
                        email 'godteen.peng@gmail.com'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
//下面这些我也不知道是什么意思,参考大神的于是就复制过来了
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        userOrg = "jonnypeng"//JCenter上创建的的Organization
        repo = "custom"//你要上传的库的名字
        name = "ActionSheetDialog"    //发布到JCenter上的项目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["MIT"]
        publish = true
    }
}

上传到JCenter中

在Android Studio 的Teminal中执行下面这两条命令,进行上传

./gradlew install //补充: Windows下面是使用gradlew install 和gradlew bintrayUpload
./gradlew bintrayUpload

点击项目名然后点击发布JCenter中即可,等待审核通过,好像审核通过一次之后就不用再进行审核了

上传到JCenter 1.1.png

通过之后就会出现

上传到JCenter 1.2.png

使用

//注意上米面那张截图中的红框
compile 'com.android.actionsheetdialog:actionsheet:0.1'

更新

如果有需要更新库的可以直接修改Module的Version然后进行上传。。


Paste_Image.png

然后执行

./gradlew install//补充: Windows下面是使用gradlew install 和gradlew bintrayUpload
./gradlew bintrayUpload
Paste_Image.png

可以看到版本号的更新,使用的时候当然两个都行

总结

以上就是Android库上传到JCenter的所有步骤,祝大家使用愉快!!!Chrome一直出现问题,输入中文就报错,烦死我了。。。

参考文章:http://www.jianshu.com/p/3d32ad7e8841

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

推荐阅读更多精彩内容