Android Studio发布项目到Jcenter

来源:互联网 发布:时时彩组选计划软件 编辑:程序博客网 时间:2024/05/01 00:08

新版的Android Studio会将远程仓库指定为Jcenter,那Jcenter在哪里?它是干嘛的呢?

要回答这个问题,我们要了解一个公司,叫做jfog,它有个网站是Bintray,这个网站类似于github,但关注的领域不一样,github管理的是文本文件,而Bintray专注于管理二进制文件,个人感觉有些类似yy和qq的关系。扯回来,我们今天的主人公Jcenter就存放在Bintray网站里,Bintray下有名的库可不止Jcenter只一个,rpm-center,rubyinstaller都是它里面的仓库。所以,如果我们想把自己的开源库存放在Jcenter上供其它人使用,主要步骤如下:

我们需要注册Bintray账号,然后上传我们的项目到Bintray,最后在Bintray里提交我们的项目,管理员会对项目审核,通过后我们就可以在Gradle里通过制定远程位置来使用自己的库了。好,Let Go!

注册Bintray账号

Bintray官网传送门:https://bintray.com/

但很遗憾的是这个网站国内访问有点尴尬,你需要翻墙才可以。

Bintray是支持Github登陆的,也比较推荐在这种方式,(这里我真的想吐槽下某些sb网站做的连排泄物都不如,通过第三方登陆像还得重新注册!还得手机验证,这种网站必须拉黑)

登陆之后我们需要两个参数,一个是我们的用户名,另外一个就是api key,api key的获取可以参照我下面的gif图片:

bintary api key

先记得这两个数据的获取方式,一会我们会用到。

上传自己的Library到Bintray

关于怎样使用Android Studio创建Library这里就不多讲,这里假设我们有一个自己将要上传到Binray,我这里的Library很简单,简单到不需要res文件,是我编写和整理的和Android相关的工具类,我把这个Librasy命名为utils,整个Library目录结构如下:

utils 目录

接下里的步骤比较繁琐,Gradle已经支持通过命令来上传Library到Bintray,但项目的相关信息需要在gradle的配置文件中制定,首先我们需要打开utils这个module下的build.gradle文件,将其替换如下:

  1. apply plugin: 'com.android.library'
  2. apply plugin: 'com.github.dcendents.android-maven'
  3. apply plugin: 'com.jfrog.bintray'
  4. // 这个version是区分library版本的,因此当我们需要更新library时记得修改这个version
  5. version = "1.0.0"
  6. android {
  7. compileSdkVersion 21
  8. buildToolsVersion "21.1.1"
  9. resourcePrefix "随便填"
  10. defaultConfig {
  11. minSdkVersion 9
  12. targetSdkVersion 21
  13. versionCode 1
  14. versionName version
  15. }
  16. buildTypes {
  17. release {
  18. minifyEnabled false
  19. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  20. }
  21. }
  22. }
  23. dependencies {
  24. compile fileTree(dir: 'libs', include: ['*.jar'])
  25. }
  26. def siteUrl = 'https://github.com/saymagic/AndroidUtils' // 项目的主页
  27. def gitUrl = 'https://github.com/saymagic/AndroidUtils.git' // Git仓库的url
  28. group = "cn.saymagic" // Maven Group ID for the artifact,一般填你唯一的包名
  29. install {
  30. repositories.mavenInstaller {
  31. // This generates POM.xml with proper parameters
  32. pom {
  33. project {
  34. packaging 'aar'
  35. // Add your description here
  36. name 'Android Commonly used utils' //项目描述
  37. url siteUrl
  38. // Set your license
  39. licenses {
  40. license {
  41. name 'The Apache Software License, Version 2.0'
  42. url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
  43. }
  44. }
  45. developers {
  46. developer {
  47. id 'saymagic' //填写开发者基本信息
  48. name 'saymagic'
  49. email 'cymmagic@gmail.com'
  50. }
  51. }
  52. scm {
  53. connection gitUrl
  54. developerConnection gitUrl
  55. url siteUrl
  56. }
  57. }
  58. }
  59. }
  60. }
  61. task sourcesJar(type: Jar) {
  62. from android.sourceSets.main.java.srcDirs
  63. classifier = 'sources'
  64. }
  65. task javadoc(type: Javadoc) {
  66. source = android.sourceSets.main.java.srcDirs
  67. classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
  68. }
  69. task javadocJar(type: Jar, dependsOn: javadoc) {
  70. classifier = 'javadoc'
  71. from javadoc.destinationDir
  72. }
  73. artifacts {
  74. archives javadocJar
  75. archives sourcesJar
  76. }
  77. Properties properties = new Properties()
  78. properties.load(project.rootProject.file('local.properties').newDataInputStream())
  79. bintray {
  80. user = properties.getProperty("bintray.user")
  81. key = properties.getProperty("bintray.apikey")
  82. configurations = ['archives']
  83. pkg {
  84. repo = "maven" //发布到Bintray的那个仓库里,默认账户有四个库,我们这里上传到maven库
  85. name = "utils" //发布到Bintray上的项目名字
  86. websiteUrl = siteUrl
  87. vcsUrl = gitUrl
  88. licenses = ["Apache-2.0"]
  89. publish = true
  90. }
  91. }

注意里面的信息需要按照自己的个人资料进行修改。

因为上述的文件里需要依赖一些其它的库,所以接下来再到我们项目最外层build.gradle文件里,添加如下两个依赖

  1. classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
  2. classpath 'com.github.dcendents:android-maven-plugin:1.2'

修改后的文件如下:

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. }
  5. dependencies {
  6. classpath 'com.android.tools.build:gradle:1.0.0'
  7. classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
  8. classpath 'com.github.dcendents:android-maven-plugin:1.2'
  9. // NOTE: Do not place your application dependencies here; they belong
  10. // in the individual module build.gradle files
  11. }
  12. }
  13. allprojects {
  14. repositories {
  15. jcenter()
  16. }
  17. }

最后,我们在打开项目最外层的local.properties文件,添加如下两行:

  1. bintray.user=your_user_name
  2. bintray.apikey=your_apikey

your_user_name和your_apikey这两个数据就是我们在第一步注册Bintray时提到的两个参数,

解析来,在项目的根目录下执行

  1. gradle build

这样,我们就可以到到我们的module下会生成如下目录:/build/outputs/aar/

在arr目录下有如下两个文件:

arr

以arr文件结尾的就是Gradle将我们的library打包成的二进制文件,别忘记了,Bintray就是用于存储二进制文件的仓库,所以执行下面的命令。就可以将我们的library上传到Bintary。

  1. gradle bintrayUpload

上传成功之后,就会在bintray的maven仓库下看到我们上传的Library:

bintray libray util

提交项目到Jcenter

我们点开我们刚刚提交项目的主页,点击右下角的add to jcenter按钮

接下来写一些评论:

点击send后就可以等管理员的审核了。

大概一小时后,管理员就会审核通过:

这样,我们就可以在Dependence里这样来引用我们自己的项目了:

  1. dependencies {
  2. compile 'cn.saymagic.utils:utils:1.0.0'
  3. }

参考

https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/

http://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral

原文地址:http://blog.saymagic.cn/2015/02/16/release-library-to-jcenter.html
0 0