proguard警告:配置保留入口点....但不是描述符类

use*_*598 28 obfuscation android proguard

我配置了:

-keep ,allowoptimization,allowobfuscation,allowshrinking public class     org.jf.dexlib2.dexbacked.** {
    *;
}
Run Code Online (Sandbox Code Playgroud)

但仍然收到警告:

 Note: the configuration keeps the entry point 'com.trusteer.trf.dex_parser { int get_strings_count(org.jf.dexlib2.dexbacked.DexBackedDexFile); }', but not the descriptor class 'org.jf.dexlib2.dexbacked.DexBackedDexFile'
Run Code Online (Sandbox Code Playgroud)

我使用的是proguard 4.7版(在Android SDK中)

我该怎么办?

Wil*_*iam 31

你已告诉Proguard保留某种方法,void foo(Bar bar);但要混淆描述符类Bar.

如果要从外部源调用方法,这只是一个问题,因为混淆会改变签名(如果使用Proguard来混淆库,然后在另一个应用程序中使用该库).

所以有以下选择:

  • 配置Proguard也保持Bar.

  • 使用该-dontnote指令告诉Proguard不要打印这样的笔记.

  • 来自您使用 Proguard 进行混淆的应用程序/库之外的来源。例如,如果您使用 Proguard 来混淆一个库,然后在另一个应用程序中使用该库 (2认同)

Vai*_*den 0

文件中:

allowedshrinking 指定可以缩小 -keep 选项中指定的入口点,即使必须以其他方式保留它们。也就是说,入口点可能会在收缩步骤中被删除,但如果它们毕竟是必要的,则它们可能不会被优化或混淆

所以看来你需要删除allowshrinking修改器。