如何使用新的 Android 2.0 Shrinker 并将 useProguard 设置为 false?
Posted
技术标签:
【中文标题】如何使用新的 Android 2.0 Shrinker 并将 useProguard 设置为 false?【英文标题】:How to use new Android 2.0 Shrinker and set useProguard false? 【发布时间】:2016-06-10 08:02:08 【问题描述】:我升级到了 android Studio 2.0 Beta 5。我正在使用 gradle 工具 2.0.0-beta5。在 Android 开发博客站点上,有一段视频解释了如何使用新的 Shrinker 进行调试构建(在 3:14)
https://www.youtube.com/watch?list=PLWz5rJ2EKKc_w6fodMGrA1_tsI3pqPbqa&v=xxx3Fn7EowU
我正在尝试使用视频中解释的调试 buildType 构建我的项目:
debug
minifyEnabled true
useProguard false
我收到一堆警告,然后在构建时出现此错误:
Error:Execution failed for task 'app:transformClassesWithNewClassShrinkerForMyAppNameGoesHereDebug'.
Warnings found during shrinking, please use -dontwarn or -ignorewarnings to suppress them.
使用 Proguard,我会在 proguard 项目文件中添加必要的适当 -dontwarn。我可以在某处添加 -dontwarn 语句的 Shrinker 项目文件吗?
【问题讨论】:
【参考方案1】:我在上面找到了一些documentation。原来它使用与 Proguard 相同的配置文件。这是文档中的相关部分:
内置的压缩器只能去除死代码,它不会混淆或优化。 可以使用与 ProGuard 相同的文件进行配置,但会忽略所有与混淆或优化相关的标志。与 ProGuard 不同,我们支持将内置收缩器与 Instant Run 一起使用。
另外,这里有一个示例配置供参考:
buildTypes
debug
minifyEnabled true
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
【讨论】:
编译安装APK。谢谢!不幸的是,我的 proguard 配置已经存在问题。杰克逊抛出“没有找到合适的构造函数”错误。但至少它现在正在建设中。 我之前在 SO 上看到过一些关于杰克逊问题的帖子。至少你比我做得更远!我很高兴看到添加 -dontwarn 标志让我通过了transformClassesWithNewClassShrinkerForDebug
步骤。然而,这只是导致了一个 64K 的方法错误,这很奇怪,因为项目在使用 Proguard 时使用相同的 Proguard 规则构建。以上是关于如何使用新的 Android 2.0 Shrinker 并将 useProguard 设置为 false?的主要内容,如果未能解决你的问题,请参考以下文章
Android 安装包优化开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )
Elasticsearchelasticsearch 压缩索引 shrink