permisos - api 26 android
commons-logging define las clases que entran en conflicto con las clases que ahora proporciona Android despuĆ©s de la actualizaciĆ³n de Android Studio (7)
He actualizado Android Studio a la versión 3 y ahora parece que no puedo compilar mi proyecto previamente compilado sin errores.
El mensaje de error es el siguiente.
Error: Error: commons-logging define las clases que entran en conflicto con las clases que ahora proporciona Android. Las soluciones incluyen encontrar nuevas versiones o bibliotecas alternativas que no tengan el mismo problema (por ejemplo, para httpclient use HttpUrlConnection u okhttp en su lugar), o volver a empaquetar la biblioteca usando algo como jarjar. [DuplicatePlatformClasses]
Las dependencias son
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''
}
y el error parece ser causado por
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''
Ya uso el exclude module: ''httpclient''
Entonces, ¿por qué no se compila? ¿Se trata de un error de Android Studio 3 o / o está incluido el complemento com.android.tools.build:gradle:3.0.0
o me estoy perdiendo algo? Con la versión anterior no hay problema para compilar exactamente el mismo proyecto.
Agregar a build.gradle
ubicado en el módulo de la aplicación
configurations {
all {
exclude module: ''httpclient''
}
}
Como ''org.apache.httpcomponents: httpclient: 4.3.3'' está en desuso después de SDKversion 23, así
reemplace esto:
compile ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2''
con
compile ''org.apache.httpcomponents:httpclient:4.3.3''
Debe reemplazar "compilar" con "implementación", ya que está en desuso en la versión más reciente y excluir "org.apache.httpcomponents" de las bibliotecas de cliente de 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''
}
esta solución se encontró aquí: https://developers.google.com/google-apps/activity/v1/quickstart/android
Ejecutar en la terminal, dentro de la carpeta del proyecto:
./gradlew app:dependencies > dependencies.txt
Luego verifique dependencies.txt para encontrar quién está usando dependencias conflictivas y actuar en consecuencia (verifique las actualizaciones, deshágase de ellas o use excluir como lo sugiere @Silverstorm)
Si desea continuar con async-http
, agregue a continuación el siguiente código solo en app/build.gradle
configurations {
all {
exclude module: ''commons-logging''
}
}
Si el problema es con el registro de bienes comunes, también debe excluirse. Agregue el siguiente código en app / build.gradle
configurations {
all {
exclude module: ''httpclient''
exclude module: ''commons-logging''
}
}
Tiene el mismo problema. He hecho los siguientes cambios
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''
}