gpt4 book ai didi

android - Proguard 优化设置 : Enabling class merging, casts and field/* in modern API and Proguard versions

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:53 26 4
gpt4 key购买 nike

很长一段时间以来,我一直在混淆我的应用程序,我把以下设置当作咒语,因为它们是 Google 的推荐

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*

但是,前几天我错误地评论了这一行,应用程序构建正确,并且“显然”有效。我做了很多测试,没能让它崩溃。

所以我想知道是否需要那些禁用的优化设置......

  • 截至今天的 Android SDK 和最新的 Proguard 版本,我只针对 Android 4.0.3 及更高版本 (15) 的设备,并使用 Proguard 5.1。
  • 对于那些不做奇怪的事情并且有一个正确编写的 proguard.cfg 的应用程序,指示保留相关的有问题的类等。

这里与这个问题相关的大多数答案都有相互矛盾的信息,并且与相当旧的 API 版本有关。

一个接一个:

!代码/简化/算术

我在 Google Groups 上找到了一个讨论他们说 Android Donut 之后的 SDK 不需要 simplification/arithmethic。我假设我可以安全地启用此优化。

!class/merging/*

在启用此优化的情况下,proguard 似乎在我的项目中表现出色:

[proguard]   Number of vertically merged classes:         296
[proguard] Number of horizontally merged classes: 445

除了堆栈跟踪不正确之外,还有其他副作用吗?我的意思是,副作用与应用程序崩溃有关,而不是调试问题。我找到了 this related question但它并不能断定它是否安全。

!field/* 和 !code/simplification/cast

我读了in this question ProGuard 的作者回答说,包含这些内容是为了避免旧版 Proguard 出现错误。那么在 Proguard 5.1 上激活它们是否安全?

最佳答案

一般建议:不能保证优化不会起作用,但风险总是存在的。默认的 Android proguard 设置试图做的是提供一种配置,以最大限度地降低这种风险,因此它们对于您的特定情况显得如此保守。

启用这些优化仅意味着如果出现崩溃,您无法确定根本原因。通常,proguard 步骤对输出相对于输入的关系的保证较弱,这是程序中不确定性的来源。代码中的微小更改可能会导致运行时行为发生显着不同的变化,并且在您实际运行程序之前不可能知道,具体取决于您的配置。

总而言之,如果您可以运行您的 APK,并且一切正常 - 那么太棒了,优化对您有用。但是,他们不能保证。

关于android - Proguard 优化设置 : Enabling class merging, casts and field/* in modern API and Proguard versions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942430/

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