Confusão do Android - resolva conflitos com outros nomes de pacotes

pergunta

Recentemente, quando um terceiro integrou nosso aar, apareceram arquivos ofuscados que conflitavam com outros nomes de pacotes introduzidos por seu projeto.

Solução

Por padrão, os nomes ofuscados são geralmente a, b, c, d e suas combinações. Ao modificar as regras de ofuscação e controlar as regras de nomenclatura de arquivos ofuscadas, você pode evitar fundamentalmente problemas com o mesmo nome de outros pacotes. As etapas específicas são fazer as seguintes configurações no arquivo de regras de ofuscação proguard-rules.pro :

-obfuscationdictionary filename.txt
-classobfuscationdictionary filename.txt
-packageobfuscationdictionary filename.txt
  • -obfuscationdictionary filename .txt: especifique um dicionário que ofusque nomes de classes, nomes de variáveis ​​de membros e nomes de métodos.
  • -classobfuscationdictionary filename .txt: Especifique um dicionário para ofuscar nomes de classes. O formato do dicionário é o mesmo que -obfuscationdictionary;
  • -packageobfuscationdictionary filename .txt: filename especifica um dicionário para ofuscar nomes de pacotes. O formato do dicionário é o mesmo que -obfuscationdictionary.

filename.txt é um arquivo de dicionário usado para especificar o nome gerado após a ofuscação. Espaços, sinais de pontuação, palavras repetidas e linhas começando com '#' no arquivo de dicionário serão ignorados. Deve-se notar que adicionar um dicionário não melhorará significativamente o efeito de confusão. Adicionar um dicionário tem duas funções: uma é evitar confusão com outros pacotes e nomes duplicados; a outra é dificultar a leitura; é a mesma coisa nível como diretório proguard-rules.pro
.
Insira a descrição da imagem aqui
A seguir está um exemplo de dicionário. Recomenda-se adicionar alguns prefixos especiais antes de cada palavra-chave, como: xxdo, xxif

# 使用java中的关键字作字典:避免混淆后与其他包重名,而且混淆之后的代码更加不利于阅读
#
# This obfuscation dictionary contains reserved Java keywords. They can't
# be used in Java source files, but they can be used in compiled class files.
# Note that this hardly improves the obfuscation. Decent decompilers can
# automatically replace reserved keywords, and the effect can fairly simply be
# undone by obfuscating again with simpler names.
# Usage:
#     java -jar proguard.jar ..... -obfuscationdictionary filename.txt
#

do
if
for
int
new
try
byte
case
char
else
goto
long
this
void
break
catch
class
const
final
float
short
super
throw
while
double
import
native
public
return
static
switch
throws
boolean
default
extends
finally
package
private
abstract
continue
strictfp
volatile
interface
protected
transient
implements
instanceof
synchronized
referência

1. Otimização de ofuscação do Android: como resolver o problema de conflito com nomes de classes em outros pacotes após ofuscação
2. Implementação de código aberto de string Android e ofuscação de dicionário

Acho que você gosta

Origin blog.csdn.net/fengyulinde/article/details/106115757
Recomendado
Clasificación