Android Приложение (5) не сможет загрузить внешнюю зависимость (1), объявленную в Android Библиотечный проект (2) - PullRequest
0 голосов
/ 03 апреля 2020

Failing to load external dependency in aar. when this .aar is used in Android Project Постановка проблемы: Android Приложение (5) не сможет загрузить внешнюю зависимость (1), объявленную в Android Библиотечный проект (2)

Пожалуйста, обратитесь Диаграмма шаг за шагом, чтобы прийти к постановке проблемы.

  1. Я получил highcharts-release.aar
  2. У меня есть один android проект библиотеки
  3. Я буду добавлять highcharts-release.aar (1) к (2) в качестве внешней зависимости

added .aar into libs folder

и добавлю этот код в Project > build.gradle

 flatDir {
            dirs 'libs'
        }

и, модуль> build.gradle

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

для публикации sh для артефакта,

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
        }
    }
}
Я могу видеть, как .aar создается в jFrog. Я преобразовал в формат .zip, чтобы увидеть содержимое, и вижу внешнюю зависимость "highcharts-release.aar", присутствующую в папке libs.

5.Включить / Использовать этот артефакт в проекте приложения Android, добавив реализацию @ 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
    }

и,

project gradle:

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, чтобы увидеть ошибку,

failed to load library

Итак, проблема в том, что highcharts-release.aar> добавление в другой .aar> импорт в приложение не выполняется.

Не могу найти то, что мне здесь не хватает и / или как решить эту проблему.

Пожалуйста, помогите мне найти решение.

...