限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

Android Studio 3.3 Beta 提供了新的 Android 代码压缩器 R8

  • 2018-12-04
  • 本文字数:1186 字

    阅读完需:约 4 分钟

Android Studio 3.3 Beta提供了新的Android代码压缩器R8

摘要: 在将 D8 作为其新的 Dalvik 编译器之后,谷歌已经开始研发新的代码压缩器 R8,在 Android Studio 3.3 beta 版本上它已经可以使用了。R8 承诺用更少的时间交付更小的 APK 文件。


在将 D8 作为其新的 Dalvik 编译器之后,谷歌已经开始研发新的代码压缩器(shrinker)R8,在Android Studio 3.3 beta版本上它已经可以使用了。R8 承诺用更少的时间交付更小的 Android 应用文件(Android applicatin package,APK)。


R8 会一次性完成压缩、脱语法糖并将应用转换为 DEX 格式(https://source.android.com/devices/tech/dalvik/dex-format) 的过程。R8 能够优化 Java 字节码,使其变得更小更高效,同时还会移除所有未使用的类、字段、方法和属性。它还会将所有程序的名称变短,实现对它们的混淆,另外还会让可执行文件变得更小。按照谷歌的基准测试,使用 R8 能够大幅度减少处理时间,它所耗费的时间大约是当前的 Android 压缩器 Proguard 的一半。在 APK(或 DEX)文件大小方面,优势并不明显。尽管如此,R8 还是成功地将谷歌用作基准测试的 Santa Tracker 应用的最终 APK 文件减少了几百 KB。


在特性方面,谷歌还没有提供 R8 与 Proguard 之间对比的技术细节。前段时间,Proguard 的创建者 GuardSquare 提供了这两款产品的对比,这项对比是基于对 R8 源码的分析以及它们自己的测试套件进行的。在 GuardSquare 的对比中,R8 对反射的支持有限;对字符串、资源文件以及资源文件名中的类名混淆支持有限;没有标准的内部类重命名。目前尚不清楚在 GuardSquare 的报告之后,R8 是否有新的进展来克服这些限制。


R8 将代码转换成一个中间表述形式,并会执行一个静态单一赋值(static single assignment,SSA)分析,在分析方法体时,这是一种标准的方式。Proguard 会在整个代码库进行局部运算(partial evaluation),这能够进一步看到代码的动态行为。


R8 和 Proguard 之间的主要区别似乎在于 R8 是一个一次性(one-pass)的优化器,而 Proguard 可以在多个过程中优化代码——对于 Android 构建,默认情况下是 5 个过程。通常情况下,当前执行的优化过程会为后续的优化创造新的机会。在这方面,一个典型的例子就是日志语句的优化,在连续的优化过程中,可以删除仅在这些日志语句中使用的变量。


R8 依然是可选的,你可以在 gradle.properties 文件中通过如下的配置启用它:


android.enableR8=true
复制代码


R8 提供了更高级的选项,也就是所谓的“完整模式(full mode)”,它会带来更多的优化,而它的代价是牺牲对 Proguard 的兼容性。你可以通过如下的配置启用完整模式:


android.enableR8.fullMode=true
复制代码


因为 R8 依然处于 beta 阶段,所以相对于 Proguard 的效果可能会有一定的差异。 不过,对开发人员来说最重要的似乎是 R8 在运行时间上的巨大改进,在文件大小方面的效果似乎比较有限。


查看英文原文:


https://www.infoq.com/news/2018/11/r8-shrinker-android-studio-3.3


2018-12-04 11:532089

评论 1 条评论

发布
暂无评论
发现更多内容

【每日学点HarmonyOS Next知识】动图循环播放、监听tab切换、富文本上下滚动、tab默认居中、a标签唤起拨号

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】Tab切换声明周期、复杂Json组装、scroll最大高度、引用传递报错、Web性能

轻口味

HarmonyOS HarmonyOS NEXT

7B 开源模型性能超越 LLaVA,DeepSeek Janus Pro 论文详解

Baihai IDP

人工智能 AI LLMs DeepSeek Janus Pro

HarmonyOS SDK让小红书鸿蒙用户尽享相机的拍摄之美

HarmonyOS SDK

harmoyos

LED显示屏:点亮商场与零售的“吸睛”密码

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏

【每日学点HarmonyOS Next知识】Web上传文件、监听上下左右区域连续点击、折叠悬停、字符串相关、播放沙盒视频

轻口味

HarmonyOS HarmonyOS NEXT

签约!中国煤炭地质总局携手用友打造央企财务数智化建设标杆

用友智能财务

财经 会计

淘宝店铺所有商品数据接口详解

tbapi

淘宝API接口 淘宝店铺所有商品接口

【每日学点HarmonyOS Next知识】输入法光标控制、Text部分圆角、Web组件缓存、Grid问题、Web出现PC效果

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】双向传值问题、子组件半径、VIdeo标签下载隐藏、字符串替换、路由问题

轻口味

HarmonyOS HarmonyOS NEXT

签约!中国煤炭地质总局携手用友打造央企财务数智化建设标杆

用友BIP

数据 智能体 数智化 用友BIP 财务管理

GreatSQL 8.0.32-27 GA (2025-3-10)

GreatSQL

【每日学点HarmonyOS Next知识】输入框限制小数位数、列表偏移计算、web请求header问题、对话框宽度、Web权限

轻口味

HarmonyOS HarmonyOS NEXT

智能制造:企业运营的核心——PMC

积木链小链

数字化转型 企业管理 智能制造 PMC

快速了解黑龙江等级保护

黑龙江陆陆信息测评部

天翼云“息壤”放大招!AI Agent限时优惠资源包,手慢无!

天翼云开发者社区

AI应用 科研助手 算力平台

【每日学点HarmonyOS Next知识】tabs切换卡顿、输入框焦点、打开全新web、输入框密码类型、非法变量值

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】JSBridge通信、输入框提示文字大小、读书翻页效果、Web回调函数、翻页自动轮播

轻口味

HarmonyOS HarmonyOS NEXT

企业身份安全管理面临的问题

芯盾时代

身份安全 iam 统一身份管理平台

AI大模型本地化部署的工具和框架

北京木奇移动技术有限公司

AI大模型 本地化部署 软件外包公司

【每日学点HarmonyOS Next知识】对话框回调问题、输入区域最大行数、web自定义节点、icon图标库、软键盘开关

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】输入框自动获取焦点、JS桥实现方式、Popup设置全屏蒙版、鼠标事件适配、Web跨域

轻口味

HarmonyOS HarmonyOS NEXT

反向海淘反向代购独立站系统的终极神器?Hoobuy+电商API,让独立站躺着“搬砖”

代码忍者

AI大模型的本地化部署

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

AI大模型本地化部署的优势

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

极限实验室

console Gateway easysearch CocoAI

AI大模型本地化部署的技术

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

CST超材料光子晶体和禁带分析实例

思茂信息

cst cst操作 CST软件

2分钟生成数字人视频!华为云Flexus数字人助力中小企业高效创作

平平无奇爱好科技

【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高

轻口味

HarmonyOS HarmonyOS NEXT

AI大模型本地化部署的关键技术

北京木奇移动技术有限公司

AI大模型 本地化部署 软件外包公司

Android Studio 3.3 Beta提供了新的Android代码压缩器R8_大前端_Sergio De Simone_InfoQ精选文章