Provavelmente seu projeto está configurado para manter o estado normal de classes que estendem activity!
Talvez isso seja pré requisito, mas, recomendo testar comentando a linha que diz para manter as classes que estendem Activity.
Se isso não der certo, a única forma que vejo para conseguir a ofuscação das suas classes que estendem Activity é recomendando você criar uma classe base que estende Activity, tipo com.seuprojeto.seuapp.GeneralActivity. e depois fazer com que suas classes atuais estendam esta classe base com.seuprojeto.seuapp.GeneralActivity.
Abraço,
Ernani
2012/9/24 Psy Khé <psykhe6@gmail.com>
Para ficar praticamente perfect...Eu queria que o nome das minhas classes fosse trocado os respectivos nomes,Tentando algumas mudanças no proguard.cfg...mas até o momento sem sucesso,
Se souber e puder auxiliar,
Segue print...Valeu!!Abs,
Psy Khé.Em 24 de setembro de 2012 18:05, Psy Khé <psykhe6@gmail.com> escreveu:
Ernani,
Constando...add para lista, ...Em meus testes o envio do email, não funcionou, pois foi feito ofuscamento de nomes, etc, das libs do javamail.Com o conteudo abaixo...que você me indicou, para nao fazer ofuscamento dos nomes delas...-dontwarn java.awt.**-dontwarn java.beans.Beans-dontwarn javax.security.**-keep class javamail.** {*;}-keep class javax.mail.** {*;}-keep class javax.activation.** {*;}-keep class com.sun.mail.dsn.** {*;}-keep class com.sun.mail.handlers.** {*;}-keep class com.sun.mail.smtp.** {*;}-keep class com.sun.mail.util.** {*;}-keep class mailcap.** {*;}-keep class mimetypes.** {*;}-keep class myjava.awt.datatransfer.** {*;}-keep class org.apache.harmony.awt.** {*;}-keep class org.apache.harmony.misc.** {*;}O email funfou de boa,
Grato mais uma vez, ;)Relendo, tentando, buscando e ta indo! rs...Vlw,
Abs,
Psy Khé.Em 20 de setembro de 2012 13:18, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:
Se não rolar, adiciona estas linhas aqui:---dontwarn java.awt.**-dontwarn java.beans.Beans-dontwarn javax.security.**-keep class javamail.** {*;}-keep class javax.mail.** {*;}-keep class javax.activation.** {*;}-keep class com.sun.mail.dsn.** {*;}-keep class com.sun.mail.handlers.** {*;}-keep class com.sun.mail.smtp.** {*;}-keep class com.sun.mail.util.** {*;}-keep class mailcap.** {*;}-keep class mimetypes.** {*;}-keep class myjava.awt.datatransfer.** {*;}-keep class org.apache.harmony.awt.** {*;}-keep class org.apache.harmony.misc.** {*;}Abraço,Ernani2012/9/20 Ernani Joppert Pontes Martins <joppert@gmail.com>
Troca estas linhas:-keep public class * [activation.jar]-keep public class * [mail.jar]Por estas:-keep public class * javax.mail
-keep public class * javax.activationVeja se resolve![]'sErnani2012/9/20 Psy Khé <psykhe6@gmail.com>
Poxa, entao...[javac] /home/psykhe/Dropbox/workspace/ACP/src/oboob/mobile/util/Mail.java:5: error: package javax.activation does not exist
[javac] import javax.activation.CommandMap;^esse erro acima ainda persiste com a classe Mail...javax.activation.*javax.mail.*Tentei no config do proguard...-keep public class * [android-support-v4.jar]
-keep public class * [activation.jar]
-keep public class * [additional.jar]
-keep public class * [mail.jar]
-keepclassmembers class * {
@javax.activation.* <fields>;
}O android-support-v4.jar - parece que funcionou, não da mais warning dele...Agora os demais nao rolou...Hum? Valeu!!!
Abs,
Psy Khé.Em 20 de setembro de 2012 12:11, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:
--Dá uma relida no tuto de antes!Você está esquecendo de configurar o proguard para ignorar as classes do Android!Abraço,Ernani2012/9/20 Psy Khé <psykhe6@gmail.com>--Ernani/ Jonas/ Senhores,Poxa, então o diretorio encontra-se vazio...Tentei tirar no xml uns delete que tem la...mas nada.Creio que também nao seja esse o caso, deve ser outra situação, o porque de nada se encontrar no diretorio.Segue como está meus arquivos de configuração:E, o resultado de um release do ant.:ops...^ atualizando....esquece...[essa parte foi resolvida^]Era o config do proguard nao estava sendo carregado...Coloquei a variavel de config do proguard no local.properties...e funcionou!(pensei que se estivesse no build-proguard.xml ele ja iria carregar ela.argh)[echo] proguard.config is /opt/android-sdk-linux/tools/proguard/procfg.txt
[echo] Proguard.config is enabledAgora parece que ta executando o proguard...Mas ele ta dando error - warning em algumas classes - libs...Segue exemplo.:[proguard] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator
[proguard] Warning: android.support.v4.view.AccessibilityDelegateCompatIcs$1: can't find superclass or interface android.view.View$AccessibilityDelegate
[proguard] Warning: android.support.v4.view.AccessibilityDelegateCompatJellyBean$1: can't find superclass or interface android.view.View$AccessibilityDelegate
[proguard] Warning: android.support.v4.view.accessibility.AccessibilityManagerCompatIcs$1: can't find superclass or interface android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
[proguard] Warning: android.support.v4.view.accessibility.AccessibilityNodeProviderCompatJellyBean$1: can't find superclass or interface android.view.accessibility.AccessibilityNodeProvider[proguard] Warning: br.com.istgroup.util.Mail: can't find superclass or interface javax.mail.AuthenticatorNo meu projeto eu tenho as libs incluidas...android-support-v4.jar - Não sei pra que serve, deve ser auto, e necessaria ou nao?^em libse ....activation.jar - additional.jar - mail.jar - da javamail-android.^em assets...Ta dando warning nessa libs...Pode me sugerir algo?Valeuu!!Abs,
Psy Khé.Em 20 de setembro de 2012 10:48, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:--Dá uma olhada no diretório proguard do seu projeto....Procure pelos arquivos dump.txt, mapping.txt, seeds.txt e usage.txtO mais útil deles é o mapping.txt que é onde ele referencia as mudanças feitas e a correlação entre suas classes, métodos e propriedades no código então ofuscado![]'sErnani.2012/9/20 Psy Khé <psykhe6@gmail.com>--Não tem nenhuma classe minha nele...pacote também nada...Muito estranho...pois peguei o ultimo pacote gerado - release e o unsigned,E ambos aparecem essa estrutura ai... sem conseguir identificar uma classe minha, pacote, nada...I dont know...Alguem?
Valeuu!!!Abs,
Psy KhéEm 20 de setembro de 2012 00:42, Jonas Alves <jonasfa@gmail.com> escreveu:
Os pacotes "support.v*" são da biblioteca de compatibilidade (fragments, etc). É normal serem incluídos no seu aplicativo.
Você não identificou classes/pacotes do seu aplicativo na lista?
--On Sep 19, 2012 11:15 PM, "Psy Khé" <psykhe6@gmail.com> wrote:--dex2jar...para converter o dex para arquivo jar.Bem, usei ele....mas creio que nao deu nada certo, rs.Descompactei o apk, supostamente, ofuscado...
Peguei o dex...psykhe@psykhe-desktop:~/Downloads/dex2jar-0.0.7.9-SNAPSHOT$ sh dex2jar.sh classes.dex
0 [main] INFO com.googlecode.dex2jar.v3.Main - version:0.0.7.9-SNAPSHOT
4 [main] INFO com.googlecode.dex2jar.v3.Main - dex2jar classes.dex -> classes.dex.dex2jar.jar
2008 [main] INFO com.googlecode.dex2jar.v3.Main - Done.Agora o arquivo jar, gerou uma arvore estranha de classes...e classes diferentes, algo do proprio android, eu creio.Segue print em anexo.Valeu,Abs,Psy Khé.Em 19 de setembro de 2012 22:51, Psy Khé <psykhe6@gmail.com> escreveu:
Então...Partindo por essa logica, ...É que eu estava vendo os três files apks que ele gera.release - unaligned - unsigned
E apenas o unsigned estava menor, os outros dois com tamanho iguais.Então pensei que a versão final - release - da unaligned que é a sem ofuscação, estavam iguais...hm...
Mas...i dont know... mas...Se eu gerar pelo eclipse e assinar a aplicação, ela fica com uns 1 MB.E a versão final ou a unaligned - Está com 735KB.
E ai? eis uma certa duvida...Vou da uma pesquisada pra ve se acho algo para fazer engenharia reversa no dex file, das classes.Valeuuu!Abs,
Psy KhéEm 19 de setembro de 2012 14:25, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:
Tenta jogar o conf num caminho fixo, e coloca lá no xml o caminho para onde vc jogou o conf!E acrescentando, o $ são realmente inner classes, mas, isso deve ser relacionado ao android e principalmente à parte de layout, que deve ser a forma como ele gera o código.O mais importante é ver o tamanho do seu apk no final, deve cair alguns % comparados com o original! sem ofuscamento!Abraço,Ernani--2012/9/19 Jonas Alves <jonasfa@gmail.com>Classes com $ são inner classes. Não tem relação com ofuscamento.
--On Sep 19, 2012 11:39 AM, "Psy Khé" <psykhe6@gmail.com> wrote:É pensei que tendo essas classes.dex - Já seria sinal que foi ofuscado.Ele ta gerando esse classes.dex...com as possiveis classes...
Tentei verificar o xml da configuração do proguard, mas nao consegui fazer com que ele preserver as classes ofuscadas...ou se preserva e onde e qual seria.
Argh...Usando o jad em algumas classes dentro do bin/classes/Ele gerou umas com dolar...creio que isso deve ser normal...mas essa com dolar, estava meio incompletas e talvez ofuscadas ou...FormularioActivity.class - Original completa sem ofuscaçãoFormularioActivity$1.class - FormularioActivity$2.class - FormularioActivity$3.class^incompletas?aparentemente ofuscadas...Ex.:tener()
{
this$0 = FormularioActivity.this;
super();
}esse tener()? nao existiria...Nao sei...Qualquer coisa,Valeu!!
Abs,Psy Khé.Em 19 de setembro de 2012 03:02, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:
O Ofuscamento do proguard atua no .class, depois disso o Android cria os arquivos .dex a partir do .class.Portanto, mantendo os .class já consegue ver se o ofuscamento foi feito.Outra forma de saber se funcionou é comparando o tamanho do .apk gerado tanto o ofuscado quanto o não ofuscado!Abraço,Ernani--
2012/9/18 Jonas Alves <jonasfa@gmail.com>Isso não vai funcionar, pois não tem arquivos .class nem nada Java em pacotes android.
Existe uma ferramenta específica para "leitura" do bytecode do Android, o dex, mas não sei o nome. Provavelmente alguém da lista vai lembrar.
--On Sep 18, 2012 9:59 PM, "Ernani Joppert Pontes Martins" <joppert@gmail.com> wrote:
--Opa, pra verificar, use o jad, Java Decompiler!Descompacte seu apk e rode jad nomedaclasse.class!Se ele só assinou alguns arquivos não sei ao certo como resolver.
Todo o processo de assinatura é feito após o ofuscamento, então precisa ver se o processo de assinatura não precisa entender as novas classes com nomes estranhos!Abraço,Ernani2012/9/18 Psy Khé <psykhe6@gmail.com>Ernani / Senhores,
Show, acho que consegui!!!! RLZ!Bem...Segui o ultimo link postado...Algumas alterações ou add...tais como:<property name="out.classes.dir" value="class" /><mkdir dir="${out.classes.dir}" />Ele usava a variable out.classes.dir mas não escolhia um valor e nem criava o diretorio correspondente.Apenas isso...Agora ficou uma duvida:
Ele gerou alguns apks...Identifiquei dois que deve dizer: assinado e nao assinado.MainActivity-release.apk - Não assinado
MainActivity-release-unaligned.apk
MainActivity-release-unsigned.apk - AssinadoClaro! rs..Mas o assinado, parece-me quebrado a assinatura...Fiz o check...e diz assim: jarsigner -verify -verbose -certs MainActivity-release.apkjar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
Parece que ele só assinou alguns arquivos, não sei se isso é normal. Não mostra todos os files assinados com o comando acima.Outra duvida,Acho que em off, tu comentou comigo de um tools que faz a eng.reversa...
Queria saber para testar como ficou a ofuscação... se realmente foi realizada, etc.Tem como me informar?Valeu!!!!
Abs,
Psy Khé.
Em 18 de setembro de 2012 09:23, Psy Khé <psykhe6@gmail.com> escreveu:Sorry...Nao tinha visto seu outro post...Parece bom, explica bem...Vou ve o que eu consigo...
Valeu!!!!
Abs,
Psy Khé.Em 18 de setembro de 2012 09:21, Psy Khé <psykhe6@gmail.com> escreveu:
Fala Ernani,
Então...eu havia visto esse blog em minha pesquisa.Mas ele diz:"Vamos fazer uma configuração extra para reduzir o tamanho da aplicação. O ProGuard comprime e optimiza ficheiros Java, retirando código que não é usado e fazendo várias optimizações no código restante."
Parecia que essa simples configuração do proguard.cfg que ele faz,É apenas para otimizar, e nao ofuscar o codigo.Foi o que eu achei a priori,Nao sei se procede...Pois em minha tentativa de leitura do proguard/documentação...tem algumas opções que ele tem, de map, etc...para que seja feita a ofuscacao do codigo.Eu creio que o uso do proguard para ofuscar o codigo, parte do principio sim, de ter a configuracao no projeto...mas ser feita a ofuscação via command line.ex.: java -jar proguard.jar options ...Essas opcoes, e se é realmente dessa forma, que eu nao sei.Hum?Valeu!Abs,
Psy Khé.Em 18 de setembro de 2012 09:03, Ernani Joppert Pontes Martins <joppert@gmail.com> escreveu:O processo para o Android SDK é mais simples do que o do de J2ME.Veja aqui, são apenas 2 arquivos que vc precisa configurar.Abraço,Ernani--2012/9/18 Psy Khé <psykhe6@gmail.com>--Senhores,Andei olhando(pesquisando) na lista,Sobre o uso do proguard para ofuscar o codigo a ser publicado.O que encontrei foi alguns comentarios entorno de proteção do codigo, engenharia reversa, etc...Mas não como empregar/realizar/fazer o uso do proguard para ofuscar o codigo.Esse tipo de procedimento, em conversas que tive em off...Parece bem relevante, antes da publicação de um code fazer a ofuscação, ajuda...Vi algumas coisas, para configurar no eclipse, mas nada concreto, comando, para usar o proguard no meu codigo...Alguem pode me auxiliar para conseguir o feito?
Grato a lista!Abs,
Psy Khé.
--
--
--
--







0 comentários:
Postar um comentário