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

问题描述 投票:0回答:1

我第一次尝试使用具有混淆和代码优化功能的R8的Android Studio版本。

正如official documentation所说:

混淆代码混淆的目的是通过缩短应用程序的类,方法和名称来减小应用程序的大小字段。

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

enter image description hereenter image description here

[Contenutimanifest.xml中提到的活动。

[mostraViewnascondiView是我创建的方法,它们不在任何库中,它们不进行任何扩展,因此我希望看到它们的名称已更改。

void mostraView(View v)
{
     v.setVisibility(View.VISIBLE);
}
void nascondiView(View v)
{
     v.setVisibility(View.GONE);
}

此R8的行为正确吗?

如何设置R8来混淆它们,或者至少混淆这两个?

谢谢。

android android-studio build obfuscation r8
1个回答
0
投票

这可能会让您:

# 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);
}

我是通过使用诊断开关-printseedsprintconfiguration获得的。

然而,唯一可以重现您的问题的方法是,如果我修改了访问修饰符以包含public,如下所示:

public void mostraView(View v)
{
    v.setVisibility(View.VISIBLE);
}

注意,添加了关键字public。因此,假设您发布的代码是逐字的,则默认访问修饰符是不匹配该模式的package friend。

无论如何,我都可以进行-经过重述的修改可以重现该问题,并提供了基于默认-keeps的可能解释。

© www.soinside.com 2019 - 2024. All rights reserved.