首页 > 其他分享 >这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用

时间:2023-08-14 11:34:12浏览次数:41  
标签:JCenter 步骤 代码 Library Android 上传

前言

  • 在日常Android开发中,我们经常会通过远程引用别人的代码(Android Library)来实现一些功能,如引用 网络请求库 Okhttp
// 通过在Android Studio的build.gradle文件中添加依赖
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}
  • 那么,该如何使得自己的代码(Android Library)被别人优雅的引用呢?
  • 答:将代码上传至到 JCenter ->> 别人再通过 JCenter引用

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传

  • 上传 Android Library 到 JCenter有许多方法;其中,采用 Android Studio的bintray-release插件上传代码到 JCenter的步骤 & 配置简单,可以使你快速、简单的发布开源项目

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_02

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_03

  • 本文将手把手教你 采用 Android Studio的bintray-release插件方法发布开源项目(Android Library) 到 JCenter ,包学包会包快!

目录

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_04

* 为什么要上传 Android Library 到 JCenter ?

方便 其他Android开发者 远程使用你的代码Android Library

  • 即,通过在Android Studio的build.gradle文件中添加一句依赖即可。如下图
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}

2. 知识储备

2.1 代码引用的本质

对 jar 包 / aar包的引用

1.即别人引用你的代码 = 引用你的jar 包 / aar包 2.此处主要讲解一下 aar文件

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_05

2.2 代码引用方式

对于 Android 代码引用方式主要有2种方式:

1.对于eclipse: 下载包 --> 放入到 lib 文件目录 2.对于Android Studio:在build.gradle文件中添加依赖。如下图

dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}

// 当然,Android Studio 也可以通过 下载包 --> 放入到 lib 文件目录 的方式进行包的引用
2.3 Android Studio添加依赖(Library)原理

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_06

2.4 JCenter 介绍
  • 定义:一种远程的Android library文件服务器

Maven仓库 = 中央远程仓库

  • 作用:存储代码 & 提供接口供外部调用内部代码

1.由 Bintray 公司维护,Bintray负责将开发者上传的Library传到JCenter中 2.Maven Central 则由sonatype.org维护 上传Android Library 到JCenter 的原理图

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_07

帮助理解:JCenter = 仓库,Bintray = 送货卡车,代码库 = 货物

本文主要讲解如何通过bintray-release插件快速上传代码(Library)到 Jcenter

3. 具体如何上传 Android Library 到 JCenter ?

  • 整个过程分为2部分:准备工作 & 上传

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_08

  • 具体做法如下
3.1 准备工作

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_09

步骤1:注册Bintray账号

注: 1.不要在官网注册,因为官网注册的是企业版,我们需要的是个人版 2.(建议)直接关联Github账号进行注册 & 登录

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_10

步骤2:在Bintray上建立仓库 具体如下图

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_11

步骤3:在代码项目中创建Module文件夹

  • 步骤如下

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_12

  • 创建成功后,你会发现Module文件夹的结构和 原有的项目文件夹(app)非常类似

步骤4:将需要上传的代码存放到Module文件中

  • 本文 以上传一个 自定义View 为例子
  • 该自定义View代码包括:1个类文件 & 属性文件

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_13

步骤5:将整个项目上传到 Github 关于如何上传到Github,此处不作过多描述。

具体请看文章:程序员必知:这是一份全面 & 详细的 Git与Github 介绍指南

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_14

3.2 具体上传

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_15

步骤1:配置bintray-release插件 包括在Module & 项目 的Gradle文件配置:

  • 在该Module的Gradle文件中配置

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_16

<-- 配置代码 -->
// 配置1
apply plugin: 'com.novoda.bintray-release' // 添加bintray插件

// 配置2
publish {
    userOrg = 'carson-ho'             // Binary用户名
    repoName = 'CircileView'          // Binary上的刚才新建的仓库名(Repository)
    groupId = 'scut.carson_ho'        // 依赖名compile 'x:y:z'中的包名x
    artifactId = 'CircileView'        // 依赖名compile 'x:y:z'中的项目名y
    publishVersion = '1.0.0'          // 依赖名compile 'x:y:z'中的版本号z
    desc = 'a CircileView'            // 对该开源组件的说明
    website = 'https://github.com/Carson-Ho/DIY_View'  // VCS地址,即填写项目上传的Github地址
}

