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

在应用程序中导入我的android库不会被识别为库

华易安
2023-03-14

我正在尝试构建一个使用java库“核心”(myLibrary-core)的Android库。我遇到了问题,让我的依赖项显示在我生成的pom文件中,但我(认为我)使用这个问题的答案修复了它:Gradle不包括已发布的pom中的依赖项.xml

我现在正试图解决为什么将我的库导入到单独的应用程序中会产生此错误。这是我将库作为 gradle 依赖项导入到项目中时遇到的错误:

Error:Module version com.example:myLibrary:0.1.0 depends on libraries but is not a library itself

这是我的身材:

apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
        classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
    }
}

apply plugin: 'maven-publish'

group = 'com.example'
version = '0.1.0'

android {
    compileSdkVersion 19
    buildToolsVersion '19.1.0'

    defaultConfig {
        applicationId "com.example.android"
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName "0.1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/DEPENDENCIES'
    }
}

dependencies {
//    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile 'com.example:myLibrary-core:0.1.2'
    compile 'com.android.support:support-v13:20.0.0'
    compile 'com.google.android.gms:play-services:+'
}

// build JAR file
task androidReleaseJar(type: Jar, dependsOn: assembleRelease) {
    from "$buildDir/intermediates/classes/release/"
}

publishing {
    publications {
        maven(MavenPublication) {
            artifact androidReleaseJar {
                classifier "sources"
            }

            //The publication doesn't know about our dependencies, so we have to manually add them to the pom
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')

                //Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
                configurations.compile.allDependencies.each {
                    def dependencyNode = dependenciesNode.appendNode('dependency')
                    dependencyNode.appendNode('groupId', it.group)
                    dependencyNode.appendNode('artifactId', it.name)
                    dependencyNode.appendNode('version', it.version)
                }
            }
        }
    }
}

}

这将生成pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>myLibrary</artifactId>
  <version>0.1.0</version>
  <packaging>pom</packaging>
  <dependencies>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>appcompat-v7</artifactId>
      <version>20.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>myLibrary-core</artifactId>
      <version>0.1.2</version>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-v13</artifactId>
      <version>20.0.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.android.gms</groupId>
      <artifactId>play-services</artifactId>
      <version>+</version>
    </dependency>
  </dependencies>
</project>

奇怪的是,如果我删除play-services、support-v13和appcompat-v7,错误就消失了。我想不出任何其他的尝试,所以我很高兴尝试任何建议。

共有1个答案

诸葛立果
2023-03-14

Android插件不能消耗POM依赖项;它只能处理JAR或AAR库。这意味着:< code > com . example:my library 依赖于库(appcompat-v7、myLibrary-core、support-v13和play-services ),但它本身不是库(Android Gradle插件不处理< code >

我知道这很令人困惑,因为Android Gradle消化了模块的. pom文件以解决其依赖关系等,但它无法处理使用它作为打包的库。

如果您想创建一个可以被Android Gradle插件使用的模块,则需要将其打包为JAR或AAR。

 类似资料:
  • 我想在我的应用程序中使用脱机语音识别。设置- 嗯,这里我通过语音向相机发送意图。所以,我对词汇量的要求有限。

  • 在ear中,什么负责正确识别部署类型? 下面是ear内容树(我不得不在libs中隐藏jar,并更改一些应用程序和包的名称,但一切都符合约定)

  • 我正在尝试在我的Android应用程序中实现继续语音识别。我已经遵循了这个链接编码。这个继续语音识别在两天前工作。但是现在语音识别工作不好,它将需要更多的时间进行语音监听。如何解决这个问题。请指导我。谢谢 识别编码: 用户开始说话

  • 如何检查应用程序运行缓慢的原因?更准确地说,哪种生命周期方法在Android中执行需要更多时间。 我已经尝试记录每个活动和片段的生命周期方法,但我无法找出延迟的原因。调用了onCreate,但在调用onResume之前有相当长的延迟(大约1s)。 由于上述延迟,用户感觉应用程序的响应性不强。 对于高端手机,延迟降低到大约100毫秒。但是旧的2012-2011型号有这个巨大的延迟。 关于如何进一步调

  • 我有一个要求,执行一个任务,在正好每5分钟。我考虑了多个选项,并尝试使用类来触发任务来实现这一点。但是,当应用程序被杀死时,我无法触发警报。 当应用程序打开或在后台运行时,警报似乎工作得完美无缺,但一旦我退出应用程序,它似乎完全停止了。 我的实现是使用函数,并自己处理重复这个过程。最初的警报在5秒后触发,然后在此之后每5分钟触发一次。 MyService.kt: