Android依赖管理与私服搭建

九章 等级 664 0 0

在Android开发中,一个项目需要依赖许多的库,我们自己写的,第三方的等等,这篇文件介绍的就是自己搭建私服,创建自己的仓库,进行对我们自己写的库依赖管理。本文是在 mac book pro 环境上搭建的,其它操作系统操作方式大致一样的。如果有不一样的地,可以参考官方文档

Android中引入依赖的几种方法

一 直接引用 jar 的方式

1. 切换project视图
2. 新建libs目录
3. 拷贝 jar 包到libs目录下
4. add as library

这种依赖方法最原始,如果依赖的包升级了,我们需要到libs目录中把旧版本的包删除,再下载新的包,再放到libs目录下,这样如果libs目录下有几十个包,这样工作量就非常大。
而Android项目中会有一些图片,xml,字符串等资源,这样是不能直接打包到jar中的。这种依赖会有一定的局限性 

二 直接引用 aar 的方式

1. 和第一种直接引用 jar 的方式相似,第一步直接把aar文件拷贝到libs目录下
2. 直接拷贝进去还是不行的,第二步需要在项目的build.gradle文件中添加以下两步 

1 在android的块中添加如下代码

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.test.study"
        minSdkVersion 14
        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'
        }
    }

    //需要在这里添加如下代码,告诉编译器,我们要引入这个目录下的所有文件
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
} 

2 在项目的build.gradle文件中,在dependencies中添加如下代码

//比如我们的aar文件叫 lib2.arr
//name对应的就是文件名,ext对应的就是文件的扩展名
compile(name:'lib2',ext:'aar') 

以上两步完成后,aar包中的资源,类等就可以直接使用了。

三 引用module的方式

1. 右键点击项目,选择open module settings
2. 选择在Project Structure中选择Dependencies
3. 选择添加相应的module,进行依赖即可

这种方法,每个module中就可以包含图片,字符串,xml等资源了。其实最终打包成的是 aar 格式的包。aar 相比于 jar ,aar是可以包含资源的。这对于Android开发是非常有用的。在Android Studio中,一个project下可以有多个module,每个module之间可以互相依赖。但是这种方法也有一个不好的地方,比如我们的项目有一个utils的module,其它的module都依赖这个utils,如果其它的公司的项目部门的项目也想使用这个utils,就只能拷贝代码了,每次utils添加了或者修改了功能的时候,每次都要拷贝,复用性不好。只是单纯的在自己的项目中达到了分模块的功能,即使是这样,这个utils的代码是组里的人谁都可以改的。更好的方法是只让一个人改,其它的人只需要用就行了。有专门的一个同事负责这个utils模块更好。 

四 最后一种依赖方式,直接在build.gradle中使用compile添加依赖(_推荐_)

1. 通过compile从 jcenter,mavencenter或者自己搭建的私有仓库进行依赖 

通过这种方式依赖的好处是我们并不需要像直接引用 jar一样,还要从网上下载最新的,删除旧的等步骤,我们直接在build.gradle中修改一下版本号就行了。网上有第三方的私服,不过公司的代码并不方便放在第三方的私服上

下面介绍一下如何通过Nexus搭建自己的私服

如何通过Nexus搭建私服?

注:这里的Nexus不是Google的nexus手机

  1. 首先确定我们的环境安装好maven,jdk等必须的环境
  2. 上面的环境准备好后,去官网下载相应操作系统的最新版本的nexus下载地址:http://www.sonatype.org/nexus/go
  3. 下载好之后解压到本地的任何一个目录,我的解压目录是 /Users/zhanghongjun/myLibrary/nexus-3.3.1-01-mac
  4. 在这个目录下,找到nexus对应的版本的目录,看到下面有一个bin目录,我的bin目录如下:/Users/zhanghongjun/myLibrary/nexus-3.3.1-01-mac/nexus-3.3.1-01/bin
  5. 在bin目录下有一个可执行文件 nexus,执行这个可执行文件就可以开启nexus了。

下面是nexus的一些命令选项 nexus {start|stop|run|run-redirect|status|restart|force-reload}如果要开启nexus,在bin目录下运行如下命令

./nexus start 
  1. 在浏览器中打开 http://127.0.0.1:8081

