博客
关于我
Android google Multidex分包 gradle 3.1.0 坑
阅读量:512 次
发布时间:2019-03-07

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

在配置Android项目的multidex时,我们可能会遇到每个dex文件的方法数超出限制的问题。让我分享一下在不同版本gradle下的解决方案以及优化方法。

  • 问题背景为了优化应用性能,采用multidex将类和方法分散到多个dex文件中。但在百度加固过程中,每个dex文件的方法数限制为65530。之前版本的应用在某个dex中突破了这个限制,导致加固失败。

  • 初步解决方案通过查找资料,发现两种可能的解决方案:

    • 使用gradle选项--set-max-idx-number=48000。在Q一下版本中配置additionalParameters,逐一添加参数。
    • third-party工具dexknife,但未成功故选择第一种方法。
    1. 遇到的配置问题build.gradle中添加了additionalParameters,尝试设置--set-max-idx-number=48000。然而在较新版本的gradle(3.1.0及以上)中,这种设置不起作用。

    2. 版本对编译工具的影响了解到从gradle 3.1.0开始,宏类开始使用D8编译工具。D8的编译方式可能与旧版本不同,原有的分包配置方法在新版本下不可行。在低版本gradle(3.0.0及以下)中,分包和加固可行,但性能可能较低。

    3. 找到正确配置方法进一步研究发现,需要在build.gradle中使用dexOptions块,添加additionalParameters,指定--set-max-idx-number=value,这样可以在版本较低的gradle中实现。在较高版本gradle中,如果必须保留D8工具,则需要禁用D8编译选项android.enableD8=false,然后使用模拟器或特定编译规则。

    4. 实验与验证降低gradle到3.0.0,成功分包,方法数控制在48000以下。在较高版本gradle中,尝试两个选项:

      • 配置dexOptions,添加所需参数。
      • 禁用D8,使用rostoolchain,进行临时测试。
      1. 总结与建议目前,使用dexOptions配置正确可以解决问题。对于较高版本gradle,需 额外设置启用旧工具或者调整开发环境,如NDK。同时,测试不同配置下的性能差异,选择最优解。
      2. 通过以上步骤,成功实现了每个dex文件的方法数限制,可以使百度加固过程顺利进行。

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

    你可能感兴趣的文章
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>
    OpenCV与AI深度学习 | 使用 SAM 和 Grounding DINO 分割卫星图像
    查看>>