不能在库模块内使用本地.aar文件 [英] Can't use local .aar file inside the library module
问题描述
我有 socialauth-android flatDir
目录中,如这里,它工作得很好。
现在,我将一些代码移动到名为 commons的库模块中
,以便在另一个项目中重复使用它。 socialauth-android
完全由库模块使用,所以我将它移入项目/ commons / libs /
重写我的 build.gradle
文件。从现在开始,我无法构建我的项目,因为出现了以下错误:
错误:配置项目出现问题': ScrollApplication。
>无法解析配置的所有依赖:'ScrollApplication:_developmentDebugCompile'。
>找不到:socialauth-android :.
在以下位置搜索:
http://dl.bintray.com/populov/maven//socialauth-android//socialauth-android-.pom
http:// dl。 bintray.com/populov/maven//socialauth-android//socialauth-android-.aar
https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android- .pom
https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android-.aar
https://repo1.maven.org/maven2/ /socialauth-android//socialauth-android-3.2.pom
https://repo1.maven.org/maven2//socialauth-android//socialauth-android-3.2.aar
file:/ home /artem/Workspace/scrollandroid/libraries/socialauth-android-3.2.aar
文件:/home/artem/Workspace/scrollandroid/libraries/socialauth-android.aar
所需人:
scrollandroid :ScrollApplication:未指定> scrollandroid:commons:unspecified
错误表示依赖解析器试图找到 socialauth -android.aar
在项目/库
文件夹内,这是我的项目模块之间共享的所有通用库的文件夹。但是我在 project / commons / build.gradle
文件中写入了 flatDir
c> commons 模块是 project / commons / libs
!此外,包含在项目/ commons / libs /
中的所有 jar
库在构建过程中找不到任何问题。
这个问题的根源是什么?
以下是我的build.gradle文件(一些它的代码,就像依赖声明一样,为了简洁起见而被删除):
project / settings.gradle :
include':ScrollApplication',':commons'
project / build.gradle :
buildscript {
repositories {
jcenter()
}
依赖关系{
classpath'com.android.tools.build:gradle:1.0.0-rc1'
}
}
project / commons / build.gradle :
apply plugin:'com.android.library'
repositories {
maven {url'https:// oss .sonatype.org /内容/库/ s的napshots /'}
mavenCentral()
flatDir {
dirslibs
}
}
android {
compileSdkVersion 21
buildToolsVersion21.1.1
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName1.0
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro '
}
}
}
依赖项{
编译fileTree(dir:'libs',include:['* .jar'])
编译(名称:'socialauth-android',ext:'aar')
}
project / app / build.gradle :
apply plugin:' com.android.application'
repositories {
maven {urlhttp://dl.bintray.com/populov/maven}
maven {url'https://oss.sonatype.org/content/repositories/snapshots/'}
mavenCentral()
flatDir {
dirs。 ./libraries
}
配置{
apt
}
android {
compileSdkVersion 21
buildToolsVersion21.1.1
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
lintOptions {
abortOnError false
$ b依赖关系{
编译项目(':commons')
编译fileTree(dir:'。 ./libraries',包括:['* .jar'])
}
Upd :添加了项目结构
├──build.gradle
├──commons
│├──build.gradle
│├──libs
│├──proguard-rules.pro
│└──src
│├──androidTest
│ │└──java
│└──main
│├──AndroidManifest.xml
│├──资产
│├──java
│└─ ─res
├──gradle
│└──wrapper
├──libraries
│├──aws-android-sdk-1.7.1.1-core.jar
│├──aws-android-sdk-1.7.1.1-s3.jar
│├──libGoogleAnalyticsServices.jar
│└──supertooltips-3.0.1.aar
├ ──scrollandroid-hg.iml
├──ScrollApplication
│├──build.gradle
│├──proguard.cfg
│├──ScrollApplication.iml
│└──src
│└──main
│├──AndroidManifest.xml
│├──资产
│├──java
│ └──res
├──settings.gradle
└──stacktrace.txt
commons
依赖于 socialauth-android
。
$ b 尝试向project / app / build.gradle中的flatDir属性添加额外的目录。
flatDir {
dirs../libraries,../commons/libs
}
I have an aar
of socialauth-android library added to my project. I've put it inside the flatDir
directory as described here and it works just fine.
Now, I'm moving some of my code into the library module named commons
, to reuse it in the another project. socialauth-android
will be used entirely by library module, so I've moved it inside the project/commons/libs/
an rewritten my build.gradle
files. From now on I can't build my project, because the following error arises:
Error:A problem occurred configuring project ':ScrollApplication'.
> Could not resolve all dependencies for configuration ':ScrollApplication:_developmentDebugCompile'.
> Could not find :socialauth-android:.
Searched in the following locations:
http://dl.bintray.com/populov/maven//socialauth-android//socialauth-android-.pom
http://dl.bintray.com/populov/maven//socialauth-android//socialauth-android-.aar
https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android-.pom
https://oss.sonatype.org/content/repositories/snapshots//socialauth-android//socialauth-android-.aar
https://repo1.maven.org/maven2//socialauth-android//socialauth-android-3.2.pom
https://repo1.maven.org/maven2//socialauth-android//socialauth-android-3.2.aar
file:/home/artem/Workspace/scrollandroid/libraries/socialauth-android-3.2.aar
file:/home/artem/Workspace/scrollandroid/libraries/socialauth-android.aar
Required by:
scrollandroid:ScrollApplication:unspecified > scrollandroid:commons:unspecified
The error says that dependency resolver tries to find socialauth-android.aar
inside the project/libraries
folder which is the folder for all common libraries shared between modules of my project. But I've written in my project/commons/build.gradle
file that the flatDir
for the commons
module is project/commons/libs
! Moreover, all jar
libraries contained inside the project/commons/libs/
are found during the build w/o any issues.
What can be the source of this issue?
Following are my build.gradle files (some of its code, like dependencies declarations, is dropped for brevity):
project/settings.gradle:
include ':ScrollApplication', ':commons'
project/build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0-rc1'
}
}
project/commons/build.gradle:
apply plugin: 'com.android.library'
repositories {
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
mavenCentral()
flatDir {
dirs "libs"
}
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile(name:'socialauth-android', ext:'aar')
}
project/app/build.gradle:
apply plugin: 'com.android.application'
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
mavenCentral()
flatDir {
dirs "../libraries"
}
}
configurations {
apt
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
lintOptions {
abortOnError false
}
}
dependencies {
compile project(':commons')
compile fileTree(dir: '../libraries', include: ['*.jar'])
}
Upd: project structure added
├── build.gradle
├── commons
│ ├── build.gradle
│ ├── libs
│ ├── proguard-rules.pro
│ └── src
│ ├── androidTest
│ │ └── java
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── java
│ └── res
├── gradle
│ └── wrapper
├── libraries
│ ├── aws-android-sdk-1.7.1.1-core.jar
│ ├── aws-android-sdk-1.7.1.1-s3.jar
│ ├── libGoogleAnalyticsServices.jar
│ └── supertooltips-3.0.1.aar
├── scrollandroid-hg.iml
├── ScrollApplication
│ ├── build.gradle
│ ├── proguard.cfg
│ ├── ScrollApplication.iml
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── java
│ └── res
├── settings.gradle
└── stacktrace.txt
It appears that the commons
library is being built correctly (can you compile it separately to verify?) but the application is not. Gradle has some special rules for handling transitive dependencies (dependences nested in other dependencies) which exists since commons
depends on socialauth-android
.
Try adding an extra directory to the "flatDir" attribute in "project/app/build.gradle"
flatDir {
dirs "../libraries", "../commons/libs"
}
这篇关于不能在库模块内使用本地.aar文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!