tutorial - sistema de biblioteca en java netbeans
ProGuard: ¿definición duplicada de clase de biblioteca? (4)
Probablemente, ha mencionado "-injars" y -libraryjars "en su proguard-project.txt, teniendo en cuenta que el último sistema de compilación se encarga de mencionarlos por usted ... así que no necesita mencionarlo nuevamente.
fuente: proguard.sourceforge.net/manual/…
Creo que esto ayudará.:)
Ejecuto mi ProGuard para mi proyecto de Android y obtengo las siguientes advertencias:
Note: duplicate definition of library class [org.apache.http.conn.scheme.HostNameResolver]
Note: duplicate definition of library class [org.apache.http.conn.scheme.SocketFactory]
Note: duplicate definition of library class [org.apache.http.conn.ConnectTimeoutException]
Note: duplicate definition of library class [org.apache.http.params.HttpParams]
Note: duplicate definition of library class [android.net.http.SslCertificate$DName]
Note: duplicate definition of library class [android.net.http.SslError]
Note: duplicate definition of library class [android.net.http.SslCertificate]
Note: there were 7 duplicate class definitions.
Encontré here para solucionar esto con ignorarlo con:
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-keep class android.net.http.** { *; }
-dontwarn android.net.http.**
No veo una manera de eliminar los duplicados de las bibliotecas utilizadas.
Incluso después de usar
dontwarn
las advertencias no desaparecen.
¿Es esta la forma correcta de manejar esta advertencia simplemente ignorándola o podría generar problemas?
Puede decirle a gradle que no permita clases duplicadas (tome solo la primera) agregando lo siguiente a su build.gradle:
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
Puede probar esto en su build.gradle para todo lo que se indica como duplicado en los registros. No estoy seguro de si esto funcionará, así que pruébelo e informe si funciona o no.
packagingOptions {
exclude ''android.net.http.SslCertificate''
}
Si agrega una opción de
-printconfiguration config.txt
verá que agrega protección
-libraryjars ''D: / tools / android / plataformas / android-23 / android.jar''
-libraryjars ''D: / tools / android / plataformas / android-23 / opcional / org.apache.http.legacy.jar''
sus clases duplicadas (por ejemplo, SslError) se presentan tanto en android.jar como en org.apache.http.legacy.jar
Proguard agrega el segundo jar incluso si no
useLibrary ''org.apache.http.legacy''
Aquí hay un
error abierto que
describe el problema.
Así que ahora no podemos hacer nada con el problema. Simplemente ignóralo:
-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**
No es necesario mantener las clases siempre que estén ubicadas en el frasco de la biblioteca (la biblioteca del teléfono en realidad). dontwarn no funciona porque no es una advertencia, es una nota.