Android studio 中引用jar的其实是Maven?(二)
上一篇:Android
studio 中引用jar的其实是Maven?(一)
搭建maven仓库:
去了解一个新的事物的时候,最好的方式就是去使用它。例如去了解一座城市的时候,最好的方式就是乘坐公共交通工具。
根据上一遍的初始Maven可以知道,android studio中使用的仓库是jcenter中央仓库,这个仓库是本来就集合在gradle中的。看,进入这个jcenter方法之后,可以看到都是引用了gradle工程的jar包。所以这个jcenter是一个gradle中公共的仓库
由于Android Studio使用了Gradle构建工具,在library依赖的处理上是将被依赖的library作为一个module引入(拥有一份完整的library拷贝),而Eclipse的ADT则是直接将library作为外部项目依赖链接进来,两者各有各的优缺点。Android Studio的好处是能时刻保持项目的完整性,每一个项目都包含了整个项目所需要的一切东西,当你把项目共享给别人的时候就不会因为落下某个library而导致别人无法正常打开你的项目。缺点则是多个项目都依赖同一个library,每个项目都有自己一份library代码拷贝,当这个library的代码需要更新的时候,每一个项目中的library代码都需要更新一遍。而Eclipse的library依赖,只是做了一个library链接,多个项目可以链接到同一个library,好处是library需要修改的时候只需要修改一处代码,缺点时与他人共享项目的时候可能会落下library忘记共享。
一般一个公司长期开发累积下来,都会总结出一套自己的SDK或者工具供自己的产品使用。如果使用Android Studio开发,一旦自己的SDK需要更新难免就会遇到前面说的问题。好在Android Studio除了library module依赖这种方法之外,还提供了本地仓库或者(服务器)远程仓库依赖,通过Gradle工具自动从仓库中获取并管理项目所需要的library。Gradle支持maven仓库,早期的Android Studio直接使用的就是maven中央仓库,虽然正式版之后改用jcenter,但是依然可以混用自定义的maven仓库。
所以如果我们有SDK,并且是使用Android Studio进行开发的话,那么我们就需要把我们的SDK发布到jcenter仓库中去了。因此我们首先要学会发布代码到jcenter中。
具体的步骤可以参考以下非常详细的说明:
如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
一般来说,经过上面的步骤发布到jcenter的代码或jar包都是提供给别人进行使用,但对于自己公司的sdk或者工具类,把这些内容公布在jcenter中就显得没有那么安全。毕竟任何人都可以通过访问jcenter的网址对jar包进行下载,一旦公司中的关键技术泄露出去,对公司影响甚大,特别有着支付板块的代码。所以我们需要拥有我们自己地代码仓库。
如何在Linux服务器上搭建自己的Maven
搭建简单的Maven之后,我们需要把我们的代码jar包发布到自己的Maven中。在发布之前,我们先来看看我们是如何获取仓库中的jar包的。我们拿android studio的一个项目。
1.首先我们通过android studio的界面操作,加入一个google的gson库。
加入了这个gson之后,我们看到工程目录下的build.gradle文件已经更新。
更新的内容为:
compile 'com.google.code.gson:gson:2.2.4'
2.了解公共库地址的构建
其中compile为默认的字段,后面是目标库的地址。这个lib的地址字符串包含了三部分,分别用冒号隔开:
GROUP_ID:ARTIFACT_ID:VERSION
所以上面gson的例子中,Group_ID就是com.google.code.gson,Artifact_ID就是gson,VersionID就是2.2.4。
其实,这里的配置结合我上文找到的jcenter的域名一组成了目标jar的地址。
域名:https://repo1.maven.org/maven2/
结合上面lib地址字符串之后的地址:https://repo1.maven.org/maven2/com/google/code/gson/gson/2.2.4/
仓库中存储的有两种类型的library:jar 和 aar。jar文件大家都知道,但是什么是aar文件呢?
aar文件时在jar文件之上开发的。之所以有它是因为有些Android Library需要植入一些安卓特有的文件,比如AndroidManifest.xml,资源文件,Assets或者JNI。这些都不是jar文件的标准。
因此aar文件就时发明出来包含所有这些东西的。总的来说它和jar一样只是普通的zip文件,不过具有不同的文件结构。jar文件以classes.jar的名字被嵌入到aar文件中。其余的文件罗列如下:
- - /AndroidManifest.xml (mandatory)
- - /classes.jar (mandatory)
- - /res/ (mandatory)
- - /R.txt (mandatory)
- - /assets/ (optional)
- - /libs/*.jar (optional)
- - /jni/<abi>/*.so (optional)
- - /proguard.txt (optional)
- - /lint.jar (optional)
可以看到.aar文件是专门为安卓设计的。
3.确定jar包在仓库中的地址
先看我们如何获取jar包,有了上面的jar地址规则,我们就可以获取一个已有的仓库中的一个jar。
如图,一个已经搭建好的Nexus仓库中,找到这个仓库的公开地址:(红线覆盖的地方)
得到这个仓库的公开地址之后,我们要找寻一个jar来供我们android studio中使用。
因此在界面的左侧我输入了一个远程库下载下来的log4j来搜索。
此时的界面为:
红框中你可以到,这个log4j-api的jar包的所在仓库组:Central ,GroupID : org.apache.logging.log4j ,artifactId:log4j-api,version:2.3.
为了证实该jar是否可以找到,可以按照上面的方法,拼接这个jar的所在位置的url: /Central仓库地址/org.apache.logging.log4j/log4j-api/2.3.
那么我们在android studio中如何引用这个jar包呢?
1.打开工程的下面的build.xml (配置jCenter()的那么build.xml)
2.配置仓库地址到maven插件中。
3.配置compile ,到需要使用log4j的工程中的build.xml中,加入:
也可以使用上面的android加入仓库代码的界面操作。
上一篇:Android
studio 中引用jar的其实是Maven?(一)
参考:http://www.open-open.com/lib/view/open1435109824278.html
http://techtalk.alo7.com/?p=220
Android studio 中引用jar的其实是Maven?(二)的更多相关文章
- Android studio 中引用jar的其实是Maven?(一)
由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...
- Android Studio如何引用jar包裹(不gradle)
这和eclipse最大的区别.与非常人的预期开始Android Studio我们很不高兴这一套. 它直接在地图上.首先通过File->Projcet structure打开project结构界面 ...
- 关于Android Studio中第三方jar包的Javadoc绑定
原文地址:http://blog.csdn.net/a739697044/article/details/28116189 现在刚开始从Eclipse转用Android Studio,现在在尝试使 ...
- Android Studio中解决jar包重复依赖导致的代码编译错误
在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错 Program type already present: okhttp3.internal.ws.Re ...
- 在Android Studio中导入jar包
#1 下载jar包文件, #2 拷贝到libs目录下 #3 打开你的build.gradle,在dependencies加入如下代码 dependencies {compile files('libs ...
- 在Android Studio中调用so中的方法
本节用的so是上节用Android Studio创建的so.想在Android Studio中调用so中的方法,需要先引用so.Android Studio中引用so的方法有二种,下面开始介绍. 一 ...
- Xamarin Android中引用Jar包的方法
新建一个Java Bingdings Library 将Jar包复制,或使用添加已存在的文件,到Jars文件夹中 确认属性中的“生成操作” 如果有类型转换不正确,请修改Transforms文件夹中的相 ...
- Android Studio中如何打JAR包
Android Studio中对于library类型的Moudle,默认打出来的是AAR包, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包, 可以通过在 ...
- Android ImageView 不显示JPEG图片 及 Android Studio中怎样引用图片资源
Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里须要设置成setVisibility(View.VISIB ...
随机推荐
- 使用Markup解析xml文件
1:怎么获取Markup.cpp 和 Markup.h 首先到http://www.firstobject.com/dn_markup.htm链接下,下载Release 11.5 zip (579k) ...
- java同时连接db2和mysql的程序
db2的jar包安装参见:http://www.cnblogs.com/zifeiy/p/7918554.html 代码: package com.anbank.datafetch; import j ...
- Linux OpenGL 实践篇-6 光照
经典光照模型 经典光照模型通过单独计算光源成分得到综合光照效果,然后添加到物体表面特定点,这些成分包括:环境光.漫反射光.镜面光. 环境光:是指不是来特定方向的光,在经典光照模型中基本是个常量. 漫反 ...
- 解析spring中的BeanFactory
我们常把spring看作一个bean工厂或者ioc容器,它帮助我们负责对象的创建管理,以及对象间依赖关系的建立,还有其他的功能. 关于工厂的实现,一般来说与我们接触最多的就是BeanFactory和A ...
- MyBatis 框架系列之基础初始
1.什么是 MyBatis MyBatis 本是 apache 的一个开源项目 iBatis,后改名为 MyBatis,它 是一个优秀的持久层框架,对 jdbc 的操作数据库的过程进行封装,使开发者只 ...
- [ZJOI2010]基站选址
题目描述 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为Di.需要在这些村庄中建立不超过K个通讯基站,在第i个村庄建立基站的费用为Ci.如果在距离第i个村庄不超过Si的范 ...
- POI ZAW
要求一个最短路,担心的就是一条边被正反经过两次. 规定第一步为1到i,并把这条边设为不可经过.然后从i做最短路到1,因为这个过程是不会经历重边的(如果经历了就不是最短路了). 求最短路用SPFA,但常 ...
- NOIP2014-7-7模拟赛
1.无线通讯网(wireless.pas/cpp/c) [题目描述] 国防部计划用无线网络连接若干个边防哨所.2种不同的通讯技术用来搭建无线网络:每个边防哨所都要配备无线电收发器:有一些哨所还可以增配 ...
- hdu 4533 线段树(问题转化+)
威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- ssh远程登陆
ssh远程登录命令简单实例 ssh命令用于远程登录上Linux主机. 常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh ...
