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

news/2024/5/20 1:53:59 标签: android studio, library, gradle, jCenter, Maven

前言:

在经历了从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的模块,如下图

image

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

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

https://bintray.com/signup/oss

创建仓库

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

创建仓库
————————————图片分割线——————————
image

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

gradle">配置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取获取,如下图)

image

gradle命令">执行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联系


http://www.niftyadmin.cn/n/994389.html

相关文章

ASP.NET MVC 1.0浅析

为什么要用ASP.NET MVC 1.0?当我刚知道1.0发布的时候,经常这样问。 最近正在考虑是否在我们的企业级应用中使用ASP.NET MVC 1.0框架,因此会一直找使用它的理由,希望大家在关注技术的同时,结合企业应用谈谈自己的看法。…

SQL Server数据库新建拥有部分查看操作权限的用户

首先登录拥有最高权限的sa用户 登陆后在安全性中选择登录名右击选择新建登录名 弹出新建登录名界面如图,填写用户名及选择登陆方式后,在左侧选择页界面可选择服务器角色,用户映射,安全对象和状态分别进行设置 在这里我们设置要开放…

android 开发,eclipse生成jar包,分离资源文件并混淆

sdk开发中,用eclipse进行开发带有资源文件的library库,封装混淆成jar包并分离出资源文件。 1、预备工作 设备:MacBook 环境:mac 在这里我们采取的是所有的java类打包成jar包被应用,然后library库里面的资源文件分离…

无法加载OraOps9.dll错误之解

1、以管理员的用户登录; 2、找到ORACLE_HOME文件夹(我的是D:\oracle\ora92),点右键,选属性--安全,在组或用户栏中选“Authenticated Users”,在下面权限列表中把“读取和运行”的权限去掉&#…

nginx apache Smokeping 安装配置

nginx apache Smokeping 安装配置 2010-01-09 20:23:33标签:apache nginx Smokeping    [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。htt…

WPF与缓动(二) 正弦与余弦缓动

WPF与缓动(二) 正弦与余弦缓动 周银辉如果要比二次缓动(请参见WPF与缓动(一) N次缓动)更平缓, 可以使用正弦或余弦缓动.如果我们用曲线上点的斜率表示速度,可以发现…

mac android studio 执行terminal命令出现Permission denied的问题

在Android studio中,在进行打包的时候我个人习惯是用Terminal执行命令打包,因为可以执行各式各样的gradle task。 在刚开始用mac book的时候,执行命令时出了问题,发现在当前项目执行命令时,mac电脑的用户需要在命令前…

Maven中dependencies节点和dependencyManagement节点的区别

为什么80%的码农都做不了架构师?>>> 解释如下: 1 .使用项目继承 利用项目继承可以将结构信息,部署信息,共同的依赖信息放置在单一的位置。在每个工程的 pom 中: [...] org.apache.maven.pro…