赞
踩
因项目需要,引用第三方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
引用方式,如果有问题或有更好的方案,欢迎留言哈~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。