Добавление зависимости gradle в пакет библиотеки aar

Я делаю проект библиотеки для поставщика, и ему нужен Android Volley в качестве зависимости. Я использовал этот Создать файл aar в Android Studio для создания файла .aar. и чтобы включить это в тестовый проект, я использую этот Добавление локальных файлов .aar в сборку Gradle с помощью flatDirs не работает. Библиотека линкуется нормально, ошибок при компиляции проекта нет. Но во время выполнения тестовое приложение вылетает, говоря, что не может найти Volley

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/Volley;
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.volley.toolbox.Volley" on path: DexPathList[[zip file "/data/app/in.gridsync.acttest-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Мой файл Gradle для проекта библиотеки выглядит так:

    apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.mcxiaoke.volley:library:1.0.19'
}

а в тестовом проекте это градиент

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "in.gridsync.acttest"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile project(':openapp-library')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
}

Я предполагал, что при создании пакета .aar он будет использовать и включать зависимость от библиотеки Volley. Может кто-нибудь, пожалуйста, пролить свет на это?


person Chakradhar Reddy Veeramreddy    schedule 25.12.2015    source источник
comment
приятель, почему бы просто не добавить Volley из вкладки depeneices в Project Structaure?   -  person Itzik Samara    schedule 25.12.2015
comment
добавить testCompile 'com.mcxiaoke.volley:библиотека:1.0.19'   -  person Gabriele Mariotti    schedule 25.12.2015
comment
@ItzikSamara, я не хочу, чтобы мой поставщик добавлял что-либо, кроме пакета aar. Это имеет смысл, верно? Потому что, если я буду использовать какую-то другую библиотеку в будущем, я не хочу, чтобы он изменил код своего приложения не более чем просто заменив новый пакет .aar, который я даю   -  person Chakradhar Reddy Veeramreddy    schedule 26.12.2015
comment
Как вы это решили, у меня такая же проблема!   -  person gaurav jain    schedule 27.02.2016
comment
ты решил это?   -  person Noam Segev    schedule 08.06.2016
comment
@NoamSegev На данный момент я не смог найти официального поддерживаемого решения. Проверьте эту ссылку, кажется официальной поддержки пока нет   -  person Chakradhar Reddy Veeramreddy    schedule 09.06.2016
comment
@ChakradharReddyVeeramreddy есть новости по этому поводу? столкнулся с тем же с дооснащением   -  person Pararth    schedule 16.02.2017
comment
@user2450263 user2450263 не смог найти решения этой проблемы... Пришлось поручить нашим клиентам включить все необходимые библиотеки   -  person Chakradhar Reddy Veeramreddy    schedule 17.02.2017
comment
@ChakradharReddyVeeramreddy спасибо за ответ, возможно, придется сделать то же самое. Альтернативного решения не нашел...   -  person Pararth    schedule 17.02.2017
comment
У меня такая же проблема. Открыл для него новый вопрос: stackoverflow.com/questions/48593149 - посмотрите, пожалуйста, нашли ли вы решение.   -  person Gabor    schedule 05.02.2018
comment
ты решил это?   -  person user1974368    schedule 04.03.2018
comment
кто-нибудь решил эту проблему, столкнувшись с той же проблемой с залпом   -  person Uday Ramjiyani    schedule 16.11.2018


Ответы (2)


Насколько я знаю, вы должны добавить "@aar" для библиотек .aar. Также файл jar не требуется, он загружается сам по себе. Попробуй это:

compile 'com.mcxiaoke.volley:library:1.0.19@aar'
person Tuna Yagci    schedule 25.12.2015
comment
Я только что попробовал его, это не работает. Файл .aar по-прежнему не включает в себя библиотеку volley. - person Chakradhar Reddy Veeramreddy; 26.12.2015

Одним из альтернативных решений является размещение зависимых библиотек в виде статических файлов jar в папке «libs» вашего проекта вместо использования зависимости gradle. При создании файла aar файлы jar в папке libs будут включены в файл aar.

person PhilChen    schedule 17.05.2017