2015-12-25 5 views
3

Я делаю проект библиотеки для поставщика, и для него необходим Android Volley в качестве зависимости. Я использовал этот Create aar file in Android Studio, чтобы создать файл .aar и включить его в тестовый проект. Я использую этот Adding local .aar files to Gradle build using "flatDirs" is not working. Библиотека хорошо связана и ошибок в компиляции проекта нет. Но во время выполнения аварийно завершает испытания приложений заявив, что не может найти VolleyДобавление зависимости gradle к библиотеке aar package

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' 
} 

и в тестовом проекте Gradle это

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. Может ли кто-нибудь пролить свет на это?

+0

mate Почему бы не просто добавить Volley из вкладки depeneices в Project Structaure? –

+0

add testCompile 'com.mcxiaoke.volley: library: 1.0.19' –

+1

@ItzikSamara, я не хочу, чтобы мой продавец добавил что-либо, кроме пакета aar. Это имеет смысл? Потому что, если я буду использовать какую-то другую библиотеку в будущем, я не хочу, чтобы он менял код своего приложения не более, чем просто заменяя новый пакет **. Aar **, который я даю –

ответ

1

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

compile 'com.mcxiaoke.volley:library:[email protected]' 
+0

Я попробовал его прямо сейчас, это не работает. **. Aar ** по-прежнему не включает в себя библиотеку залпов. –

-1

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