我正在使用当前项目中的ProGuard,并决定尝试优化android配置(使用gradle):
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
Run Code Online (Sandbox Code Playgroud)
我没有找到任何关于proguard和android版本执行的优化的明确文档,这些版本与它们兼容:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
Run Code Online (Sandbox Code Playgroud)
如果app min sdk版本是11,它们是最新的吗?
所以我决定覆盖它试试proguard-rules.pro:
-optimizations **
-printconfiguration "result.pro"
Run Code Online (Sandbox Code Playgroud)
但最终的配置并不像我预期的那样.它包含所有组合的规则:
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*,**
Run Code Online (Sandbox Code Playgroud)
那么如何在ProGuard中正确覆盖选项?或者这条线可能等于-optimizations **?
它花了我一些试验和错误但最终发现了.例如,要覆盖默认的ProGuard优化,除此之外应用所有内容code/simplification/arithmetic:
-optimizations在ProGuard文件中添加一行,*用于表示所有内容.例如,以下行:
-optimizations !code/simplification/arithmetic,*
Run Code Online (Sandbox Code Playgroud)
表示"启用除code/simplification/arithmetic" 之外的所有优化".官方网站上提供了可用优化列表,您可以使用它*来启用/禁用优化类(例如!field/*).
您必须确保在默认ProGuard文件之前加载ProGuard规则文件,方法是交换Gradle文件中的proguard-rules.pro和的顺序,getDefaultProguardFile('proguard-android.txt')以便proguard-rules.pro首先显示:
buildTypes {
release {
minifyEnabled false
proguardFiles 'proguard-rules.pro', getDefaultProguardFile('proguard-android.txt')
}
}
Run Code Online (Sandbox Code Playgroud)输出应该看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |