Android AAR включает в себя папку ресурсов JAR зависимость - PullRequest
0 голосов
/ 09 января 2019

Hello

При разработке модуля Android AAR я столкнулся со следующей проблемой Мой модуль AAR имеет несколько зависимостей jar, некоторые из них имеют папку ресурсов с сообщениями об ошибках, локализованными. По какой-то причине при создании модуля AAR я заметил, что процесс сборки Android исключает папку ресурсов из зависимости jar. Папка зависимостей является важной частью, так как в противном случае подробности ошибки не найдены.

Если что-то могло пролить свет на проблему, я попытался создать папку дополнительных ресурсов в main / resources // messages.properties, но это не помогло.

Любая помощь будет оценена

вот мой файл Gradle

apply plugin: 'com.android.library'
apply plugin: 'jacoco'


allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

buildscript {
    repositories {
        jcenter()
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.dicedmelon.gradle:jacoco-android:0.1.2'
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}


android {
    compileSdkVersion 27
    buildToolsVersion '26.0.3'

    configurations {
        javadocDeps
    }


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled false
        }
    }

    testOptions {
        unitTests.all {
            jacoco {
                includeNoLocationClasses = true
            }
            testLogging {
                events "passed", "skipped", "failed", "standardOut", "standardError"
                outputs.upToDateWhen {false}
                showStandardStreams = true
            }
        }
        unitTests.returnDefaultValues = true

    }

    lintOptions {
        abortOnError false
    }
    sourceSets {
        androidTest {
           ...
        }
        test {

        }
    }

}





//assembleDebug.dependsOn(copyResDirectoryToClasses)

dependencies {

    releaseCompile fileTree(include: ['*.jar'], dir: 'libs')


    provided 'com.android.support:appcompat-v7:27.1.1'
    provided 'org.jetbrains:annotations:16.0.3'
    provided 'com.google.code.findbugs:annotations:3.0.1'
    provided 'org.codehaus.sonar-plugins:sonar-ant-task:2.2'
    provided 'org.jetbrains:annotations-java5:15.0'
    provided 'com.google.android:annotations:4.1.1.4'
    provided 'com.squareup.okhttp3:okhttp:3.9.1'
    provided 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'org.mockito:mockito-core:1.9.5'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
    androidTestCompile files('../sdkSample/lib/qa_utils.jar')
    androidTestCompile 'com.google.android:annotations:4.1.1.4'
    javadocDeps 'com.android.support:appcompat-v7:27.1.1'
    javadocDeps 'com.squareup.okhttp3:okhttp:3.9.1'
    javadocDeps 'com.squareup.okhttp:okhttp-urlconnection:3.9.1'
    javadocDeps 'com.google.code.findbugs:annotations:3.0.1'
    javadocDeps group: 'org.mozilla', name: 'rhino', version: '1.7.7.1'
    javadocDeps group: 'org.jetbrains', name: 'annotations', version: '16.0.3'
    testCompile files('../sdkSample/lib/qa_utils.jar')
    testCompile 'junit:junit:4.12'
    testCompile 'org.json:json:20171018'
    testCompile 'com.google.android:annotations:4.1.1.4'
    testCompile 'org.testng:testng:6.13.1'
    testCompile 'com.squareup.okhttp3:okhttp:3.9.1'
    testCompile 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    testCompile 'org.robolectric:robolectric:3.8'
    androidTestCompile 'com.squareup.okhttp3:okhttp:3.9.1'
    androidTestCompile 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
}


gradle.taskGraph.whenReady {
    gradle.taskGraph.allTasks.each {
        if(it.project == 'sdkSample') {
            it.onlyIf { false }
        }
    }
}



//ignore all test failures - is done temporary, the final solution is test categorization
project.gradle.taskGraph.whenReady {
    -> project.tasks.findAll { it.name =~ /connected.+AndroidTest/ ||
            it.name == "testDebugUnitTest" ||
            it.name =="testReleaseUnitTest" }.each {
        it.ignoreFailures = true
    }
}

1 Ответ

0 голосов
/ 10 января 2019

Вам нужно использовать api вместо provided. Вы можете найти больше информации от здесь.

Как я знаю, у Аара нет транзитивных зависимостей. Вы можете попробовать экспортировать fat aar или попробовать

implementation 'your.package:your_artifact:your_version' {transitive = true}

PS: не используйте тип @ aar

Также известен как flatDir, поскольку зависимости flatDir НЕ разрешают переходные процессы)

implementation 'your.package:your_artifact:your_version@aar' {transitive = true}

С другой стороны, вам нужно преобразовать ваш проект в стандарты maven. Таким образом, вам нужен файл pom.xml, который указывает транзитивные зависимости под тегом зависимости.

Поскольку у вас есть опыт работы с jar-файлами, файлы ресурсов также не могут быть. Если вам не нужны файлы ресурсов, просто экспортируйте jar, выполнив задачу createFullJarRelease.

Если вам нужно использовать .aar, вы можете добавить другие зависимости, которые библиотека использует в потребителе.

...