由于要使用第三方jar包。而第三方给的SDK是jar包,并没有上传到Maven库,因此不支持Maven库在线依赖,所以需要如下所示的,在项目中手动集成jar包。
然后在build.gradle中 导入刚才的libs目录
dependencies { api fileTree(include: ['*.jar'], dir: 'libs') }这种方式本人不喜欢,因为习惯了使用Maven在线依赖的方式,因此想把这些jar包上传到Maven私服上,然后通过Maven在线依赖的方式来使用这些第三方jar包。
2、点击右上角的【LogIn】按钮,进行登录 3、登陆之后点击左侧列表中的【views/respsitories】–>【Respsitories】 显示出所有的Respositories,然后以后点击【3rd party】。 因为我们要上传的是第三方的jar包,所以就放在【3rd party】这个Respsitory里面比较合适
点击【Browse Storage】可以看到所有已经上传到这个【3rd party】这个Respsitory里面jar包或者aar包
这一步主要是填写,我们上传jar包之后的一些产物在Maven中的属性,比如groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
参数【GAV Definition】 第一个参数【GAV Definition】可以选择【GAV Parameters】和【From POM】两种方式,我们选择【GAV Parameters】如果选择【From POM】的方式,界面如下
参数【Group】 groupId 是(Maven)项目的唯一标识。Group ID必须满足 Java包名规范 ,这意味着是形如:org.apache.maven,org.apache.commons的格式。Maven不强制此规范,很多遗留的旧项目使用单个单词作为group ID。但是,很难用单个单词作为(新项目的)group ID,并将其提交到Maven中央仓库中。 你可以创建任意数量的子分组。一种比较好的来划分groupId的颗粒度的方式是使用项目结构(package structure)。这是指,如果当前项目是一个多模块(module)的项目,可以通过在父groupId的基础上增加后缀的形式来定义,例如:org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting
参数【Artifact】 artifact 是不带版本号的jar的名字,唯一要求是使用小写字母,且没有特殊符号。如果这是一个第三方的jar包,必须使用其被发布的包名。例如:maven,commons-math
参数【Version】version 如果要发布,可以选择典型的数字和点号组成的版本号(1.0,1.1,1.0.1…)不要使用日期,因为它们通常和SNAPSHOT版本号联系在一起。如果是一个第三方的artifact,你必须使用它提供的版本号,无论这些版本号看起来多么奇怪,比如:2.0,2.0.1,1.3.1
我们这边上传的如下所示
那么我们如果上传成功的话,需要在Android 项目中的build.gradle中引用的话,用下面的形式
dependencies { api 'com.umeng.analytics:analytics-overseas:7.5.4' } 参数【Packaging】 packaging【可选的,默认为jar】: 当不定义packaging时,maven会使用默认值jar。1、点击【Select Artifact(s) to Upload】按钮,选择需要上传的jar包。 2、点击【Add Artifact】按钮 点击【Add Artifact】按钮,自动生成下面的artifacts内容,上面的三个框空白了。 3、点击【Upload Artifact(s)】按钮,上传成功,如下所示
4.上传之后 点击【Browse Storage】面板,然后点击下【Refresh】按钮刷新下,就可以查看上传好的jar包
顺便将另外的一个jar包也上传上去,上传好后,如下所示
刚刚我们已经将两个jar包上传了,现在可以直接在线依赖它们了。
dependencies { //api fileTree(include: ['*.jar'], dir: 'libs') api 'com.umeng.analytics:analytics-overseas:7.5.4' api 'com.umeng.sdk:common-overseas:1.5.4' }sync完毕之后,查看【External Libraies】里面就有刚刚Maven在线依赖引入的两个jar包
这样就方便多了!
(ps: 更新2020年4月8日) 今天有同事下载了一些第三方的aar包,如何放在项目本地使用,我立马建议他将aar包上传到Maven私服。
上传私服如下图所示 打包方式没有aar 点击上传 上传完后
这样的写法 无法下载刚刚上传的AAR包
参考博客:https://blog.csdn.net/u011424451/article/details/87378439 该博客的Nexus版本比我的版本新,我的版本暂时不支持这样的方式,因此 使用 添加结尾 @aar 的方式来引用
在项目中使用如下的代码,注意后面的@aar
implementation 'com.youdao.asr:youdaoasr:1.0.0@aar' implementation 'com.youdao.audio:youdaoaudio:1.0.0@aar'成功下载下来
以前在我之前的博客 【我的Android进阶之旅】快速创建和根据不同的版本类型(Dev、Beta、Release)发布Android 开发库到Maven私服
上传的AAR库 不需要添加结尾 @aar 即可引用,是因为上传的脚本里面就写好了打包方式为aar 所以以脚本的形式上传的 直接不需要结尾 @aar 即可引用。
博客: https://stackoverflow.com/questions/30157575/why-should-i-include-a-gradle-dependency-as-aar 翻译过来: 当您指定@后缀时,您将强制以您指定的格式(可能存在也可能不存在)下载库。 这很有用,例如 当作者忘记指定库是.aar和maven(或gradle,不确定)默认情况下将其视为.jar。 如果指定了@后缀,则不再下载此库的依赖项,因此您必须手动确保。
compile 'com.android.support:appcompat-v7:22.1.1@aar' compile 'com.android.support:support-v4:22.1.1@jar'为了确保在指定@后缀时下载了库的完整依赖树,您必须以以下方式编写它:
compile ('com.android.support:appcompat-v7:22.1.1@aar') { transitive = true }博客:https://www.cnblogs.com/lkc9/p/10813518.html 描述
一、.aar和.jar之间的区别。
‘.aar’可以包含源代码和资源,但是’.jar’只能包含源代码。
二、下载依赖库时的区别
当您在项目的build.gradle中包含一个带有后缀@arr的库时,该库将下载.aar后缀的库文件。如果没有,默认情况下将下载.jar的库文件。当然,您也可以添加后缀@jar使下载
.jar的库文件。
implementation 'com.android.support:appcompat-v7:22.1.1@aar' implementation 'com.android.support:support-v4:22.1.1@jar'作者:欧阳鹏 欢迎转载,与人分享是进步的源泉! 转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/90482592 ☞ 本人QQ: 3024665621 ☞ QQ交流群: 123133153 ☞ github.com/ouyangpeng ☞ oypcz@foxmail.com