注:默认nexus监听8081端口,如果8081端口被占用,在安装nexus或者在配置文件中修改端口,修改文件 /nexus-3.3.1-01/etc/nexus-default.properties ,里面有application-port=8081 ,修改重启即可,重启命令./nexus restart

  1. 浏览器打开nexus,如下图

Android依赖管理与私服搭建

  1. 首先要上传库,必须要先创建一个自己的账号,我们登录管理员账号,然后创建我们自己的账号

管理员账号和密码默认分别为 admin , admin123

登录管理员账号后如下图

Android依赖管理与私服搭建

  1. 创建用户的过程如下图

Android依赖管理与私服搭建

  1. 账号创建成功后,退出admin账号,登录我们自己创建的账号创建一个仓库,如下图

1
Android依赖管理与私服搭建

2
Android依赖管理与私服搭建

3
Android依赖管理与私服搭建

经过以上步骤,我们的仓库就创建成功了。接下来我们把我们的库上传到自己的仓库中。

如何上传我们自己的库?

  1. 在Android Studio中,比如我们有一个 mylibrary 的module,这里一个公共的库,要把这个库上传到我们自己的仓库。

打开build.gradle,找到合适的地方添加以下代码(代码中有注释)

apply plugin:   'com.android.library'
apply plugin:   'maven' // 1 添加maven插件

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 14
        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'
        }
    }
}

//定义上传的行为
uploadArchives {
    repositories {
        mavenDeployer {
            //2 添加maven的url,也就是仓库的地址,仓库的地址从哪找,见下图
            repository(url: "http://127.0.0.1:8081/repository/com.test.testlib/") {
                //3 添加账号和密码
                authentication(userName: "test", password: "123456")
            }
            pom.version="0.0.1"         //版本号
            pom.artifactId="testlib"    //artifactId
            pom.groupId="com.test"      //组id,
        }
    }
}


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.3.1'
    testCompile 'junit:junit:4.12'
} 

我们自己的仓库的地址怎么找到?见下图

Android依赖管理与私服搭建

添加了以上配置以后,如何上传我们的包到自己的仓库呢,我们使用gradle的任务来上传,在AndroidStudio 中窗口的右上角有个gradle,点开,如下图

Android依赖管理与私服搭建

经过上面的操作,我们的库就上传到自己的maven仓库中了,在nexus中我们可以看到自己上传的库了,如下图

Android依赖管理与私服搭建

上传完仓库以后怎么引用?

  1. 在项目的build.gradle中添加如下代码
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2'
    }
}

allprojects {
    repositories {
        jcenter()
        //添加如下一句,表示我们使用自己的maven
        mavenLocal()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
} 
  1. 在module的build.gradle中添加如下代码
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.test.testlib"
        minSdkVersion 14
        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'
        }
    }
}

//1 添加下面的代码 
allprojects{
    repositories{
        maven{
            url "http://127.0.0.1:8081/repository/com.test.testlib/"
        }
    }
}


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.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'
    testCompile 'junit:junit:4.12'

    //2 以下方式引用
    compile 'com.test:testlib:0.0.1'
} 

经过以上步骤,就可以创建自己的仓库,并且上传我们自己的库,而且也可以在项目中引用我们自己仓库中的库了

由于环境不一样,版本不一样,操作系统不一样,在操作过程中或许有此行的不同,如果有不同的地方,请参照官方的文档

收藏
评论区

相关推荐

