如何使用新的 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

如何在 CSS 中使用 flex-shrink 换行?

如何将 vuetify 2.0 beta 安装到新的 vue cli 项目中?

Android 2.0 中的分辨率支持

如何在到期后使用 OAuth 2.0 以及 iOS 应用程序中的 Youtube API 获取新的访问令牌