Android Studio 上传 Library 至 Jcenter 生成依赖的两种方式(菜鸟级教程)
来源:互联网 发布:万华写频软件 编辑:程序博客网 时间:2024/05/19 19:31
之前感觉 Studio 中直接使用 compile ‘xxxxxxx’ 感觉挺方(装)便(逼)的。然后网上翻阅了老多的资料,不停的去尝试。虽然当时也成功了,后来才发现原来账号都注册错了(注册成组织账号了 /尴尬)。这里整理一下上传的完整步骤。
注册
Bintray官网首页默认注册是组织 , 个人的正确注册地址是:https://bintray.com/signup/oss
这里注意一点 不能使用国内的邮箱注册。 也可以使用 Google账号,Github账号 关联登录。
获取 Key
图片出处
创建个人Maven 仓库
注意:这里创建的maven仓库名字如果是 maven 那么可以使用以下两种配置方式的任意一种 ,如果自定义仓库名字非 maven 需要通过第二种配置进行上传,否则存在 404。
上传之前的配置
配置方式一(仓库名必须为 maven):
项目根目录 build.gradle 中完整配置代码:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'com.novoda:bintray-release:0.3.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { jcenter() } // 解决 Execution failed for task':[YourLibraryName]:mavenAndroidJavadocs'. tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') }}
在app 和 library 的 build.gradle 文件中加入以下代码解决 Execution failed for task ‘:core:lint’ :
android{ ... ... lintOptions { checkReleaseBuilds false abortOnError false }}
在 library 的 build.gradle 加入一些配置 :
apply plugin: 'com.novoda.bintray-release' // 新增...android{ ... ... lintOptions... 省略}publish { userOrg = 'xxx'//bintray.com注册的用户名 groupId = 'com.lfq'//jcenter上的路径 artifactId = 'customrepo'//上传到 Jcenter 的项目名称 publishVersion = '1.0.1'//版本号 desc = ''//选填 website = 'https://github.com/xxx'//这里是必填;可以填写你 Github 上的当前项目地址。注意格式必须是 github地址(地址可以不存在)。}
此配置的最终生成结果格式为:
compile 'com.lfq:customrepo:1.0.1'
这里调整一下,这种配置方式生成的依赖的组成格式:
依赖组成格式:'groupId : artifactId:版本号' 依赖组成格式:'groupId : artifactId:版本号' 依赖组成格式:'groupId : artifactId:版本号'
这里和下面的配置方式生成的依赖还是有点区别的。
配置方式二(自定义仓库名):
在Project 的 build.gradle 中添加 Maven 和 Jfrog Bintray 的依赖
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files //添加下面两行 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' }}allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buildDir}
版本号这里目前是最新的,后续如果有更新,可以去查看 Maven 和 Jfrog Bintray 的最新版本。
在 module 的 builde.gradle 中进行配置
apply plugin: 'com.android.library'//添加这两行apply plugin: 'com.github.dcendents.android-maven'apply plugin: 'com.jfrog.bintray'android { compileSdkVersion 24 buildToolsVersion '25.0.0' defaultConfig { minSdkVersion 14 targetSdkVersion 22 version 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } //添加配置 lintOptions {// checkReleaseBuilds false // Or, if you prefer, you `can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:24.2.1' provided 'com.github.bumptech.glide:glide:3.7.0'}//项目主页def siteUrl = 'https://github.com/lvfaqiang/Multi-Image-Selector'//项目的git地址def gitUrl = 'git@github.com:lvfaqiang/Multi-Image-Selector.git'def libName = "MultiImageSelector"; // 上传到 Bintray 的 package 名称。group = "me.lfq";version = "1.0.1"// 这两个参数配置是为了最终生成 compile 'me.lfq:依赖库的名称:1.0.0' group version 是关键字,自动识别的。只需配置好就行。install { repositories.mavenInstaller { // 生成pom.xml和参数 pom { project { packaging 'aar' // 项目描述,复制我的话,这里需要修改。 name 'MultiImageSelector'// 可选,项目名称。 description ''// 可选,项目描述。 url siteUrl // 项目主页,这里是引用上面定义好。 // 软件开源协议,现在一般都是Apache License2.0吧,复制我的,这里不需要修改。 licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } //填写开发者基本信息,复制我的,这里需要修改。 developers { developer { id 'lvfaqiang' // 开发者的id。 name 'lvfaqiang' // 开发者名字。 email 'lvfaqiang@gmail.com' // 开发者邮箱。 } } // SCM,复制我的,这里不需要修改。 scm { connection gitUrl // Git仓库地址。 developerConnection gitUrl // Git仓库地址。 url siteUrl // 项目主页。 } } } }}//上传到JCenterProperties properties = new Properties()properties.load(project.rootProject.file('local.properties').newDataInputStream())bintray { user = properties.getProperty("bintray.username") //读取 local.properties 文件里面的 bintray.user 登录用户名。 key = properties.getProperty("bintray.apikey") //读取 local.properties 文件里面的 bintray.apikey configurations = ['archives'] pkg { //这里的repo值必须要和你创建Maven仓库的时候的名字一样 repo = "custom" //发布到JCenter上的项目名字 name = libName websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true //是否是公开项目。 }}// 生成jar包的task,不需要修改。task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources'}// 生成jarDoc的task,不需要修改。task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) // destinationDir = file("../javadoc/") failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。}// 生成javaDoc的jar,不需要修改。task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir}artifacts { archives javadocJar archives sourcesJar}
以上需要修改的地方也就配置的几个项目主页地址,项目描述,以及开发者个人信息。仓库名这里要对应你在 Bintray上创建的自定义仓库名。
在 app 的 build.gradle 中需要添加的配置
android{ ... ... lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false }}
在 local.properties 中添加个人的参数值:
bintray.username= bintray注册的用户名bintray.apikey= 文章开头获取的 apikey
配置基本上也就这些了。
上传
基本就是以上所描述的这些配置,接下来我们打开 Studio 的控制台 Terminal .
windows 环境下输入:
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
Mac OS 环境下输入:
如果出现拒绝该命令./gradlew: Permission denied,可以先运行 chmod +x gradlew再运行该命令;
./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
上面命令中 BINTRAY_USERNAME 是你在 bintray 上注册的用户名。BINTRAY_KEY 是上面注册的时候所获取的 key.
替换了用户名和 API key 回车执行,等到控制台最终输出 BUILD SUCCESSFUL 就表明项目上传成功。
发布到 Jcenter
这个时候回到 bintray 我们的 maven 仓库中,进入我们刚上传成功的 packge 。
点击左下角红框区域,进入下一页 直接点击 send 等待审核,耐心等待审核通过之后,就可以直接通过 compile 引入项目使用。
在审核通过之前,我们可以通过配置上图右上角红框区域链接来使用,在根目录中添加:
allprojects { repositories { jcenter() maven {url '右上角的链接'} }}
项目中加入依赖:
compile 'com.lfq:module名称:1.0.1' // 模拟类型
注意:如果这里依赖不成功,可以再后边加上@arr
compile 'com.lfq:module名称:1.0.1@arr'
以上两种配置方式,我都亲测过,如果还有什么问题,还望各位指出。我也好做出调整。谢谢!
补充一下两种上传配置的区别:
第一种配置简单,但是仓库名必须是 maven , 依赖组成格式:’groupId : artifactId:版本号’ , 并且 artifactId 也是上传到仓库的 package 名称。
第二种配置,相对复杂一点(无非也就是多复制一些代码)。仓库名可自定义,生成依赖组成格式是:’groupId: module名称:版本号’ 。 这里的 module名称也就是你本地依赖库的名称。上传仓库的package名称是单独配置的。
参考博客:
http://blog.csdn.net/wzgiceman/article/details/53707042
http://blog.csdn.net/xingshen58/article/details/51644599
http://blog.csdn.net/yanzhenjie1003/article/details/51672530
- Android Studio 上传 Library 至 Jcenter 生成依赖的两种方式(菜鸟级教程)
- Android studio将library module上传至jcenter
- Mac Android Studio将项目(library)上传到jcenter
- Android Studio 将Library 上传到 Jcenter
- Android Studio 上传aar(Library)到JCenter
- Android Studio中快速将Library上传到JCenter
- Android Studio 发布library到jcenter详细图文教程
- Android library上传到jcenter
- 上传 Android library 到 Jcenter
- Android 上传library到jcenter
- Android Studio上传项目至jCenter
- Android Library上传到JCenter仓库实践
- Android library快速构建上传jcenter
- Android library快速构建上传jcenter
- android studio 发布 library 到jcenter步骤
- Android Studio上传Library库到JCenter,并同步到Maven Central
- Gradle之使用Android Studio 编写Gradle插件并上传Library到JCenter
- Android Studio上传Library库到JCenter,并同步到Maven Central
- 欢迎使用CSDN-markdown编辑器
- JavaEE 13个核心规范
- 最大乘积的实现
- css实现垂直水平居中
- 我所理解的ArrayList
- Android Studio 上传 Library 至 Jcenter 生成依赖的两种方式(菜鸟级教程)
- Linux网络常用命令之ifconfig
- 二维码打印机的例子
- HDU2896-AC自动机
- POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
- 排序算法——快速排序
- 成为Java顶尖程序员 ,看这10本书就够了
- Clang Diagnostics
- 嵌套的DIV水平垂直居中