una tutorial sistema qué fuente español ejemplos codigo clase caracteristicas biblioteca java android android-studio proguard android-proguard

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.