// 特别注意:保持你的library module的名字同artifactId一样
// 1. 背景
    // 在Bintray上你的项目的maven-metadata.xml文件的路径=gruopId+"/"+module名称
    // 如你的groupId=scut.carson_ho,artifactId是CircileView,但module名称是circlelibrary
    // 此时,项目文件在scut.carson_ho.CircileView目录下的,但maven-metadata.xml文件却是在scut.carson_ho.circlelibrary目录下的。
// 2. 冲突:若你有多个项目groupId一样 & artifactId不一样,但module名称都是library的话,maven-metadata.xml文件的地址可能会一样,即都是:gruopId+"/"+module名称,那么就可能产生冲突
// 3. 解决方案:保持module名称和artifactId一致
  • 在该项目的Gradle文件中配置

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_17

<-- 配置代码 -->
// 配置1
classpath 'com.novoda:bintray-release:0.3.4'

// 配置2
allprojects {
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}
allprojects {
    tasks.withType(Javadoc) {
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

步骤2:上传项目到JCenter中

  • 在AndroidStudio的 Terminal输入以下命令
// 每行命令均用空格隔开,此处是为了展示才会分行

<-- Windows版本 -->
gradlew.bat clean build bintrayUpload 
-PbintrayUser=carson-ho  // Binary用户名
-PbintrayKey=************* // Binary上的API key,具体获取见下说明
-PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
-PbintrayUser=carson-ho 
-PbintrayKey=***************************** 
-PdryRun=false
  • 注:获取API Key(需回到 Jcenter 网站)

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_18

  • 操作示意图

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_19

  • 第1次上传可能需要较长时间,请耐心等待(访问外国网站)。上传成功提示如下:

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_20

  • 注:执行可能出错的问题
// 错误日志:说明权限有问题
bash: ./gradlew: Permission denied

// 解决方案:获得权限,直接在终端输入以下命令
chmod +x gradlew
  • 至此,已经将项目上传到 JCenter了,可进入查看相关信息

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_21

但此时还不能够被外部直接被引用,请继续往下看。

步骤3:添加到JCenter

  • 请按照以下步骤真正添加该项目到JCenter

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_22

  • 提交申请后,需要等待 管理员审核通过(x小时),会以 站内私信 方式通知

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_23

  • 至此,别人就可直接通过 添加你的依赖 来引用你的Android Library了!
  • 即,如何将代码上传到Jcenter讲解完毕
3.3 额外注意:版本更新

当需要进行Android Library版本更新时,只需要以下2个步骤:

  • 步骤1:在该Module的Gradle文件中的配置2中 重新配置版本号

其他什么都不要修改!!!

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_上传_24

  • 步骤2:重新执行上传代码 在AndroidStudio的 Terminal输入以下命令
// 每行命令均用空格隔开,此处是为了展示才会分行

<-- Windows版本 -->
gradlew.bat clean build bintrayUpload 
-PbintrayUser=carson-ho  // Binary用户名
-PbintrayKey=************* // Binary上的API key,具体获取见下说明
-PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
-PbintrayUser=carson-ho 
-PbintrayKey=***************************** 
-PdryRun=false
  • 等待一定时间,就可以看到 Binary网站上更新了Android Library的新版本。

至此,关于 将自己代码上传到 JCenter 的步骤 已经讲解完毕。

4. 测试

  • 在讲解如何上传代码到JCenter后,需要测试上传的代码库是否能正确被其他开发者正常引用
  • 下面,我将详细讲解如何测试上传到JCenter的代码开源库
步骤1:查看依赖

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_ci_25

// Maven
<dependency>
  <groupId>scut.carson_ho</groupId>
  <artifactId>CircileView</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

// Gradle
compile 'scut.carson_ho:CircileView:1.0.0'
步骤2:添加依赖(Gradle)

此处仅展示通过Gradle 添加依赖。

build.Gradle

dependencies {
    compile 'scut.carson_ho:CircileView:1.0.0'
}
步骤3:在XML文件中添加控件 & 添加属性
<scut.carson_ho.circlelibrary.libraryCircle
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:padding="30dp"
        app:circle_color="#FF4081"
         />
运行效果

这是一份详细&清晰的 上传Android Library到JCenter 教程:如何使得自己的代码被别人优雅引用_Android_26

5. 总结

  • 看完本文后,相信你已经可以清晰 采用 bintray-release插件方法发布开源项目(Android Library) 到 JCenter了

标签:JCenter,步骤,代码,Library,Android,上传
From: https://blog.51cto.com/u_16175637/7074342

相关文章

  • 跨平台xamarin.Android 开发之 :适配各架构(X86_64 、 X86、arm64-v8a、 armeabi-v7a )
    此代码的编写花费了脑细胞:在每次编码开启编码器到只需要一次编码器的开启优化前提:编译好FFMpeg的各平台的动态库基本上Android X86_64、X86、arm64-v8a、armeabi-v7a采用FFmpeg编码的方式基本一直。差异是内存分配和取指有所不同,如果分配不对,直接闪退。先看看通用的编码......
  • 跨平台xamarin.Android 开发之 :适配各架构(X86_64 、 X86、arm64-v8a、 armeabi-v7a )
    此代码的编写花费了脑细胞:在每次解码开启解码器到只需要一次解码器的开启优化前提:编译好FFMpeg的各平台的动态库Windows、Android(X86_64、X86、arm64-v8a、armeabi-v7a)解码相对编码要简单一些,因为不涉及到AVFrame取指转换解码包括:创建解码器、解码、释放解码器us......
  • 跨平台xamarin.Android 开发之 :适配各架构(X86_64 、 X86、arm64-v8a、 armeabi-v7a
    从事Windows,项目探索预研跨平台开发,对Android只知道有X86_64、X86、arm64-v8a、  armeabi-v7a这么个东西其他空白。编译入手采用Xamarin.Android开发。通过摸索。在Xamarin.Android中使用FFmpeg编解码,需要获取源码编译成对应Android架构的so动态库,如何编译不在此处讨论,稍......
  • Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?
    我们在做Android平台RTMP推送和GB28181设备对接的时候,遇到这样的问题,有的设备,麦克风采集出来的audio,音量过高或过低,特别是有些设备,采集到的麦克风声音过低,导致播放端听不清前端采集的audio,这时候,就需要针对采集到的audio,做音量放大处理。先说如何采集,android平台通用的做法是采集au......
  • IDEA/Android Studio的gradle控制台输出中文乱码问题解决
    原文地址:IDEA/AndroidStudio的gradle控制台输出中文乱码问题解决-Stars-One的杂货小窝在项目中,有使用到Gradle自定义脚本,会有些输出日志,但是输出中文就变成乱码了..本篇就介绍下解决方法乱码效果如下图所示步骤我是window系统,不知道其他系统会不会出现这个问题乱......
  • Android Studio Giraffe安装与gradle配置
    本机环境:win10专业版,64位,16G内存。原先用的AS2.2,是很早之前在看《第一行代码Android(第2版)》的时候,按书里的链接下载安装的,也不用怎么配置。(PS:第一行代码这本书对新手确实很适合,第1版是eclise,第2版是Androidstudio)最近想给AS升级一下,果不其然碰到很多问题。......
  • Android系统启动-SystemServer上篇-1
    相关文件:/frameworks/base/core/java/com/android/internal/os/-ZygoteInit.java-RuntimeInit.java-Zygote.java/frameworks/base/services/java/com/android/server/-SystemServer.java/frameworks/base/core/jni/-com_android_internal_os_Zygote.cp......
  • Android的onAttach方法是在 Fragment 与其宿主 Activity 关联时调用的,用于建立 Fragme
    在Android中,Fragment的初始化数据通常不应该放在onAttach方法中。onAttach方法是在Fragment与其宿主Activity关联时调用的,用于建立Fragment与Activity之间的关联。这个方法主要用于执行与宿主Activity相关的操作,例如获取Activity的引用或初始化一些与Activity......
  • android_HAL框架源码分析
    ANDROIDHALAlbertLuoandroidHAL是什么?为什么有它?硬件抽象层是介于android内核kernel和上层之间的抽象出来的一层结构。他是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件具体怎么实现工作的,它屏蔽了底层的实现细节。它在整个android架构中的位置如下图所......
  • Android FrameWork——Binder机制详解
    1.前面我曾经发表过一篇blog介绍了aidl实现机制(aidl实现机制浅析),不过那只是停留在java表层,并遗留了一个问题,那就是BinderProxy.transact该方法本地化实现,同时我指出了它的具体代码位置:\frameworks\base\core\jni\android_util_Binder.cpp->staticjbooleanandroid_os_BinderPr......