Android依赖管理与私服搭建
在Android开发中,一个项目需要依赖许多的库,我们自己写的,第三方的等等,这篇文件介绍的就是自己搭建私服,创建自己的仓库,进行对我们自己写的库依赖管理。本文是在 mac book pro 环境上搭建的,其它操作系统操作方式大致一样的。如果有不一样的地,可以参考官方文档 Android中引入依赖的几种方法 一 直接引
Java第四十五天,Maven高级篇(三),私服
一、安装私服 ====== 1.下载 Nexus ---------- ### 方法一:到Nexus 官网下载Nexus https://www.sonatype.com/ ### 方法二:我的分享 https://download.csdn.net/download/ITlanyue/12736638 2.解压到指定目录(无中文
Android 5.0 教程:Root 掉你的 Nexus 5
除去 Nexus 4,大部分亲儿子都能吃上甜甜的 Android 5.0 Lollipop。当然,也有很多用户因为 Android 5.0 Root 变难的传闻而不敢升级。这方面大可放心,CF-Auto-Root 已放出 Android 5.0 for Nexus 5 的 Root 工具包,且操作步骤相当简单,无需手动替换内核。 以下是具体操作步骤,仅针对
Android C、C++与java端3DES互通
<div id="article\_content" class="article\_content clearfix"> <div class="article-copyright"> <span class="creativecommons"> <a rel="license" href="http://creativecommons.org/licen
Android+Spring Boot 选择+上传+下载文件
2021.02.03更新 ============ 1 概述 ==== 前端`Android`,上传与下载文件,使用`OkHttp`处理请求,后端使用`Spring Boot`,处理`Android`发送来的上传与下载请求。这个其实不难,就是特别多奇奇怪怪的坑,因此,就一句话, 希望各位读者能少走弯路。 2 环境 ==== * `Win10` *
Centos7.0下Nexus私服搭建
1.下载nexus wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz 2.解压,会出现两个目录,nexus-2.11.2-03是服务  sonatype-work是私有库目录 mkdir nexus
Docker搭建Nexus(Maven私库)
0、镜像的查找:docker search nexus 1、拉取官方镜像:docker pull sonatype/nexus3 2、创建了自己的目录 (/opt/nexus/nexus-data)   mkdir /opt/nexus/nexus-data && chown -R 200 /opt/nexus/nexus-data 3、运行容器
Jenkins + Gradle + pgyer + Android自动发布
Jenkins配置与必要的环境配置 一:Jenkins服务端(Linux系统为例说明): **1.jdk安装与配置** **2.SDK安装与配置** **3.安装配置对应的gradle版本(建议gradle版本在4.1版本以上)** **服务端配置注意问题:** 1.如果系统报错:Parsing the SDK, no caching allow
Linux 下nexus安装
1、首先创建nexus安装目录,本人我安装在/usr/local/nexus路径下 cd /usr/local mkdir nexus 2、下载nexus:[http://www.sonatype.org/nexus/go/](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.so
Linux 安装Maven和nexus代理仓库
1 说明 ==== **环境:redhat Enterprise Linux Server5.3-x64**。 **版本:Maven 3.0.5 ,Nexus-2.5.1-bundle**。 2 安装步骤 ====== 2.1      下载地址 ------------- **Maven:** [http://mirrors.cnnic.cn/
Linux搭建maven私服
1、把压缩包上传到服务器/usr/local/tmp 2、在/usr/local下创建nexus文件夹(mkdir nexus) 3、解压压缩包nexus-3.13.0-01-unix.tar.gz到/usr/local/nexus(tar zxvf nexus-3.13.0-01-unix.tar.gz -C /usr/local/nexus) ![
Maven 私服无法下载 flink 2.11 最新组件事件回顾
有同事反馈 Jenkins 任务构建失败 登陆 Jenkins,查看构建日志,报错截图如下: ![](https://oscimg.oschina.net/oscnet/up-c83410a125f7bc739837b7e363fdaf155bb.png) 在 maven 私服 Nexus 界面搜索,也搜索不到相关组件,Central 仓库的索引中也找
Maven使用 国内镜像配置
Maven使用 国内镜像配置    Maven     setting.xml中配置 <repositories> <repository> <id>nexus</id> <name>local private nexus</name>
Nexus 安装
**Windows下安装Nexus OSS 3.12.1** 1\. Nexus 下载 ------------ 到sonatype官网下载开源免费的OSS版本。OSS即为Open Source Software。 下载地址:[https://www.sonatype.com/download-oss-sonatype](https://www.o
Nexus 3 使用 Maven 坐标搜索时,Version 字段搜索不到 SNAPSHOT 版本的组件
近期将 Nexus Repository Mannager 2 升级到 Nexus Repository Mannager 3 使用 Maven 坐标搜索,Version 字段可以搜索到 release 版本的组件,却搜索不到 SNAPSHOT 版本的组件 而用 baseVersion 可以搜索到 release 版本的组件,也可以搜索到 SNAPSH