当前位置: 首页 > 后端技术 > Java

Android导入第三方库的三种方式

时间:2023-04-02 00:38:08 Java

Android导入第三方库的三种方式1:介绍三种方式:Gradle抓包、libs导入、源码导入2:Gradle抓包Gradle抓包是最简单的方法,你只需要在Project->app文件夹下的build.gradle文件中添加依赖:在build.gradle文件中为AndroidStudio添加依赖。默认的依赖库是google()、jcenter(),我们也可以添加Maven仓库的依赖allprojects{repositories{google()jcenter()mavenCentral()maven{url"http://mvn.gt.igexin.com/nexus/content/repositories/releases/"}//一个推送的maven镜像依赖maven{url'http://maven.aliyun.com/nexus/content/repositories/releases/'}//阿里云的maven}}上面使用了implementation,compile和api的区别首先是2.x版本的依赖方式:再看3.0:通过对比可以看出,在Android3.0中,compile依赖已经被弃用,取而代之的是implementation而api,provided被compileonly代替,apk被runtimeonly代替。implementation:使用该命令编译的依赖只为当前Module提供接口。LibraryA中引用了LibraryC的库,如果LibraryA中对LibraryC的依赖使用了implementation关键字。如下:dependencies{....implementationproject(path:':libraryC')}那么LibraryC中的接口只能被LibraryA使用,而我们的AppModule无法访问到LibraryC提供的接口,即这个依赖是隐藏在内部的,不对外暴露的。这就是implementation关键字的作用。api(类似于之前的compile)可以提供给外部使用,相当于原来的compile。这种依赖配置让Gradle实现了它引入的依赖模块对其他上层模块是可见的,无论是在编译时还是运行时,即通过api配置引入的依赖模块在依赖上是具有传递性的。这样可以让其他上层模块直接使用依赖模块的Api,但是也意味着一旦依赖模块改变了Api,所有使用过依赖模块改变后的Api的上层模块都需要重新-执行编译问题:Android依赖会导致依赖冲突。jar包中添加了一定的依赖。我们的项目添加了一定的依赖。比如:api'cn.bmob.android:bmob-sdk:3.6.6'第一次看到Unabletomergedex改了Gradle之后肯定要编译,于是点了Sync,就去水马桶了。等我兴高采烈的回来,才发现,纳尼?我的Build栏下有一片血红色,仔细看:Causedby:com.android.dex.DexException:MultipledexfilesdefineLcom/google/gson/internal/bind/TypeAdapters;这里的意思是重复的dex文件出现在TypeAdapters类中,然后使用AndroidStudio强大的查询功能,可以看到com.google.code.gson和cn.bmob这两个Gradle依赖中出现了这个类。android,这就是所谓的重复依赖或者依赖冲突或者Jar包冲突。其实Bmob的SDK已经集成了gson和okio这两个jar,而我在项目中也使用了这两个jar包,所以造成了依赖冲突。解决方法:除了删除冲突包外,我们还可以使用Gradle的excludegroup将指定包名排除在编译范围之外//bmob-sdk:Bmob的androidsdk包,包括Bmob的数据存储、文件等服务,如下是最新的bmob-sdk:implementation('cn.bmob.android:bmob-sdk:3.5.5'){//gson-2.6.2excludegroup:'com.squareup.okhttp3'//相当于excludegroup:'com.squareup',module:'okhttp3'excludegroup:'com.squareup.okio'excludegroup:'com.google.code.gson'//exclude(module:'gson')//防止版本冲突}三:libsimport将网上下载的对应第三方库的jar包放到Project-->app文件夹下的libs文件夹中:然后右键jar包,选择“Addaslibrary...”执行import;或将依赖项添加到我们上面的build.gradle文件中:dependencies{implementationfileTree(dir:'libs',includes:['*.jar','*.aar'])jar')}方法二:在module的build.gradle中添加android{。......}//和dependencies同级//然后添加repositories到dependencies{flatDir{dirs'libs'}}dependencies{implementation(name:'cglib-for-android',ext:'jar')implementation(name:'xx',ext:'aar')//这是arr包}四:源码导入源码导入方式最大的好处就是受益于开源。我们可以根据项目的需要直接修改第三方库的源码。首先,我们将第三方库的源码下载到本地,将源码解压到我们项目的根目录:应用其他模块的直接依赖{implementationproject(path:':common_base')}并添加settings.gradle中新引入的项目名称:include':module_red'include':module_goods'include':module_free'include':module_me'include':module_login'include':common_base'//依赖include':app'rootProject.name="KuaiLaiTao"end:也许终点只是绝望和失败绝不是停止的理由。