我有此代码:
public static <A, B> B getPackageManagerReflection(A param1, Class<B> param2, byte[] param2, Object param4) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
...
}
com.example.test.Utils.getPackageManagerReflection:
getPackageManagerReflection
使用Android Studio分析生成的apk,在classes.dex中有清晰可读的packageManagerReflection,但.line 225
.end local v2 # "packageManagerReflection":Landroid/content/pm/PackageManager;
.end local v3 # "deviceId":Ljava/lang/String;
.end local v5 # "exception":Ljava/lang/IllegalArgumentException;
:catch_301
move-exception v2
.line 231
.local v2, "packageManagerReflection":Landroid/content/pm/PackageManager;
nop
却不可读:
packageManagerReflection
我正在使用最新版本的Android Studio及其所有组件。
为什么成员reflection
的名称保留在生成的代码中?
我已经尝试将其重命名为名称不带packageManagerRef
的其他名称(例如seeds.txt
,但仍在classes.dex中进行比较。
我也已经在mapping.txt
的{{1}},usage.txt
和app/build/outputs/mapping/debug
中见过,但没有发生。
非常感谢!
答案 0 :(得分:2)
应该在应用的发行版中剥离局部变量名称,它们对于执行不是必需的(并且不能通过反射使用)。因此,R8不需要也不必重命名它们。尝试在发行版本中查找相同的信息,但不应显示该信息。