Android集成第三方依赖库
在此之前,首先先来总结一下Android集成三方依赖库的方式Android也是基于java,所以大体上的集成第三方jar代码包跟java一个道理。
- 首先是最方便的一种方式Jcenter或者maven方式。官方都会提供这两种的脚本语句,只需在app项目中添加即可(可以自行了解相关内容)
//依赖的来源
repositories {
jcenter()
flatDir {
dirs 'libs'
}
maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:design:27.1.1'
compile 'com.android.support:appcompat-v7:27.1.1'
//在此处添加需要的依赖即可
compile project(':mopub-sdk-banner')
//注:高版本的gradle语言compile已经过时(2018年底将会废弃),使用implementation或者api来代替。
}
不管什么样的api或者依赖库官方一般都会提供这种方式,只需参考官方文档即可。
- 如果需要导入的是第三方的jar代码包,那么只需在Android项目中的libs(也可以是你自己命名的其他文件夹中)中,放入你需要的jar包。之后在项目中module的build.gradle文件中添加如下语句
//XXX为java包的名字
compile files('libs/XXX.jar')
- 或者在Android studio中的模块配置中手动添加依赖包也可以,点击Android studio左上角File->Project Structure,找到找到对应的项目后,就可以看到项目的基本配置信息,然后选择dependencies,点击左上角的绿色+选择要添加的依赖,有三种依赖方式可供选择(Library/jar/model)选择下载好的依赖包即可。
其次是第三方Android项目的sdk 项目依赖
如果说需要导入的不是纯粹的jar代码包,而是一个功能模块(module)。这时有两种方式可以选择,
- 一是修改sdk中gradle文件的配置信息主要是buildtoolsversion,以及使用到的一些v4,v7包的版本需要跟主体项目保持一致,其中的一些没用可以删去(dependencies中的一些依赖等),之后在app的setting.gradle中include后添加该sdk
//app的setting.gradle中
include ':app', ':mopub-sdk:mopub-sdk-banner'
- 另外一种是自己新建一个Android Library,项目上右键new → module(注意) ,将创建好的module中的src下的文件全部删除,将下载的sdk中对应的src文件夹中的东西复制过去,其他的也对应复制即可。
之后在gradle文件中添加依赖。
Android集成Mopub
先给出官方文档:
https://developers.mopub.com/docs/android/getting-started/
大致步骤按照官网来就行。各种广告模式也参考官方文档来即可。
在升级项目中的广告sdk时候由于版本太旧所以踩了不少坑。再次总结一下:
- 由于使用方法推荐的方法时候(jcenter上获取)其中有一个文件需要科学上网,而远程git上面跑测试时候的环境恰恰没有外网所以测试一直是build失败,所以这种方式无法使用。
//就是因为引用的这个网址无法访问
maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
- 所以采用module的方式集成,又因为项目中的gradle版本使用的是很旧的一个版本,而官方给出的新版本sdk模块是使用的新版本gradle,直接丢进去有很多地方不兼容。所以要修改grade版本成一致,一是升级项目中的gradle(我这个项目比较大根目录涉及多个app,很难搞,所以放弃这个方法)二是修改第三方module中的gradle
api 以及 implementation 需要使用 compile 来代替 (gradle3.1之前都需要)
错误:google() 找不到
解决方法:将gradle中的google()修改为
maven {
url 'https://maven.google.com/'
name 'Google'
}
......
总结
总之期间是遇到了不少的困难,但是只要是遇到了问题那就一定有他的原因,遇到的并不是什么怪异现象,在网上搜总会有答案的,多利用google,并且大部分问题都可以在stackoverflow上面找到答案,关键的是要有一颗沉得住的心。