因项目需要,引用第三方aar,踩了几个坑,也就有了该文,顺便整理了下常见aar的几种引用方式,详细如下。
方式一
项目工程目录结构如下图,是使用Android Studio 3.0
新建的library
工程:
针对该目录结构的项目,引用libs
下的aar
方法如下:
- 在该
lib
工程的build.gradle
文件中,新增如下代码:
sourceSets{
main{
jniLibs.srcDir(['libs'])
}
}
repositories {
flatDir {
dirs 'libs'
}
}
- 直接引用
aar
即可
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api(name: 'ocr-fullCards-online-release', ext: 'aar')
}
完整build.gradle
代码如下:
apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
manifestPlaceholders rootProject.ext.manifestPlaceholders
}
sourceSets{
main{
jniLibs.srcDir(['libs'])
}
}
repositories {
flatDir {
dirs 'libs'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api(name: 'ocr-fullCards-online-release', ext: 'aar')
}
方式二
在项目根目录下新建repositories
文件夹,将aar
文件拷贝到此,项目目录结构为:
- 在项目根目录
build.gradle
中,添加repositories
引用,如下:
allprojects {
repositories {
jcenter()
google()
flatDir {
dirs '../repositories'
}
}
}
- 在相应
library
或app
工程中引用即可
dependencies {
api(name: 'ocr-fullCards-online-release', ext: 'aar')
}
方式三
在传统Eclipse
建立的项目结构中,引用aar
,项目结构如下:
修改当前core
库的build.gradle
文件:
android {
...
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
java.srcDirs = ['src', 'src-gen', 'test']
jniLibs.srcDirs = ['libs']
aidl.srcDirs = ['aidl']
}
}
...
}
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
api(name: 'moxie-client-1.3.5', ext: 'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}
参照如上修改后,重新编译即可,引用成功。
方式四
将aar
上传到maven
仓库或远程服务器,然后在项目根目录下的build.gradle
文件中,配置好maven
地址,直接在相应的工程中引用即可。
build.gradle
示例
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle"
buildscript {
repositories {
maven { url "http://******/nexus/content/groups/public/" }
maven { url "https://*****/maven" }
maven { url "https://jitpack.io" }
mavenLocal()
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.21"
classpath "com.tencent.tinker:tinker-patch-gradle-plugin:${TINKER_VERSION}"
}
}
allprojects {
repositories {
maven { url "http://******/nexus/content/groups/public/" }
maven { url "https://*****/maven" }
maven { url "https://jitpack.io" }
mavenLocal()
google()
jcenter()
}
}
- 在工程中的
build.gradle
中直接引用即可,示例如下
dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')
api 'com.umeng.sdk:common:1.5.3'
api 'com.umeng.sdk:analytics:7.5.3'
}
好了,以上介绍了开发中常见的四种aar
引用方式,如果有问题或有更好的方案,欢迎留言哈~