android - 如何使用 JACK 编译器执行缩小和混淆?

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

Google 发布了他们新的 JACK compiler 的测试版本适用于使用 Android Studio 2.1 的 Android 开发者。

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

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

上面也说了

During this process Jack also handles any requested code minification (shrinking and/or obfuscation).

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

总结:

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

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

注意:

我已经引用了以下帖子:

更多引用:

更新:

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

最佳答案

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

如果您在使用最新的 v2.1.0 插件时启用 JACK,它会告诉您 Jack 需要 Build Tools 24.0.0 或更高版本 要求您使用预览工具。

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

当在 defaultConfig 中启用时,它会提示 Minifying the variant used for testing is not supported when using Jack.,因为 minifyEnabled truedebug 构建。

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

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 ..., .所以,我只是删除了它提示的行,然后手动指定了我修改后的配置文件。

关于android - 如何使用 JACK 编译器执行缩小和混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314760/

相关文章:

android - 在 Android Studio 中重新排列 Logcat 按钮

Android Studio 甚至无法再构建/运行我的应用程序

android - 无法使用android SDK编译项目

eclipse : Unable to resolve target 'android-xx' 中的 Android 错误

android - Phonegap错误android sdk build.xml :950 : null returned: 1

android - react 原生 : How to make fullscreen youtube embed video in webview with expo (without react-native link)

android - "drag and drop"在 OpenGL ES 与 Android Canvas 下是否变得更快?

android-studio - Android Studio 中的新目录与新文件夹

php - 限制在回收 View 中显示的项目

安卓 fragment : open context menu programmatically