当前位置: 首页 > 知识库问答 >
问题:

不能在库模块内使用local.aar文件

应俊爽
2023-03-14

我的项目中添加了一个socialauth-android库的AAR。我已经把它放在flatdir目录中,就像这里描述的那样,它工作得很好。
现在,我将把我的一些代码移到名为commons的库模块中,以便在另一个项目中重用它。Socialauth-Android将完全由库模块使用,因此我将它移到project/commons/libs/中,这是一个重写的build.gradle文件。从现在起,我无法生成我的项目,因为出现以下错误:

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

该错误表示依赖关系解析器试图在project/libraries文件夹中查找socialauth-android.aar,该文件夹是我的项目的模块之间共享的所有公共库的文件夹。但是我在project/commons/build.gradle文件中写到,commons模块的flatdirproject/commons/libs!此外,项目/commons/libs/中包含的所有JAR库都可以在构建过程中找到。

这个问题的源头是什么?

下面是我的build.gradle文件(为了简洁起见,删除了它的一些代码,如依赖关系声明):

include ':ScrollApplication', ':commons'
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0-rc1'
    }
}
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')
}

项目/应用程序/构建。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:添加项目结构

├── 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

共有1个答案

巩俊远
2023-03-14

似乎commons库的构建是正确的(您可以单独编译它来验证吗?)但应用程序不是。Gradle有一些处理传递依赖(嵌套在其他依赖中的依赖)的特殊规则,因为commons依赖于socialauth-Android

尝试在“project/app/build.gradle”中的“flatdir”属性中添加一个额外的目录。

flatDir {
    dirs "../libraries", "../commons/libs"
}
 类似资料:
  • 我有1个应用程序和2个模块 框架结构 但我不能在MyApp中使用MyModule的文件。IDE显示我“无法访问”错误,我想扩展一个MyModule类的类。而且它不是从MyModule创建类的,有人对此有想法吗?怎么了?

  • 我试图在库模块中使用静态编程语言,而不在应用模块中使用它。应用模块只使用Java,不使用库中的任何静态编程语言类。Gradle不会编译hoever: 我对Kotlin进行了修改: {library root}/build。格拉德尔 {library root}/{library module}/build。格拉德尔 当我将其添加到应用程序模块中时,项目编译不会出现问题,但我希望避免将其添加到应用程

  • 我正在使用NextJS与typescript,mongo Atlas,mongoose,node和Express。 当我运行node Pages/Server时,我收到以下错误:我已经上载了我的package.json文件,并且还添加了babel 从“express”导入express;^^^^^^ SyntaxError:不能在模块外部使用导入语句,位于wrapSafe(内部/modules/c

  • danger 以下操作不支持内容表自定义字段的获取,建议使用最新内容操作接口。 内容库 获取内容库详情 接口 GET https://cloud.minapp.com/oserve/v1/content/group/:content_group_id/ 其中 :content_group_id 需替换为你的内容库 ID 代码示例 {% tabs getGroupDetailCurl=”Curl”,

  • 获取内容库详情 接口 GET https://cloud.minapp.com/userve/v1/content/:content_group_id/ 其中 content_group_id 是内容库的 ID 代码示例 var axios = require('axios').create({ withCredentials: true }) axios.get('https://cloud

  • 获取内容库详情 接口 GET https://cloud.minapp.com/oserve/v1/content/:content_group_id/ 其中 content_group_id 是内容库的 ID 代码示例 {% tabs getContentGroupCurl=”Curl”, getContentGroupNode=”Node”, getContentGroupPHP=”PHP”