美文网首页
亲测android Studio发布Lib到jCenter

亲测android Studio发布Lib到jCenter

作者: mandypig | 来源:发表于2018-06-20 00:28 被阅读0次

关键词:jCenter jCenter jCenter

发布到jCenter起因:

掌握发布代码到jCenter个人感觉还是很有必要的,最大的一个作用感觉就是装逼orz...,因为在接触jCenter之前感觉只有大神会把代码发布到公共仓库上,掌握后你会发现原来自己也能发布代码上去,除了装逼还有一个重要原因就是公司这边使用的开发模式是多module方式,每个人都有自己负责的模块,一些公共的代码会封装到baselib中供大家使用,但有一个比较不方便的地方在于那个baselib只有个别人有权限提交代码,所以我把一些自己会用到的方法简单封装成了aar,在使用到的module里面集成该aar即可,想法很美好但是现实还是比较残酷的,公司这边的开发规定就是公共的代码要不放到baselib中,要不就上传到公司的私有仓库里面,各个模块不允许放置aar文件,既然这样就不妨放置到jCenter上,如果有其他人要使用只需要添加依赖就可以了。发布代码到jCenter虽然网上已经有很多类似而且不错的文章,但那些都是作者他们本身遇到的问题,不能保障我会遇到和他们一样的问题,自己博客里面的每一篇文章都是自己实践过的,“纸上得来终觉浅 绝知此事要躬行”,这里随便鄙视那些转发这类文章的某些人,我敢百分之99肯定那些人光说不练,没实际操作过

(1)注册https://bintray.com/账号
要发布代码到jCenter上就要在该网站注册账号,进入首页就能看到如下的页面 20180615135726.png ,注意红框的部分才是个人账号的注册地址!!不要弄错了,否则之前的步骤会有问题。点击进入后可以看到 ,输入完姓名密码等信息后就能完成注册,不过这里有一点需要注意的是注册的邮箱地址不支持qq,网易等邮箱!,所以要想成功完成注册最好有一个google邮箱,关于科学上网的事情就需要自己想办法去解决了,如果卡在这一步那后面的文章就可以忽略了orz...。
(2)获取api key
注册完成后页面就会自动跳转到个人主页,刚进来的时候里面肯定是空的,可以注意到如下信息 20180615141615.png ,点击名字后会弹出一个下拉框,选择edit profile后会看到如下页面 20180615141640.png ,选择最后一个api key你就会发现一串星号的密码,这串密码到时候上传代码的时候会使用到,选择已明文方式展开!!这一步很重要,当初自己就是直接复制了星号导致上传总是失败!!!坑
(3)配置lib gradle文件

在studio中创建一个lib工程,在该lib的gradle中添加如下信息

apply plugin: 'com.novoda.bintray-release'
publish {
    repoName = 'test'
    userOrg = 'mandy'//bintray.com用户名
    groupId = 'com.mandy'//jcenter上的路径
    artifactId = 'util'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'lib的描述信息'//描述,不重要
    website = 'http://www.baidu.com'//网站,最好有,不重要
}
首先repoName必须和网站等下要创建的仓库名必须保持一致!!,这里就直接取名test了,注意这也是一个比较坑的地方,名字必须一致如果不一致会报类似于这样的错误 20180615143010.png

,另一个需要注意的地方就是artifactId名了,这里取名util,等下也会使用到,而且也需要和网站的pacakge名一致!!!各种坑。这样lib的gralde就配置好了,是不是很简单。

(4)配置工程gradle
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.novoda:bintray-release:0.8.0'//添加这句代码
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }

    tasks.withType(Javadoc) {//解决lib中中文乱码问题
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}

该注意的地方注释已经写好了,参照配置就可以了,这样studio里面的配置就完成了,在lib中自己随便增加点代码就好了,比如打印一个log “hello“,最后要做的就是把这个lib上传到jcenter上去,使用如下命令行

