Android 为什么我们必须将库排除在ProGuard混淆之外?

Android 为什么我们必须将库排除在ProGuard混淆之外?,android,android-proguard,Android,Android Proguard,我知道规则是,如果我们想让ProGuard模糊处理正常工作,就应该将库排除在外(例如,不模糊)。所有教程都到此为止 在引擎盖下,这是什么原因?是因为它与我们的项目没有相同的包名吗?我知道这是强制性的,因为当我忘记将这些库排除在ProGuard模糊处理之外时,我遇到了可怕的故事 这条规则是否适用于我们自己的图书馆项目?它们也有不同的包名,然而,虽然公共项目不需要混淆,但我们自己的库确实需要混淆 显然,我有一个全面的进步知识,不能制定质量混淆计划,因为我上面问的问题并没有给我清晰易懂的答案 ProG

我知道规则是,如果我们想让ProGuard模糊处理正常工作,就应该将库排除在外(例如,不模糊)。所有教程都到此为止

在引擎盖下,这是什么原因?是因为它与我们的项目没有相同的包名吗?我知道这是强制性的,因为当我忘记将这些库排除在ProGuard模糊处理之外时,我遇到了可怕的故事

这条规则是否适用于我们自己的图书馆项目?它们也有不同的包名,然而,虽然公共项目不需要混淆,但我们自己的库确实需要混淆


显然,我有一个全面的进步知识,不能制定质量混淆计划,因为我上面问的问题并没有给我清晰易懂的答案

ProGuard可应用于任何库或模块

以下是有关ProGuard的更多信息: 1)
2) ProGuard可应用于任何库或模块

以下是有关ProGuard的更多信息: 1)
2)

可以混淆和最小化库项目。没有必要将库完全排除在模糊或缩小之外

有些库确实需要特殊的规则来确保它们正常工作,其原因可以扩展到您自己的库。这些问题并不是源于它们是图书馆这一事实,而是与图书馆的工作有关

例如,GSON要求您添加以下行:

-keepattributes Signature
他们的研究提供了以下解释:

# Gson uses generic type information stored in a class file when working with fields.
# Proguard removes such information by default, so configure it to keep all of it.
出于类似的原因,您需要告诉proguard忽略GSON将序列化或反序列化的模型。由于GSON使用反射工作,因此需要确保成员字段没有混淆,否则GSON将不知道要查找哪些字段


虽然我似乎还记得过去Facebook有问题,但他们认为你不需要对Proguad做任何特殊的事情。

库项目可以被模糊化和最小化。没有必要将库完全排除在模糊或缩小之外

有些库确实需要特殊的规则来确保它们正常工作,其原因可以扩展到您自己的库。这些问题并不是源于它们是图书馆这一事实,而是与图书馆的工作有关

例如,GSON要求您添加以下行:

-keepattributes Signature
他们的研究提供了以下解释:

# Gson uses generic type information stored in a class file when working with fields.
# Proguard removes such information by default, so configure it to keep all of it.
出于类似的原因,您需要告诉proguard忽略GSON将序列化或反序列化的模型。由于GSON使用反射工作,因此需要确保成员字段没有混淆,否则GSON将不知道要查找哪些字段


虽然我似乎记得过去Facebook有问题,但他们认为您不需要对Proguad做任何特殊的事情。

您从哪里听说您应该将整个库排除在proguard之外?那不是真的。我们没有混淆他们,这就是我在“排除”一词中的意思。我的结论是,在Facebook、支持库、gson和其他几十个第三方库出现问题后,你从哪里听说你应该将整个库排除在proguard之外?那不是真的。我们没有混淆他们,这就是我在“排除”一词中的意思。我的结论是,在与Facebook、支持库、gson和其他几十个第三方库发生问题之后。