Android 为什么R8不重命名所有的方法和类?

Android 为什么R8不重命名所有的方法和类?,android,android-studio,build,obfuscation,android-r8,Android,Android Studio,Build,Obfuscation,Android R8,我第一次尝试使用R8的Android Studio版本,它可以执行模糊处理和代码优化 正如政府所说: 混淆你的代码 模糊处理的目的是通过缩短应用程序的类、方法和名称来减小应用程序的大小 田地 我认为R8将重命名所有方法和类名,但是如果我通过Build->analyze APK分析APK。。。我可以阅读大多数原始方法和类名 Contenuti是manifest.xml中提到的活动 mostraView和naconditiview是我创建的方法,它们不在任何库中,也不扩展任何内容,所以我希望看到

我第一次尝试使用R8的Android Studio版本,它可以执行模糊处理和代码优化

正如政府所说:

混淆你的代码

模糊处理的目的是通过缩短应用程序的类、方法和名称来减小应用程序的大小 田地

我认为R8将重命名所有方法和类名,但是如果我通过Build->analyze APK分析APK。。。我可以阅读大多数原始方法和类名

Contenuti是manifest.xml中提到的活动

mostraView和naconditiview是我创建的方法,它们不在任何库中,也不扩展任何内容,所以我希望看到它们的名称更改

void mostraView(View v)
{
     v.setVisibility(View.VISIBLE);
}
void nascondiView(View v)
{
     v.setVisibility(View.GONE);
}
这是R8的行为正确吗

如何设置R8来混淆所有这些,或者至少混淆这两个


非常感谢

此默认规则可能是原因:

# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
    public void *(android.view.View);
}
我通过使用诊断开关-printseeds和-printconfiguration获得了这一点

匹配的方法将是在类扩展活动中定义的A,而b具有与模式匹配的方法签名,基本上是任何名称和视图参数

但是,我复制您的问题的唯一方法是修改访问修饰符以包括public,如:

注意添加了关键字public。因此,假设您发布的代码是逐字的,那么默认的访问修饰符是packagefriend,它与模式不匹配

无论如何,这是我所能做的——能够通过注意到的修改重现问题,并根据默认情况提供了一个可能的解释——保留


请注意,keep一词是重载的,因为它也适用于模糊处理。

此默认规则可能是原因:

# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
    public void *(android.view.View);
}
我通过使用诊断开关-printseeds和-printconfiguration获得了这一点

匹配的方法将是在类扩展活动中定义的A,而b具有与模式匹配的方法签名,基本上是任何名称和视图参数

但是,我复制您的问题的唯一方法是修改访问修饰符以包括public,如:

注意添加了关键字public。因此,假设您发布的代码是逐字的,那么默认的访问修饰符是packagefriend,它与模式不匹配

无论如何,这是我所能做的——能够通过注意到的修改重现问题,并根据默认情况提供了一个可能的解释——保留


请注意,keep这个词是重载的,因为它也适用于模糊处理。

@Andy mostraView和NasConditiview是我创建的方法,它们不在任何库中。@Andy也不是这种情况。它们不扩展任何内容可能会添加您可以将-whyareyoukeeping选项添加到此处引用的ProGuard配置文件:@Andy我阅读了您的链接,但似乎没有解释如何发现该方法未重命名的原因,而只是解释了它未被删除的原因。@Andy mostraView和NasConditiview是我创建的方法,它们不在任何图书馆里。@Andy也不在这种情况下。它们不扩展任何内容可能会添加-whyareyoukeeping选项,您可以将-whyareyoukeeping选项添加到此处引用的ProGuard配置文件:@Andy我阅读了您的链接,但它似乎没有解释如何发现该方法未重命名的原因,而只是解释了该方法未被删除的原因。谢谢,从两个方法中删除公共修饰符。它们被R8Thank重命名,从两个方法中删除public修饰符它们被R8重命名