美文网首页Android 轮子安卓开发Android开发经验谈
「Android Tips」使用 ProGuard 移除无用输出

「Android Tips」使用 ProGuard 移除无用输出

作者: _Ryeeeeee | 来源:发表于2015-07-18 02:14 被阅读1138次

首先,来看一段这样的代码。

if (LogUtil.sEnable) {
    Log.d(TAG, "some output");
}

从接触 Android 开始,这样的代码我在各种不同的项目里都见过。这样做有什么不对的地方吗?并没有。可是有更好的解决方式吗?

上述代码将应用的 Log 输出用一个开关控制,如果是 Debug 版本则开启输出。反之如果是 Released 版本,则关闭输出。

新的解决办法就是通过 ProGuard 这个工具。在所有 Android 应用中,都有一个配置文件 Proguard。通常,我们都使用这个文件混淆我们的代码。但是官方文档是这样说明的:

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names. The result is a smaller sized .apk file that is more difficult to reverse engineer.

里面提到一点,说 ProGuard 可以移除无用的代码,在查阅了官方文档之后会发现,-assumenosideeffects 选项会在版本构建的时候就将指定的源码移除。

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** i(...);
    public static *** v(...);
}

示例代码演示了在 Released 版本中,debug, info, verbose 三个等级的 Log 输出将被删除。通过自定义,不仅可以在 Log 控制输出等级,还能减小安装包的体积,简直一石二鸟!

IMPORTANT


需要注意的是,必须不能有关闭优化的配置-dontoptimize,否则上述方法将无效。

相关文章

  • 「Android Tips」使用 ProGuard 移除无用输出

    首先,来看一段这样的代码。 从接触 Android 开始,这样的代码我在各种不同的项目里都见过。这样做有什么不对的...

  • Proguard介绍

    Proguard介绍 Proguard定义 对于ProGuard工具想必我们都不陌生,它能够通过移除无用代码,使用...

  • android apk 瘦身

    App瘦身 代码瘦身 移除无用代码、功能,缩减方法数; 移除无用的库、避免功能雷同的库; 启用Proguard,让...

  • (十八)ProGuard代码混淆面试问题

    一、ProGuard到底是什么 ProGuard工具是用于压缩、优化、混淆代码,主作用是可以移除代码中的无用类、字...

  • proguard

    一.proguard到底是什么 proguard工具是用于压缩,优化,混淆我们的代码,主作用是可以移除代码中的无用...

  • ProGuard代码混淆

    一、简介 ProGuard 工具通过移除无用的代码以及使用语义隐晦的名称来重命名类、字段和方法,从而达到压缩、优化...

  • Proguard优雅的混淆注解方案

    Proguard可以移除无用代码,或者使用语意模糊的名称来重命名类、变量和方法,以此达到压缩、优化和混淆代码的目的...

  • ProGuard入门

    ProGuard入门 简单过程 shrinker:检测和移除无用的类、方法、变量和属性 optimizer:优化代...

  • ProGuard备忘

    ProGuard的4种功能: 压缩(Shrink) 移除代码中无用的类、字段、方法、和特性 优化(Optimize...

  • Android开启压缩代码和资源(混淆)

    什么是混淆 代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和...

网友评论

    本文标题:「Android Tips」使用 ProGuard 移除无用输出

    本文链接:https://www.haomeiwen.com/subject/pilpqttx.html