Java Maven Proguard
|
08-09-2010, 19:57
Mensagem: #1
|
|||
|
|||
Java Maven Proguard
Boa tarde.
Gostaria de uma pequena ajuda com um programa de ofuscação de código java. Estou a desenvolver uma livraria em java no Eclipse. Uso o maven para me gerir as dependências. No final exporto a minha livraria e tenho dois ficheiros. O out.jar e o out-comDependencias.jar. Agora queria usar como referencia externa noutro projecto a minha livraria. 1º Problema: Se usar o out-comDependencias.jar. que inclui as dependencias que o maven adicionou por exemplo XmlRpc (org.apache.xmlrpc), consigo compilar direito e correr direito. Se usar o out.jar consigo compilar correctamente mas ao executar o programa estoira pois não encontra o XmlRpc. . . Conclui que devia usar o out-comDependencias.jar, corrijam-me se estiver errado e tiver algum problema no meu pom. 2º Problema. Ao tentar ofuscar com o proguard estou a usar a seguinte configuração: -injars out1.jar -outjars out2.jar -libraryjars /usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/rt.jar -keep public class UseCase.App -keepclasseswithmembernames class ** { native <methods>; } -useuniqueclassmembernames -dontnote Já experimentei mil combinações diferentes mas achei por bem colocar uma básica. Cenários: Jar 1: Exportado a partir do novo projecto com livraria out.jar Jar 2: Exportado a partir do novo projecto com livraria out-comDependencias.jar Ao tentar passar o proguard no Jar1, ele funciona e como seria de esperar, o programa vai estoirar pois falta-lhe a referencia para o XmlRpc Ao tentar passar o proguard no Jar2, não funciona. O final do log é: Warning: library class com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource depends on program class org.xml.sax.InputSource Warning: there were 134 unresolved references to classes or interfaces. You may need to specify additional library jars (using '-libraryjars'), or perhaps the '-dontskipnonpubliclibraryclasses' option. Warning: there were 2928 instances of library classes depending on program classes. You must avoid such dependencies, since the program classes will be processed, while the library classes will remain unchanged. Error: Please correct the above warnings first. Resumindo, são 2928 linhas a indicar que algo depende de algo no meu programa. Segundo a página da proguard: "Warning: library class ... depends on program class ... If any of your library classes depend on your program classes, by extending, implementing or just referencing them, your processed code will generally be unusable. Program classes can depend on library classes, but not the other way around. Program classes are processed, while library classes always remain unchanged. It is therefore impossible to adapt references from library classes to program classes, for instance if the program classes are renamed. You should define a clean separation between program code and library code, and try again." O que é mau. . . Preciso de ajuda. Tenho de gerar o binario final entretanto e preciso que os metodos presentes na biblioteca estejam escondidos. Aceito outras soluções concorrentes ao proguard. De notar que consigo ofuscar outros projectos, a principal questão aqui deve-se à minha livraria estar a usar o maven para gerir dependencias e agora o proguard não ver essas dependencias. Já adicionei o repositorio do maven as configurações do proguard. Ja experimentei usar o plugin do proguard no maven, nem assim . . . Alguém consegue dar uma ajuda? Agradecia muito |
|||
« Mais Antigo | Mais Recente »
|
Mensagem neste Tópico |
Java Maven Proguard - Eng.Simões - 08-09-2010 19:57
RE: Java Maven Proguard - Eng.Simões - 15-09-2010, 14:38
|
Utilizadores a ver este tópico: 1 Visitante(s)