./gradlew clean build bintrayUpload -PbintrayUser=你自己的账号 -PbintrayKey=你自己的密码 -PdryRun=false

mac中使用./gradlew,window中应该要去掉./,PdryRun这个参数没什么好说的写成false就可以了,网上的解释都一样,看了也不知道true和false有什么区别。一阵等待后你会发现报错了,原因嘛其实也很简单因为你在网站上没有创建仓库啊,所以接下来要做的就是创建仓库
(5)创建仓库


20180615140435.png

这里需要注意的就是Name那个输入框,输入刚才studio配置的reponame才可以

我们输入“test”,点击create后仓库就创建成功了 so easy, 20180619233012.png ,这时你就可以注意到如图的一个地址,点击后你会发现什么都没有,那是因为我们还没成功上传代码的缘故
(6)创建package
仓库创建成功后还需要创建package才能真正上传代码,点击add new package, 20180619233317.png

,这里需要注意的就是那个name,需要输入gralde配置的artifactId名字才行,version control关系不大输入一个网址就可以,最后点击create package就创建完成了,至此网站的所有的必要工作都完成了,回到studio再次输入刚才的命令行,一阵等待后将会出现


20180615114210.png ,那么恭喜你代码已经上传到成功了,如何验证,你可以点击 中的地址,如果进入后看到目录结构就说明成功了,现在离成功就差最后一步了!!
(7)申请添加到jcenter
进入刚才创建的package详情页中,你会看到 20180619235558.png 右下角有一个小按钮add to jcenter,点击进入后申请添加,点击里面的send按钮即可,核审通过后你会收到一封邮件,核审时间不太确定我当时等待了大概1天左右。
那这一天时间里只能干等着吗??并不是这样的,其实就算你不完成第7步的操作其实也可以立即使用了!!,只不够完成了第7步后可以少在gradle配置一个地址而已。
1 当核审未通过的时候,在需要使用到该lib的module中配置如下依赖
repositories {
    maven {url "https://dl.bintray.com/mandy/test"
}

dependencies中添加 implementation 'com.mandy:util:1.0.0'
编译后你就可以顺利在代码中使用lib中的类了

2 当核审通过的时候,只需要配置好依赖即可,上述的maven就不需要了

到此关于上传代码到jcenter就讲解完毕了,学会了这个技能妈妈再也不用担心我要打aar到处去集成了😤😤😤,在实践上传代码到jcenter的过程中遇到最蛋疼的问题就是studio配置的名字和网站上创建的仓库名,package名不一致的问题,导致各种不能上传成功,这一点需要特别注意,自己就是掉到了这个坑里面摸索了半天

################################更新###############################
在gralde升级到4.5之后,使用bintray-release将会引起问题,具体会报以下错误:

com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependencyConstraints()Ljava/util/Set

这是插件自身引起的一系列问题,好在原作者已经给出了解决方案,所以如果studio使用的gradle版本在4.5以上就不要再使用
bintray-release,具体解决方法如下,修改根gralde配置:

 dependencies {
//        classpath 'com.novoda:bintray-release:0.8.0'//jcenter发布使用到

        classpath "guru.stefma.bintrayrelease:bintrayrelease:1.1.2"//使用以下两行配置替换bintray-release
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.17"

        classpath 'com.android.tools.build:gradle:3.3.2'
    }

修改对应模块gradle如下:

//apply plugin: 'com.novoda.bintray-release'
apply plugin: "guru.stefma.bintrayrelease"

version="1.2" //版本号
group = "xxx" //jcenter的路径
publish{
    userOrg = 'xxx' //bintray用户名
    repoName = 'xxx'  //要传过去的库名
    artifactId = 'xxx'  //要传过去的项目名
    desc = 'xxx' //描述
    website = 'xxx' // 
}

只需修改这两步即可,其他保持不变

相关文章

网友评论

      本文标题:亲测android Studio发布Lib到jCenter

      本文链接:https://www.haomeiwen.com/subject/pybicftx.html