首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保护优化设置:在现代API和Proguard版本中启用类合并、强制转换和字段/*

保护优化设置:在现代API和Proguard版本中启用类合并、强制转换和字段/*
EN

Stack Overflow用户
提问于 2014-11-15 04:09:27
回答 1查看 2.2K关注 0票数 11

我已经混淆了我的应用程序很长一段时间了,用下面的设置像咒语一样,因为它们是谷歌的推荐

代码语言:javascript
运行
复制
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*

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

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

  • 在今天的Android和最新的版本中,我只针对从Android4.0.3开始的设备(15),并使用Protecre5.1。
  • 对于那些不做异国情调的应用程序,并且有一个正确编写的proguard.cfg,指示要保留相关的问题类,等等。

这里涉及到这个问题的大多数答案都有相互冲突的信息,并且与相当老的API版本有关。

逐个:

!代码/简化/算术

我在谷歌集团上发现了一个讨论,他们说在安卓甜甜圈之后,SDK不需要simplification/arithmethic。那么,我可以安全地启用这个优化。

类别/合并/*

在启动了这个优化之后,它看起来在我的项目中做得很好:

代码语言:javascript
运行
复制
[proguard]   Number of vertically merged classes:         296
[proguard]   Number of horizontally merged classes:       445

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

字段/*和代码/简化/转换

我读到在这个问题上的作者回答说,这些都是为了避免早期版本的bug。那么在ProStere5.1上激活它们安全吗?

EN

Stack Overflow用户

发布于 2015-10-02 08:46:25

一般建议:不能保证优化不起作用,但总是有风险的。默认的Android程序保护设置所要做的是提供一种将风险降到最低的配置,因此它们对于您的特定情况显得如此保守。

启用这些优化只是意味着,如果某些东西崩溃了,您就不能像对根本原因那样确定。一般说来,对于输出相对于输入而言,这个步骤没有那么有力的保证,这是程序中不确定的一个来源。代码中的小变化可能会导致运行时行为发生显著不同的变化,并且在实际运行程序之前是不可能知道的,这取决于您的配置。

总之,如果您可以运行您的APK,并且所有这些都可以工作-那么很好,优化对您来说是有效的。但是,他们不能保证。

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26942430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档