Android 项目上传Jcenter方法参考(内含两种方法)
2017-11-30 13:10
330 查看
Android 项目上传Jcenter
本文仅用于个人学习记录使用,不为帮助他人,如果你觉得我写的对你有用,我表示感谢,如果没用,请跳过,拒绝网络愤青,拒绝网络暴力。批评指点可以帮助别人,接受批评指点,不接受喷子。准备工作
去bintray官网注册账号,账号类型有两种,第一种是公司类型(Sign Up to a Free Trial):https://bintray.com/signup第二种是个人开源类型( Sign Up to an Open Source account):https://bintray.com/signup/oss
我们要用的是第二个链接!第二个链接!!第二个链接!!!
注册邮箱不要用QQ、163,我就是在QQ邮箱这里郁闷了半晌,主要是这网站它不提醒邮箱有误,只是把邮箱那一栏给用红色边框圈了起来,这谁TM知道啥意思啊,算了不吐槽了,后来用了Gmail(偷偷告诉你,翻墙用的SSR),算注册成了。不想上图了,直接文字描述吧,真的感觉写这个好费劲啊,真心感觉那些提供文章的朋友们,太辛苦了,感同身受啊。
1、注册登录成功后,点击 Add New Repository 进入添加仓库界面
2、仓库名(Name)称可以随便起,没试过中文,用英文吧,哪怕是拼音
3、类型(Type)选择Maven
4、开源协议(Default Licenses(Optional))可以选择你喜欢的协议,个人喜欢Apache-2.0
5、仓库描述(Description(Potional))这个就随便写了,不过本着认真负责的态度,你应该写个能表示仓库作用的文档
接下来就是获取ApiKey
1、页面右上角有个个人账号的位置,点击之后的下拉框中选择Edit Profile选项2、新的页面中,点击左边的一列选项的最后一栏,API Key ,然后输入你的登录密码,就可以获取到一串API key了
下面是正文
第一种方式
看法:个人认为这种方式比较全面一些,能配置的东西也比较多,但是比较复杂,坑也不少,不过,不跳几次坑又怎能体会从坑里爬出来的喜悦呢?1、android studio中新建项目,然后再新建一个library的module,这个过程大家应该都已经轻车熟路了,不再浪费篇幅,记住把library依赖到app的module下就行了
**2、项目的build.gradle 的dependencies 项代码结果
dependencies { classpath 'com.android.tools.build:gradle:3.0.1' //以下两项是添加的 classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0' }
*3、library下的build.gradle文件,我尽量为我能想到的每一项加上了注释
apply plugin: 'com.android.library' //以下两项是添加的插件 apply plugin: 'com.jfrog.bintray' apply plugin: 'com.github.dcendents.android-maven' android { compileSdkVersion 25 buildToolsVersion "26.0.3" defaultConfig { minSdkVersion 15 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' } } //这项可以不让报过多检查的错误,不知道理解对不对,反正加了也不多,那就加吧 lintOptions { abortOnError false } } 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.4.0' testCompile 'junit:junit:4.12' } //这里读取本地的local.properties文件 Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) //这里读取local.properties文件中配置的属性 def projectName = properties.getProperty("project.name") def projectGroupId = properties.getProperty("project.groupId") def projectPackaging = properties.getProperty("project.packaging") def projectSiteUrl = properties.getProperty("project.siteUrl") def projectGitUrl = properties.getProperty("project.gitUrl") def versionName = properties.getProperty("version.name") def versionDesc = properties.getProperty("version.desc") def pkgName = properties.getProperty("pkg.name") def pkgRepo = properties.getProperty("pkg.repo") def pkgUserOrg = properties.getProperty("pkg.userOrg") def developerId = properties.getProperty("developer.id") def developerName = properties.getProperty("developer.name") def developerEmail = properties.getProperty("developer.email") def bintrayUser = properties.getProperty("bintray.user") def bintrayApikey = properties.getProperty("bintray.apikey") //以下两项也加上吧,不知道能不能缺,没时间测试了 group = projectGroupId version = versionName bintray { //bintray用户名 user = bintrayUser //上面获取的API Key key = bintrayApikey pkg { //创建的仓库名字,就是点击Add New Repository 时新建的仓库的Name, //不然系统不知道传到哪个仓库 repo = pkgRepo //自己bintray创建的organization名称,个人的其实就是用户名 userOrg = pkgUserOrg //项目名称,名字起得有点怪,别介意,其实它不起啥毛用 name = pkgName //以下两项最好都有,不然别人就只能依赖你的项目,当想下载你的源码看看时就找不到地方了 //项目首页,比如https://www.github/***/*** websiteUrl = projectSiteUrl //项目拉取地址,比如https://www.github/***/***.git vcsUrl = projectGitUrl licenses = ['Apache-2.0']//创建仓库时选择的license type publish = true // 是否是公开项目。 version { //版本号 name = versionName //版本描述 desc = versionDesc released = new Date() vcsTag = 'v1.0' attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gr e27b adle-useless-plugin'] } } configurations = ['archives'] } // This generates POM.xml with proper parameters install { repositories.mavenInstaller { pom { project { //项目名,感觉没啥重要作用 name projectName //包名,比如( com.ergouzi ) groupId projectGroupId //项目名称,可以自己定义一个,比如( test ),不一定就是android studio项目名 version versionName //打包类型,一般是aar packaging projectPackaging url projectSiteUrl licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { //开发者id id developerId //开发者姓名 name developerName //开发者邮箱 email developerEmail } } scm { connection projectGitUrl developerConnection projectGitUrl url projectSiteUrl } } } } } //打包源码 task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } //打包源码doc文档 task javadoc(type: Javadoc) { //这里设置的两个UTF-8的编码是为了不让报 “编码UTF-8的不可映射字符”的错,现在看到这个错就恶心 options.encoding = "UTF-8" options.charSet = 'UTF-8' 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 } //提交命令:首先执行gradlew install,成功后执行gradlew bintrayUpload,再次成功后就已经成功上传到bintray了
4、下面给出我的本地的local.properties配置作为参考
ndk.dir=D\:\\ANDROID\\AndroidNDK\\android-ndk-r14b-windows-x86_64\\android-ndk-r14b sdk.dir=D\:\\ANDROID\\AndroidSDK #用户名和API Key bintray.user=xiao****** bintray.apikey=ab58**************************489e #project #项目名 project.name=项目名 project.groupId=com.ergouzi包名 project.packaging=aar project.siteUrl=https://www.github/***/*** project.gitUrl=https://www.github/***/***.git #version version.name=1.0.0最好从1.0.0开始(阿里强条) version.desc=项目描述. #pkg pkg.name= pkg.userOrg=xiao****** #仓库名 pkg.repo= #developer developer.id=xiao****** developer.name=ergouzi developer.email=liu********@gmail.com
最后就是在android studio 的Terminal中输入gradlew install命令,等成功后,再输入gradlew bintrayUpload进行提交到bintray,再次成功后就可以去bintray网站上去申请上传到Jcenter上了
第二种方式
看法:这种方式实在是简单,但是,容易下载novoda这个插件失败,我试了很久才成功。1、android studio中新建项目,这个module须是library类型的,就是项目仅仅有一个库,没有application,不然怎么提交都提交不上,官方文档好像也是这么做的,我就是在这个坑里爬了一天才爬出来
2、项目的build.gradle 的 dependencies 项和 allprojects 项代码结果
dependencies { classpath 'com.android.tools.build:gradle:3.0.1' //以下两项是添加的 classpath 'com.novoda:bintray-release:0.7.0' } allprojects { repositories { google() jcenter() } //下面这项解决 编码UTF-8的不可映射字符 亲测可用 tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs/api" } } }
3、library下的build.gradle文件,我尽量为我能想到的每一项加上了注释
apply plugin: 'com.android.library' //下面这项是添加的插件 apply plugin: 'com.novoda.bintray-release' android { compileSdkVersion 26 defaultConfig { minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) // read properties //账户名 def bintrayUser = properties.getProperty("bintray.user") //项目apikey def bintrayApikey = properties.getProperty("bintray.apikey") //novoda默认认识的bintray项目名称是maven,但是也可以自己定义,但是名称要和bintray上的对应 def publishRepoName = properties.getProperty("publish.repoName") //账户名 def publishUserOrg = properties.getProperty("publish.userOrg") //包名 def publishGroupId = properties.getProperty("publish.groupId") //项目名 def publishArtifactId = properties.getProperty("publish.artifactId") //版本号 def version = properties.getProperty("publish.publishVersion") //项目描述 def publishDesc = properties.getProperty("publish.desc") //项目首页地址 def publishWebsite = properties.getProperty("publish.website") //这种方式简单倒是简单了,但是一直找不到解决编码错误的问题 //注释有中文时总是报 GBK的不可映射文件 的错,找不到解决办法,于是回到老方式去了 publish { repoName = publishRepoName userOrg = publishUserOrg groupId = publishGroupId artifactId = publishArtifactId publishVersion = version desc = publishDesc website = publishWebsite } /* 项目上传bintray命令,在android studio Terminal中执行 gradlew clean build bintrayUpload -PbintrayUser=hyman -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false ***一行输入,不要回车,中间的分割是空格*** */
4、下面给出我的本地的local.properties配置作为参考
ndk.dir=D\:\\ANDROID\\AndroidNDK\\android-ndk-r14b-windows-x86_64\\android-ndk-r14b sdk.dir=D\:\\ANDROID\\AndroidSDK #账户名 bintray.user=xiao****** #项目apikey bintray.apikey=ab58***************************489e #novoda默认认识的bintray项目名称是maven,看publish的源码发现repoName这个属性默认值是maven,也是相当的坑啊,但是也可以自己定义,不过名称要和bintray上的仓库名要对应 publish.repoName=maven #账户名 publish.userOrg=xiao****** #包名 publish.groupId=com.ergouzi #项目名 publish.artifactId= #版本号 publish.publishVersion=1.0.0 #项目描述 publish.desc=. #项目首页地址 publish.website=https://github.com/****/****
最后 就是在android studio 的Terminal中输入
gradlew clean build bintrayUpload -PbintrayUser=### -PbintrayKey=##### -PdryRun=false
命令,PbintrayUser是你的bintray用户名,PbintrayKey是你的API Key,等成功后就可以去bintray网站上去申请上传到Jcenter上了
具体申请方式也说一下吧
//在Add New Repository 按钮的下边是已经成功创建的仓库,如果你的本地项目已经上传成功,那么点击这个项目,里面会有一个上传成功的项目在下面被一个框圈起来,还有几个评分的小星星,点击这个项目,然后在右边的中下部会有一个 Add to Jcenter 的按钮,点击,然后写一下申请理由,发送申请就行了,应该不到一天就会给回复。
终于写完了,成功通过申请后就可以在gradle中引用了,网络一大堆东西都看了,不知道谁对谁错,就不写参考链接了,有具体通不过的地方直接百度吧。
成功后查看地址:https://jcenter.bintray.com/com/liuchaoya/
相关文章推荐
- React Native嵌入Android原生项目中(两种方法)
- android上传开源项目到JCenter
- Eclipse将引用了第三方jar包的Java,Android项目打包成jar文件的两种方法(Fat Jar)
- Android简单项目上传到jcenter(基于bintray-release),不涉及混淆等
- Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)
- 手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(一)
- Android一行命令上传你的项目到Jcenter/Maven
- android library module内含aar包,完整打包上传maven的方法
- JAVA EE项目常用之 struts1.2 文件上传的两种方法
- Android 项目上传到SVN 操作步骤(两种方式)
- 手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(二)
- [Android]上传自己的lib项目到jcenter
- Mac Android Studio将项目(library)上传到jcenter
- Android上传开源项目(Library)到Jcenter
- 将Android项目开源到JCenter两种方式
- Android Studio上传项目至GitHub的方法
- 发布Android Library项目到JCenter的便捷方法
- android中查看项目数字证书的两种方法
- 在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法
- JavaBean实现多个文件上传的两种方法