本篇从最基本依赖 使用的演化到 私服搭建
其中前面大家都会, 为展示演化流程完整性添加上,会的就直接略过,往下看私服搭建, 不足之处 望批评指正。
1.什么是依赖
- 项目A需要使用项目B中已经完成的功能,类和方法
- 业务代码中需要使用已经封装好的库
- 库或框架中需要使用别的库或者框架中已经有的功能
2.为什么需要依赖管理
写程序的本质是一个抽象的过程,功能和业务需要分离
一个项目中往往需要大量的库或者功能,需要统一的管理
如果不加以控制,项目将会越来越混乱。
3.Android目前最好的依赖工具Gradle
Gradle 是一个基于Apache Ant 和 Apache Maven概念的项目自动化构建工具。
Gradle是以Groovy语言为基础,面向Java应用为主
Google默认并推荐使用Gradle
引入方式之一
1.切换Project 视图
2.新建libs目录
3.拷贝jar包
4.add as library
拷贝jar包
原始 gradle文件的dependencies
选中拷贝的jar包 右键选择 add as library
Add to module 添加提示 选中app
选择后dependencies 会增加一条我们新加的依赖
compile files(‘libs/universal-image-loader-1.9.3.jar’)
引入方式二、
1.import module.
2.Project Structure
3.选中相应的Module
4.module dependency
Android中有时依赖需要依赖 图片,字符串,布局等资源文件,不能打成jar包,我们可以打成arr 或者 module依赖
1.新建Module
2.选中Android Library
3.填写lib名字
4. 我们看到此model已经在此Project视图下
5.我们打开依赖视图 选择app 选中Dependencies
点击+号 , 添加我们的库依赖
我们看到我们的视图下已经添加了我们新引入库的依赖。 所有的依赖都能看到
我们点击Build 默认就会给我们生成arr文件。
第二种方式的扩展
我们直接依赖aar.
1.获取aar
我们新建一个Android Library 并编写我们需要的工具类,build之后会生成arr文件。
我们也可以直接拷贝别人提供给我们的arr文件。
2.将生成的arr拷贝到libs目录下。
这时我们通过依赖视图或者右键都不能找到入口
3.添加依赖配置
1).在gradle下面增加代码配置如下
android {
....
repositories {
flatDir{
dirs 'libs'
}
}
....
}
2).并且在gradle下的dependencies添加如下配置
dependencies {
...
compile(name:'loglibrary-debug', ext:'aar')
...
}
这是添加loglibrary-debug.aar的实例。然后同步gradle 就可以依赖成功。
引入方式三(推荐)
一、找到相应的build.gradle
二、compile(jcenter. mavencenter. mavenlocal)
三、通过Nexus搭建私服
jCenter,是一个代码库,相当于一个公共的存储控件,简单的来讲就是你把你写好的aar文件及一些文档描述文件之类的东西打包上传到jCenter服务器上,其他人就可以通过jCenter服务器下载到你上传的包了。
网址 https://bintray.com/bintray/jcenter
譬如 compile ‘com.android.support:appcompat-v7:25.3.1’
找到 External Libraries目录下的appcompat-v7:25.3.1’的包 随便打开一个类,拷贝其路径。就会显示其位置如下:
/Users/jiang/.android/build-cache/10b63ae0b2889ca954aa343c2e545627a2b8a719/output/jars/classes.jar!/android/support/v7/appcompat/BuildConfig.class
这是我们第一次配置时从网络端下载的包存放到本地。当我们第二次使用的时候就不需要重复的去下载。
allprojects {
repositories {
jcenter()
}
}
这样的好处显而易见, 当我们想要升级某个依赖或者某个库的时候仅仅只需要更改版本号就可以啦。
前面几种方式的弊端在于每次升级要删除原有的包,再拷贝新的包,再更改依赖配置
例如我们想引入最流行的框架Retrofit我们去官网 http://square.github.io/retrofit/找到其依赖信息直接拷贝即可
compile 'com.squareup.retrofit2:retrofit:(insert latest version)'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
另外一种 就是利用AndroidStudio自带的搜索工具去搜索添加
上面的流程基本都会使用,又写了一下 重点来啦
下面主要说明如何获取Nexus私服搭建 http://www.sonatype.org
点击后进入这个网址 https://support.sonatype.com/hc/en-us
选择 Download Nexus Repository Manager3 进入下面的网址
https://support.sonatype.com/hc/en-us/articles/218637467-Download-Nexus-Repository-Manager-3
这个版本的安装版下载地址
OSX installer: http://download.sonatype.com/nexus/3/nexus-3.0.1-01-mac.dmg
下载后
点击安装
我们打开后
用户名 admin 密码 admin123
然后创建自己的用户 下图为示例
然后登陆自己的账号
创建自己的仓库
选择仓库类型 推荐mave2 (hosted)
输入仓库等配置信息, 如图为其中一种信息推荐
然后仓库就创建完毕
创建仓库告一段落 有点和svn 和 git 管理异曲同工之处。 然又不尽相同。
下面开始上传我们的arr库 到 服务仓库
上传和引用已编译的model到搭建的私服
allprojects {
repositories {
jcenter()
mavenLocal() // 告诉AndroidStudio 我们使用 mavenLocal啦
}
AndroidStudio 有的没有进行智能提示 一些代码我们可以保存在笔记里面 直接拷贝
格式如下, url 地址为我们的仓库地址
30.96.100.168 是本地ip地址 Windows 用ipconfig 查询 Mac用 ifconfig 查询
userName: “JiangGe” 账号名字
password : “xxxx” 账号密码
仿下面进行配置
// 定义我们的上传行为
uploadArchives {
repositories.mavenDeployer {
// 仓库地址
repository(url: "http://30.96.100.168:8081/repository/com.jiang.jianglib/") {
// 仓库账号密码
authentication(userName: "JiangGe" , password : "xxxx")
pom.version = "0.0.1" // 版本号
pom.artifactId = "jianglib" // lib标识
pom.groupId = "com.jiang" // groupId
}
}
}
gradle 上添加 apply plugin: 'maven'
apply plugin: 'maven'
然后我们同步Gradle
然后我们新建一个工程 按下图进行配置
allprojects {
repositories {
maven {
url "http://30.96.100.168:8081/repository/com.jiang.jianglib/"
}
}
}
配置当前的版本
// 按照此格式 路径 : 库 : 版本
compile 'com.jiang:jianglib:0.0.1'
然后点击同步,就会出现一个下载的过程。
然后我们的依赖资源库就有了我们新增的依赖
试验一下代码
有了我们的依赖提示。
内容不足之处望批评指正
如有疑问和建议可发邮箱zhangdanjiang_java@163.com