博客
关于我
Android之ProGuard混淆器
阅读量:797 次
发布时间:2023-03-28

本文共 1423 字,大约阅读时间需要 4 分钟。

ProGuard是一款免费的Java字节码优化工具,主要用于代码混淆和优化,能够有效减少jar/apk文件大小并提高安全性。它支持删除无用类、字段、方法以及注释,并可通过重命名的方式进行代码混淆。这种方式不仅能提升性能,还能防止反编译。

在Android开发中,ProGuard通常通过Ant任务或Eclipse插件来集成使用。默认情况下,Eclipse使用Debug模式编译,而release模式则启用了ProGuard的自动优化功能。需要注意的是,Debug模式下的ProGuard混淆会导致调试过程异常缓慢,因此建议在Debug模式下关闭ProGuard。

准备工作

  • 切换到release模式

    Eclipse默认是Debug模式,切换到release模式时,请右键项目,选择“Properties”,在“Java Compile”选项卡中移除“debug”标志。

  • 准备keystore

    Android应用程序需要签名,这一过程需要使用到keystore。在生成keystore时,可以使用jdk中的keytool工具。示例命令如下:

    keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore

    请注意,参数-validity指定了证书有效天数,建议设置较大的天数(如10000天),并注意输入时可能需要处理密码保密性。

  • 设置proguard.config属性

    ProGuard的默认配置文件proguard.cfg位于项目根目录下。可以通过修改default.properties文件来指定配置文件路径:

    proguard.config=proguard.cfg

    或者指定绝对路径:

    proguard.config=/path/to/proguard.cfg
  • 混淆打包

    在release模式下,可以通过多种方式导出签名包,例如:

  • 右键项目选择“Android Tools” -> “Export Signed Android Package”
  • 通过“Export”菜单选择导出类型
  • 使用Ant任务运行ant release
  • 混淆打包完成后,会在根目录下生成proguard文件夹,包含以下重要文件:

    • dump.txt:描述混淆后的代码结构
    • mapping.txt:映射原始代码与混淆代码的对应关系
    • seeds.txt:列出未被混淆的代码
    • usage.txt:记录删除的代码信息

    配置ProGuard

    默认的proguard.cfg配置文件已经足够覆盖大部分场景,但在某些特殊情况下可能需要自定义配置。例如:

    • 保留只在AndroidManifest.xml中引用的类

      可以通过-keep选项保留这些类:

      -keep public class com.example.MyClass

      请注意,-keep选项需要结合-keepclass等参数进行适当配置。

    注意事项

  • 默认配置可能移除必要代码

    如果遇到类不找到的问题,可能是因为ProGuard移除了必要的代码。此时需要在proguard.cfg中添加保留规则。

  • 阅读ProGuard文档

    了解更多定制配置方法,尤其是Keep Options部分。

  • 通过以上步骤,开发者可以方便地使用ProGuard工具来优化和混淆Android项目,确保生成的包文件既小巧又安全。

    转载地址:http://zphfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现图像去雾算法(附完整源码)
    查看>>
    Objective-C实现图像灰度变换(附完整源码)
    查看>>
    Objective-C实现图像相似度平均值哈希算法(附完整源码)
    查看>>
    Objective-C实现图像移动(附完整源码)
    查看>>
    Objective-C实现图层混合算法(附完整源码)
    查看>>
    Objective-C实现图片dilation operation扩张操作算法(附完整源码)
    查看>>
    Objective-C实现图片erosion operation侵蚀操作算法(附完整源码)
    查看>>
    Objective-C实现图片的放大缩小(附完整源码)
    查看>>
    Objective-C实现图片腐蚀(附完整源码)
    查看>>
    Objective-C实现图片膨胀(附完整源码)
    查看>>
    Objective-C实现图的邻接矩阵(附完整源码)
    查看>>
    Objective-C实现圆球的表面积和体积(附完整源码)
    查看>>
    Objective-C实现在Regex的帮助下检查字谜算法(附完整源码)
    查看>>
    Objective-C实现均值滤波(附完整源码)
    查看>>
    Objective-C实现埃拉托斯特尼筛法算法(附完整源码)
    查看>>
    Objective-C实现域名解析(附完整源码)
    查看>>
    Objective-C实现域名转IP(附完整源码)
    查看>>
    Objective-C实现培根密码算法(附完整源码)
    查看>>
    Objective-C实现基于 LIFO的堆栈算法(附完整源码)
    查看>>
    Objective-C实现基于 LinkedList 的添加两个数字的解决方案算法(附完整源码)
    查看>>