首页 > 解决方案 > Android App(5)将无法加载Android Library Project(2)中声明的外部依赖(1)

问题描述

无法在 aar 中加载外部依赖项。 当此 .aar 在 Android 项目中使用时 问题陈述:Android App(5)将无法加载Android Library Project中声明的外部依赖(1)(2)

请逐步参考图表,以得出问题陈述。

  1. 我有一个 highcharts-release.aar
  2. 我有一个 android 库项目
  3. 我将添加 highcharts-release.aar(1) 到 (2) 作为外部依赖

将 .aar 添加到 libs 文件夹中

并将此代码添加到 Project > build.gradle

 flatDir {
            dirs 'libs'
        }

并且,模块 > build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'highcharts-release', ext:'aar') 
    .....
 }

发布到工件,

publishing {
    publications {
        aar(MavenPublication) {
            groupId packageName
            version = libraryVersion
            artifactId project.getName()

            // Tell maven to prepare the generated "*.aar" file for publishing
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")

            pom.withXml {
                def dependencies = asNode().appendNode('dependencies')
                configurations.getByName("releaseCompileClasspath").getResolvedConfiguration().getFirstLevelModuleDependencies().each {
                    def dependency = dependencies.appendNode('dependency')
                    dependency.appendNode('groupId', it.moduleGroup)
                    dependency.appendNode('artifactId', it.moduleName)
                    dependency.appendNode('version', it.moduleVersion)
                }
            }
        }
    }
}

artifactory {
    contextUrl = 'https://url/artifactory'
    publish {
        repository {
            repoKey = 'csapx-ui-gradle-stable-local'
            username = 'uname'
            password = 'pword'
        }
        defaults {
            // Tell the Artifactory plugin which artifacts should be published to Artifactory
            publications('aar')
            publishArtifacts = true

            // Properties to be attached to the published artifacts
            properties = ['qa.level': 'basic', 'dev.team': 'core']
            // Publish generated POM files to Artifactory (true by default)
            publishPom = true
        }
    }
}
  1. 我可以看到在 jFrog 中创建了 .aar。我转换为 .zip 格式以查看内容,并看到 libs 文件夹中存在外部依赖项“highcharts-release.aar”。

5.在Android App项目中包含/使用这个工件,通过添加一个实现@module gradle。

 implementation(group: 'com.karthik.mylibrary',
            name: 'app', version: "$rootProject.ext.highchartsVersion", ext: 'aar') {
        exclude  group: 'com.google.code.gson', module: 'gson'
        transitive = true
        changing = true
    }

和,

项目等级:

buildscript {
    repositories {
        google()
        jcenter()
        maven {
            credentials {
                username 'uname'
                password 'pword'
            }
            url "https://url/artifactory/csapx-ui-gradle-stable-local"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.8.1'
        classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

ext {

    // highcharts
    highchartsVersion = '1.0.0'
}
allprojects {
    repositories {
        google()
        jcenter()
        maven {
            credentials {
                username 'uname'
                password 'pword'
            }
            url "https://url/artifactory/csapx-ui-gradle-stable-local"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

最后,构建android应用程序,查看错误,

加载库失败

所以总的来说,问题陈述将是,highcharts-release.aar > 添加到另一个 .aar > 导入应用程序失败。

无法找到我在这里缺少的内容和/或如何解决此问题。

请帮我找到解决方案。

标签: androidgradlehighchartsartifactoryjfrog-cli

解决方案


推荐阅读