Ответ 1
Добавить в build.gradle
, расположенный в модуле приложения
configurations {
all {
exclude module: 'httpclient'
}
}
Я обновил Android Studio до версии 3 и теперь кажется неспособным скомпилировать мой проект, ранее скомпилированный без ошибок.
Сообщение об ошибке следующее
Ошибка: ошибка: commons-logging определяет классы, конфликтующие с классы, предоставляемые Android. Решения включают поиск новых версии или альтернативные библиотеки, которые не имеют одинаковой проблемы (например, для httpclient используйте HttpUrlConnection или okhttp вместо этого), или переупаковка библиотеки, используя что-то вроде jarjar. [DuplicatePlatformClasses]
Зависимости
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:27.0.0'
compile 'com.android.support:design:27.0.0'
compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'
compile 'com.google.firebase:firebase-core:11.4.2'
}
и ошибка, вызванная
compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'
Я уже использую exclude module: 'httpclient'
Так почему он не компилируется?
Является ли это ошибкой Android Studio 3 и\или включенным плагином com.android.tools.build:gradle:3.0.0
, или я чего-то не хватает? В предыдущей версии нет проблем с компиляцией точно такого же проекта.
Добавить в build.gradle
, расположенный в модуле приложения
configurations {
all {
exclude module: 'httpclient'
}
}
Если проблема связана с общедоступной информацией, она также должна быть исключена. Добавьте следующий код в app/build.gradle
configurations {
all {
exclude module: 'httpclient'
exclude module: 'commons-logging'
}
}
Вы должны заменить "компиляцию" на "реализацию", поскольку она устарела в последних gradle и исключает "org.apache.httpcomponents" из клиентских библиотек Google api:
implementation('com.google.api-client:google-api-client-android:1.23.0') {
exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.http-client:google-http-client-gson:1.23.0') {
exclude group: 'org.apache.httpcomponents'
}
это решение было найдено здесь: https://developers.google.com/google-apps/activity/v1/quickstart/android
Запуск в терминале, внутри папки проекта:
./gradlew app:dependencies > dependencies.txt
Затем проверьте файл зависимостей .txt, чтобы найти, кто использует конфликтующие зависимости и действовать соответственно (проверьте наличие обновлений, избавитесь от него или используйте исключение, как это было предложено @Silverstorm)
Получается та же проблема. Я сделал ниже изменений
configurations {
all{
exclude group: 'commons-logging', module: 'commons-logging'
exclude group: 'org.apache.httpcomponents'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'org/apache/http/version.properties'
exclude 'org/apache/http/client/version.properties'
}
Если вы хотите продолжить работу с async-http
добавьте следующий код только в app/build.gradle
configurations {
all {
exclude module: 'commons-logging'
}
}
Как 'org.apache.httpcomponents: httpclient: 4.3.3' устарела после SDK версии 23, поэтому
замени это
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
с
compile 'org.apache.httpcomponents:httpclient:4.3.3'
Я удалил регистрацию в общем-то, как предложено выше, конечно, он завис на каком-то телефоне с Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory;
, Как Android может утверждать, что регистрация общего доступа конфликтует с Android API, если Android API не содержит ни одного из этих классов?!? На сайте https://developer.android.com/reference/packages: facepalm нет ни одного org.apache.commons.logging.
Я добавил обратно в build.gradle implementation 'commons-logging:commons-logging:1.0.4'
- Android Studio подчеркивает это красным, но gradle-компиляции счастливы. : Facepalm:
Android: triple_facepalm: