Então, estou tentando lançar algum software, mas Proguard está me dando dor de cabeça.
Quando tento exportar usando proguard, recebo muitos avisos, ou seja, "não consigo encontrar a classe referenciada"
Por exemplo:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
Os avisos parecem estar relacionados ao simpleframework, portanto, no meu arquivo de configuração proguard, adicionei o seguinte:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
Onde pathtoprojecttolibs
está o caminho para os frascos referenciados pelo meu projeto.
Isso não faz diferença.
Se o simpleframework referenciar javax, posso dizer ao proguard para ignorar isso também?
Alguma ideia?
Respostas:
org.simpleframework.xml.stream.StreamReader
no seu código se referejavax.xml.stream.events.XMLEvent
. Como a última classe faz parte do tempo de execução Java (rt.jar
), mas não faz parte do tempo de execução Android (android.jar
), o ProGuard avisa que algo pode estar quebrado. Se tiver certeza de que seu aplicativo funciona de qualquer maneira, você pode especificarProGuard, inferno?
fonte
-dontwarn javax.xml.**
-libraryjars <java.home>/lib/rt.jar
corrigiu o problema para mim.-dontwarn javax.xml.stream.**
-dontwarn
a GUI?No meu caso, a causa raiz estava aqui . Esses avisos que você pode simplesmente ignorar:
A resposta original está aqui
fonte
Este erro ocorre porque as bibliotecas usadas dependem de outras que não são realmente usadas, mas o Proguard as procura.
Adicione suas linhas -dontwarn ao seu arquivo proguard-rules.pro no seu projeto Android para desativar esses avisos.
Você pode encontrar quais dependências você precisa adicionar ao seu proguard-rules.pro no rastreamento de pilha do seu erro.
fonte
Você deve incluir isso em sua configuração do Proguard:
fonte
Chave My Magic que resolveu minhas horas de pesquisa: adicione isto a progruard-android.txt
fonte
Hmm. Lendo esse aviso, parece que a biblioteca que você está tentando usar depende de javax.xml.stream.events. Eu não acho que o espaço para nome esteja realmente incluído no Android. (Consulte o Índice do pacote ).
Tente implantá-lo no emulador sem usar proguard e veja se funciona. Meu palpite seria não se esse aviso for preciso.
fonte
Eu acho que esse é um caso extremo, mas no meu caso eu tive que limpar completamente a pasta de compilação no meu programa Jenkins, tentei trabalhar com código antigo que não existia mais - apenas no caso de alguém ter o mesmo problema.
fonte
No meu caso, não mudei nada e o aviso começou a aparecer. O problema estava com os caches de gradle quebrados. Veja minha outra resposta . Partilho com isso porque demorei duas horas para encontrar o problema:]
fonte
Adicione esta linha ao seu
proguard-rules.pro
arquivo no diretório gradle scripts:onde
package.class.name
é o nome do pacote com o nome da classe do arquivo jar anexado.Por exemplo:
fonte