最新 Android studio 发布Library库到JCenter服务器

xiaoxiao2021-02-28  65

前言:

在经历了从eclipse到Android studio过渡之后,引入第三方库的操作也变得相对简单起来,再也不是自己去下载相应的jar,而只需要在build.gradle一句简单的配置信息即可。如下:

compile 'com.voctex.banner:banner:1.0.7'

其实Android studio在配置了这句信息之后,在build的时候会去jCenter服务器去下载相应的库到本地引用,而不需要我们自己去下载包再引用,这么简单的一句代码就帮我们做了很多事了。

我们接下来就是要把我们自己的library库上传到jCenter服务器上,然后让别人也可以方便引用。

准备工作:

首先我们要先对gradle有一定的了解,还有Android studio这个工具有一定的熟悉,这样操作起来才不会老是觉得问题一大堆,而是简简单单的直接成功,基本功还是需要的。以下我会以我的一个项目作为栗子。

首先新建个app项目,默认有个app模块,再新建个module,这个module作为library的模块,如下图

然后需要注册一个可以国际通用的邮箱,在我测试之后,QQ邮箱(@qq)和网易邮箱(@163)都不行,其他没测过,有人说要注册谷歌邮箱(@gmail)就行了,可谷歌在天朝都被墙了,每次用都要翻墙,也不是最好的选择,然后试了一下阿里邮箱(@aliyun),发现可以。接下来就要用到这个邮箱了。

邮箱注册完毕之后就要注册一个Bintray账号了,在这里会有一个坑,特别注意,直接搜Bintray进入官网,然后注册的时候会是注册组织的账号,而且还是试用一个月的期限,这里要通过以下链接去注册一个个人账号:

https://bintray.com/signup/oss

创建仓库

进入了Bintray之后,因为是个人账号,这时候你可以自己建立一个组织,或者直接忽略这操作,因为你是个人开发者,我就直接忽略了。

————————————图片分割线——————————

在上面一系列操作之后,就会得到一个空的仓库,有了仓库就可以上传我们的项目上去了,当然,这是下一步要操作的内容。

配置gradle

需要配置三个文件,分别是项目根目录下的build.gradle文件,library模块根目录下的build.gradle文件,以及项目根目录下的local.properties。

1、项目根目录下的build.gradle

buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' //加入以下两句配置 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }

2、library模块下的build.gradle的配置,这一步的配置信息有点多,基本只要注意那些加了注释的就行了,然后改成你自己的信息。

apply plugin: 'com.android.library' //插件 apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' def siteUrl = 'https://github.com/voctex/VtBanner' // Git项目主页 def gitUrl = 'https://github.com/voctex/VtBanner.git' // Git仓库url Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) version = "1.0.0" //发布版本号 group = "com.voctex.banner" //最终引用形式,如compile 'com.voctex.banner:banner:1.0.0',其中banner在后面配置 android { compileSdkVersion 24 buildToolsVersion "24.0.2" resourcePrefix "vt_" // 随意命名 defaultConfig { minSdkVersion 14 targetSdkVersion 24 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.github.bumptech.glide:glide:3.7.0' } bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") pkg { repo = 'maven'//自己创建的仓库名字,要跟Bintray上创建的仓库一样 name = 'vtbanner'//上传到JCenter的名字,最终引用的名字 websiteUrl = siteUrl vcsUrl = gitUrl //这个好像是必须的,我尝试过传空字符串好像是不成功的 licenses = ['MIT']//不能随便写,只能是仓库创建时选择的license type // userOrg = 'mumusalibrary' //自己创建的organization名称 publish = true // 是否是公开项目,公开别人可以引用 version { name = '1.0.0'//版本名,上面好像已经有配置了 desc = 'voctex open library.'//描述,自己定义 released = new Date() vcsTag = 'v1.0.0' attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin'] } } configurations = ['archives'] } install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging 'aar' // Add your description here name 'Android Banner'//项目名 description 'open library.'//项目描述 url siteUrl // Set your license licenses { license { name 'MIT' //和之前自己定义的协议一致 url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE' } } developers { developer { id 'voctex' //填写bintray或者github的用户名,这里我填的是我的github名 name 'jreproxy' //姓名,这里我填的是Bintray上的昵称 email 'voctex@aliyun.com'//邮箱 } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { failOnError false //必须添加以免出错 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 } javadoc { options{ //如果你的项目里面有中文注释的话,必须将格式设置为UTF-8,不然会出现乱码 encoding "UTF-8" charSet 'UTF-8' author true version true links "http://docs.oracle.com/javase/7/docs/api" } }

3、配置项目根目录下面的local.properties信息

sdk.dir=/Users/yidont/Library/Android/sdk bintray.user=jreproxy(Bintray的名字) bintray.apikey=xxx(这里需要填写你的key,需要去bintray取获取,如下图)

执行gradle命令

这里先说明一下windows系统和mac系统执行命令的些许区别,比如

(windows) gradlew -v (mac) ./gradlew -v

因为我用的mac电脑,所以其他人要注意区别。

还有一个要注意的点就是,要对单独模块进行编译,如果在执行命令的时候不顺便指定模块的话,每一次都会默认执行所有模块,所以这里要养成一个好习惯。要对单独模块进行操作的做法就是加入模块名,如下

(所有模块) ./gradlew assembleRelease (单独模块) ./gradlew :app:assembleRelease

然后在Android studio下面的Terminal敲gradle命令,先执行

./gradlew :banner:install

安装一些需要的东西,然后就把该项目上传到Bintray中的仓库里,执行

./gradlew :banner:bintrayUpload

然后耐心等待,等出现了BUILD SUCCESSFUL字眼就说明上传成功了,这时候你就可以去你的Bintray上查看你的项目了,进入项目之后还有最后一步需要你操作,就是add to jCenter,然后等待审核,有人十分钟就搞定了,有人审核很慢,我一般都是等了上半天才被审核成功。

————————————图片分割线—————————— ————————————图片分割线——————————

最后

到这里就告一段落了,基本都很简单,这么简单就可以把自己封装的库上传到jCenter中,瞬间有点高大上的样子。当然,我只是简单的分享一下我的经验而已,方便别人也可以简单学会。

QQ:361561789 有事可直接加Q联系

转载请注明原文地址: https://www.6miu.com/read-19324.html

最新回复(0)