Android开发积累程序员Android开发经验谈

这是一份详细&清晰的 上传Android Library

2019-04-15  本文已影响64人  06fd4cf1f427

前言

// 通过在Android Studio的build.gradle文件中添加依赖
dependencies {
  compile 'com.squareup.okhttp:okhttp:2.4.0'
}

目录

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

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

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

2. 知识储备

2.1 代码引用的本质

对 jar 包 / aar包的引用

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

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)原理

2.4 JCenter 介绍

Maven仓库 = 中央远程仓库

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

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

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

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

3.1 准备工作

步骤1:注册Bintray账号

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

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

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

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

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

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

3.2 具体上传

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

<-- 配置代码 -->
// 配置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一致
<-- 配置代码 -->
// 配置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中

// 每行命令均用空格隔开,此处是为了展示才会分行

<-- 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
// 错误日志:说明权限有问题
bash: ./gradlew: Permission denied

// 解决方案:获得权限,直接在终端输入以下命令
chmod +x gradlew

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

步骤3:添加到JCenter

3.3 额外注意:版本更新

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

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

// 每行命令均用空格隔开,此处是为了展示才会分行

<-- 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

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

4. 测试

步骤1:查看依赖

// 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"
         />

运行效果

5. 总结

END

好了,写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的加群 Android IOC架构设计免费获取。
群内还有免费的高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

点赞+加群免费获取 Android IOC架构设计
image
上一篇下一篇

猜你喜欢

热点阅读