【问题标题】:How to perform minification and obfuscation with the JACK compiler?如何使用 JACK 编译器执行缩小和混淆?
【发布时间】:2016-09-15 20:01:24
【问题描述】:

Google 发布了新的JACK compiler 测试版,供 Android Studio 2.1 的 Android 开发者使用。

我的问题是,我们如何使用 JACK 为 APK 启用混淆功能?下面的文章说 JACK 本机执行混淆并消除了对 Proguard 的需要:

而下面的文章说 JACK 使用 Proguard 配置文件(即.pro 文件)来执行混淆:

上面也说了

在此过程中,Jack 还处理任何请求的代码缩小(缩小和/或混淆)。

这究竟是什么意思?我们是否必须使用minifyEnabled 选项并定义一个包含Proguard 选项的.pro 文件?

总结:

  • 我们究竟如何使用 JACK 启用混淆功能?我们可以吗 绕过 Proguard 的使用,还是 Proguard 在 混淆过程,即使我们用 JACK 编译?

  • JACK 当前是否支持混淆,是否可用 在 Android Studio 的稳定(即非 beta/canary)版本中?

注意:

我已经参考了以下帖子:

更多参考:

更新:

Matt Insko 的 answer 很有帮助,但我想要更详细、更准确、更规范的答案。

【问题讨论】:

  • 这个post 可能会有所帮助。如果您看到此link,则可以选择传递诸如--config-proguard 之类的proguard 文件
  • 那么使用命令行是这里唯一的选择吗?以及我们如何从命令行使用 JACK 进行构建?
  • 是的,我尝试使用 CLI。它工作正常。提到此信息here 和here
  • 谢谢,但我已经看到了第一个链接(它甚至在我的回答中被引用)......无论如何谢谢:)
  • 一个很好的信息性问题。

标签: android android-studio android-sdk-tools android-proguard android-jack-and-jill


【解决方案1】:

J.A.C.K.最新发布的 Gradle 插件 (v2.1.0) 似乎不支持混淆。

如果您在使用最新的 v2.1.0 插件时启用了 JACK,它会告诉您 Jack requires Build Tools 24.0.0 or later 要求您使用预览工具。

使用 android gradle v2.2.0-alpha1、Build Tools-v24rc4、Platform Tools-v24rc3 和 Sdk Tools-v25.1.7rc1 我能够让 JACK 执行混淆。

在defaultConfig 中启用时,它会抱怨Minifying the variant used for tests is not supported when using Jack.,因为minifyEnabled true 是在debug 构建中配置的。

所以,我创建了一个自定义构建类型并在那里启用它:

buildTypes {
    ...
    custom {
        minifyEnabled true
        proguardFiles 'proguard-android-JACK.txt-2.2.0-alpha1'
        jackOptions {
            enabled true
        }
    }

使用proguardFiles getDefaultProguardFile('proguard-android.txt') 时出现问题。它错误为:com.android.jack.api.v01.ConfigurationException: Error while parsing ..., 。所以,我只是删除了它抱怨的行,然后手动指定了我修改后的配置文件。

【讨论】:

  • 嗨,您是如何解决 AS 抱怨当前配置(自定义)未签名的?
【解决方案2】:

你可以看这里:https://source.android.com/source/jack.html

来自官方文档:

(Jack) 处理收缩、混淆、重新打包和 multidex。用一个 不再需要 ProGuard 等单独的软件包。

请特别注意“收缩和混淆”部分,其中提到:

Jack 具有收缩和混淆支持并使用 proguard 配置文件以启用收缩和混淆功能。

还提供了支持和忽略的选项。

【讨论】:

  • 谢谢,但你没有解释我们到底是怎么做的。我也读过(并引用过)那篇文章,它对于如何准确地进行混淆非常神秘和含糊。如果您可以尝试一下,并提供更多详细信息(如果可行),我将不胜感激....谢谢:)
猜你喜欢
  • 2018-03-12
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
相关资源
最近更新 更多