首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确覆盖保护选项

正确覆盖保护选项
EN

Stack Overflow用户
提问于 2015-04-15 07:15:38
回答 1查看 1.9K关注 0票数 7

我在当前的项目中使用ProGuard,并决定尝试优化的安卓配置(使用gradle):

代码语言:javascript
复制
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

我没有找到任何关于proguard和android版本所执行的与它们兼容的优化的清晰文档:

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

如果app min版本是11,它们是最新的吗?

所以我决定重写它,让它在proguard-rules.pro中试一试

代码语言:javascript
复制
-optimizations **
-printconfiguration "result.pro"

但最终的配置并不像我预期的那样。它包含所有合并的规则:

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

那么,如何在ProGuard中正确地重写选项呢?或者这一行可能等于-optimizations **

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 01:50:55

我试了一下,但最终还是发现了。要覆盖默认的ProGuard优化,例如,应用除code/simplification/arithmetic之外的所有内容:

  1. -optimizations行添加到ProGuard文件中,并使用*表示所有内容。例如,下面一行: -optimizations!代码/简化/算术,* 意思是“启用除code/simplification/arithmetic之外的所有优化”。可用优化列表在官方网站中可用,您可以使用*来启用/禁用优化类(例如,!field/*)。
  2. 您必须确保在默认的ProGuard文件之前加载ProGuard规则文件,方法是在Gradle文件中交换proguard-rules.progetDefaultProguardFile('proguard-android.txt')的顺序,以便proguard-rules.pro首先出现: getDefaultProguardFile('proguard-android.txt') { buildTypes { minifyEnabled false proguardFiles‘pro卫士规则’,buildTypes}

输出现在应该如下所示:

代码语言:javascript
复制
Optimizing...
  Number of finalized classes:                 68
  Number of unboxed enum classes:              1
  Number of vertically merged classes:         0
  Number of horizontally merged classes:       3
  Number of removed write-only fields:         0   (disabled)
  Number of privatized fields:                 58
  Number of inlined constant fields:           375
  Number of privatized methods:                13
  Number of staticized methods:                37
  Number of finalized methods:                 210
  Number of removed method parameters:         290
  Number of inlined constant parameters:       236
  Number of inlined constant return values:    239
  Number of inlined short method calls:        35
  Number of inlined unique method calls:       114
  Number of inlined tail recursion calls:      0
  Number of merged code blocks:                4
  Number of variable peephole optimizations:   723
  Number of arithmetic peephole optimizations: 10
  Number of cast peephole optimizations:       0
  Number of field peephole optimizations:      0
  Number of branch peephole optimizations:     42
  Number of string peephole optimizations:     35
  Number of simplified instructions:           369
  Number of removed instructions:              5019
  Number of removed local variables:           154
  Number of removed exception blocks:          0
  Number of optimized local variable frames:   201
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29643847

复制
相关文章

相似问题

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