不能在库模块内使用本地.aar文件 [英] Can't use local .aar file inside the library module

查看:266
本文介绍了不能在库模块内使用本地.aar文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 socialauth-android aar / a>库添加到我的项目。我将它放在 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 库的构建是正确的()你可以单独编译它来验证?)但应用程序不是。 Gradle有一些特殊的规则来处理从 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