Android - Unirest использует зависимости, которые конфликтуют с зависимостями Android - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в Android Studio и создаю свое самое первое профессиональное приложение, которое предлагает рецепты с использованием ингредиентов в вашем холодильнике.Я столкнулся с API под названием Spoonacular , в котором говорится, что в коде используется Unirest .Поэтому я включил интернет-разрешения, поместил файл unirest-java-1.4.9.jar в libs и обновил свои зависимости.

apply plugin: 'com.android.application'

android {

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
}

compileSdkVersion 28
defaultConfig {
    applicationId "gupta.ansh.healthyref"
    minSdkVersion 15
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint- 
layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'org.apache.httpcomponents:httpclient:4.5.6'
implementation 'org.apache.httpcomponents:httpasyncclient:4.0.2'
implementation 'org.apache.httpcomponents:httpmime:4.5.2'
implementation 'org.json:json:20140107'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

Но в среде IDE Android Studio отображается ошибканад implementation 'org.apache.httpcomponents:httpclient:4.5.6' и implementation 'org.json:json:20140107' в зависимостях.

Когда я наведу курсор на код, он говорит:

httpclient defines classes that conflict with classes now provided by 
Android. Solutions include finding newer versions or alternative 
libraries that don't have the same problem (for example, for 
httpclient use HttpUrlConnection or okhttp instead), or repackaging 
the library using something like jarjar.

Несмотря на то, что ошибка показывает, проект изначально работает нормально и работает,Но когда я использую unirest в своих проектах,

HttpResponse<JsonNode> response = Unirest.post("https://spoonacular-recipe-food-nutrition-v1.p.mashape.com/food/products/classify")
                .header("X-Mashape-Key", "my_private_key")
                .header("Content-Type", "application/json")
                .header("Accept", "application/json")
                .body("{\"title\":\"banana\",\"upc\":\"\",\"plu_code\":\"\"}")
                .asJson();

, и я отлаживаю его, он дает мне InvocationTargetException и вылетает.Да, я знаю, что у Spoonacular есть Android SDK, но он слишком старый.Там написано, что последняя версия на Mashape, но я не могу найти ее там, и, судя по форумам, никто другой тоже не может.

Так как мне исправить это InvocationTargetException?Или нет пути, и я должен отказаться от Unirest?

...