开发者社区> 奥特曼超人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android studio 中引用jar的其实是Maven?(二)

简介: 上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建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文件中。其余的文件罗列如下:


[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. - /AndroidManifest.xml (mandatory)  
  2. - /classes.jar (mandatory)  
  3. - /res/ (mandatory)  
  4. - /R.txt (mandatory)  
  5. - /assets/ (optional)  
  6. - /libs/*.jar (optional)  
  7. - /jni/<abi>/*.so (optional)  
  8. - /proguard.txt (optional)  
  9. - /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 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )
【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )
177 0
【错误记录】Android Studio 编译报错 ( This Gradle plugin requires a newer IDE able to request IDE model leve )
【错误记录】Android Studio 编译报错 ( This Gradle plugin requires a newer IDE able to request IDE model leve )
115 0
【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(二)
【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(二)
52 0
【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
159 0
【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(一)
【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )(一)
224 0
【错误记录】Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1. )
【错误记录】Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1. )
125 0
【错误记录】Android Studio 编译报错 ( SDK location not found )
【错误记录】Android Studio 编译报错 ( SDK location not found )
544 0
【错误记录】Android Studio 编译报错 ( Invalid main APK outputs : EarlySyncBuildOutput )(一)
【错误记录】Android Studio 编译报错 ( Invalid main APK outputs : EarlySyncBuildOutput )(一)
221 0
【错误记录】Android Studio 编译报错 ( AppCompat does not support the current theme features )
【错误记录】Android Studio 编译报错 ( AppCompat does not support the current theme features )
101 0
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
147 0
+关注
奥特曼超人
KARL-Dujinyang-奥特曼超人。作者目前任职于银狐、泡椒游戏公司,曾任职腾为CTO,CSDN技术专家,曾创办过创业go、造梦工厂、米奇云,万能孵化器等,领域涉及逆向安全专家以及全栈工程师,作者目前出书中。
239
文章
7
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载