gpt4 book ai didi

android - 为什么我们必须从 ProGuard 混淆中排除库?

转载 作者:行者123 更新时间:2023-11-29 15:49:51 25 4
gpt4 key购买 nike

我知道规则是如果我们希望它正常工作,我们应该从 ProGuard 混淆中排除(例如不混淆)库。这是所有教程停止的地方。

在幕后,这是什么原因?是不是和我们项目的包名不一样?我知道这是强制性的,因为当我忘记从 ProGuard 混淆中排除这些库时,我遇到了可怕的故事。

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

显然,我对 ProGuard 的了解很全面,无法制定高质量的混淆方案,因为我上面提出的问题并没有给我清晰易懂的答案。

最佳答案

可以混淆和最小化库项目。无需将库完全排除在混淆或缩小之外。

一些库确实需要特殊规则来确保它们正常工作,而导致这种情况的原因延伸到您自己的库。这些问题并非源于它们是图书馆这一事实,而是与图书馆的工作有关。

例如,GSON 要求您添加这一行:

-keepattributes Signature

他们的 sample proguard file方便地提供了这个解释:

# 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.

出于类似的原因,您需要告诉混淆器忽略 GSON 将序列化或反序列化的模型。由于 GSON 使用反射工作,您需要确保成员字段未被混淆,否则 GSON 将不知道要查找哪些字段。

虽然我似乎记得过去在 Facebook 上遇到过问题,但他们的 documentation currently explicitly states您不需要对 Proguad 做任何特殊的事情。

关于android - 为什么我们必须从 ProGuard 混淆中排除库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com