androidstudio 拆包时设置dex方法个数

2023-05-16

前言

Android应用程序,最终发布成一个apk,安装到手机上。 apk文件随便用一个解压缩文件打开,可以看到里面有一个classes.dex文件,这就是之前工程中所有的代码,以及所有依赖的jar包全部合并在一起生成的一个dex文件。关于dex文件是什么,可以自己去科普一下。

google当初在设计dex文件的时候,限制了dex文件中最大的函数个数为65536(unsigned short),如果超出这个限制,那么如果不采用特殊处理,打包的时候,就会抛出:
org.jf.util.ExceptionWithContext: Unsigned short value out of range: *
类似这样的错误**

对于游戏开发来说,我们目前主要的问题是, 一个游戏本身采用的可能是unity或者cocos2dx等游戏引擎开发, 纯粹的Android代码并不多, 但是由于目前手机游戏需要接入很多渠道SDK, 部分渠道SDK的jar包是相当大的,里面对应的函数数量自然也少不了。这就会导致,这些渠道SDK在集成到游戏中,我们再次打包,会出现函数数量越界的问题。

另一个问题,就是我们除了接入渠道SDK之外,往往还需要同时接入统计,分享,推送等其他功能性SDK,所有这些jar包加起来,函数数量越界的可能就更大了。

解决方案

在app–>build.gradle的DexOptions里增加了additionalParameters 参数来配置dx的参数。
我们来试下:
首先在app的build.gradle里的DexOptions里面增加以下内容:

dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
        additionalParameters = ['--multi-dex',
                                '--set-max-idx-number=30000']
}

注意:需要升级jdk,把jdk升级到1.8

测试了打出的包,在指定dex内方法数量30000的情况下,打出五个dex,主dex内方法数量为30000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

androidstudio 拆包时设置dex方法个数 的相关文章

随机推荐

  • Godot官网新闻翻译 - 2015年

    本文是 Godot官网新闻翻译 系列的第1篇 xff0c 该系列旨在翻译和汇总Godot官网所发布的所有新闻 让更多英文不好的童鞋可以领悟官方新闻中的重要信息和真谛 官网新闻地址 xff1a https godotengine org ne
  • 一文简单了解并构建DockerFile

    GreatSQL社区原创内容未经授权不得随意使用 xff0c 转载请联系小编并注明来源 GreatSQL是MySQL的国产分支版本 xff0c 使用上与MySQL一致 作者 xff1a 蟹黄瓜子文章来源 xff1a GreatSQL社区投稿
  • 更新sudo apt source提示sources.list拼写错误的解决方法

    如果sudo apt uodate 更新失败 xff0c 多半是源的问题 xff0c 这是轻的症状 xff0c 根据提示 xff0c 把产生错误错误源去掉就行了 xff0c 但是情况较复杂怎么办 xff1f 如果有一天 xff0c 你在终端
  • 静态库和动态链接库的安装(Windows环境)

    库的安装 xff1a freeglut为例 1 在SourceForge下载freeglut库 xff0c 其中包括include src文件夹和CMakesLists txt freeglut download SourceForge n
  • C++ share_ptr 循环引用问题浅析

    share ptr指针涉及到循环引用问题会因为share ptr指针对应的use count 无法清0 xff0c 导致内存泄露 xff0c 直接上例子 xff1a class S B class S A public shared ptr
  • 树莓派raspberry pi更换国内镜像

    有时候使用sudo apt get 和pip install 安装软件和一些库的时候下载速度简直是龟速如下图 xff1a xff0c 是因为在系统默认状态下 xff0c 安装软件会选择从国外的服务器上下载软件 默认地址是http raspb
  • 将SQL Server的任意记录转换为JSON格式(JQGRID) -- 支持SQL 2005

    从SQL 2008开始 xff0c SQL Sever已经支持JSON数据 xff0c SQL 2016已经对JSON数据的处理支持非常完善 对于SQL 2016以上版本的用户 xff0c 可以直接调用原生方法 xff0c 效率更高 因客户
  • gradle安装

    Gradle是一个主要用于Java项目的通用构建工具 它结合了Ant和Maven的最佳功能 与使用XML进行脚本编写的前辈不同 xff0c Gradle使用Groovy xff0c 这是一种动态的 xff0c 面向对象的Java平台编程语言
  • 树列表控件CTreeListCtrl类

    翻译来源 xff1a https www codeproject com Articles 2913 A Tree List Control 作者 xff1a TigerX 下载源文件 102 Kb 下载演示文件 54 6 Kb 介绍 这是
  • 2019xupt-acm校赛 题解(C.给你一个666)by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi 39 an University of Posts amp Telecommunications School Contest 前面的话 有幸参与2019XUPT ACM校赛出题和裁判工作 过程
  • 【安装】在Windows下安装Debian(双系统)

    安装 一 前期准备二 Rufus制作启动盘三 修改BIOS四 以U盘启动安装Debian五 设置分区 一 前期准备 1 一个至少8G的U盘 2 U盘引导制作工具 我用的Rufus 链接 3 Debian的iso镜像 我用的清华镜像 点进链接
  • Swift 四种实现单例的方式

    单例模式 单例模式是设计模式中最简单的一种 xff0c 甚至有些模式大师都不称其为模式 xff0c 称其为一种实现技巧 xff0c 因为设计模式讲究对象之间的关系的抽象 xff0c 而单例模式只有自己一个对象 当你只需要一个实例的时候需要使
  • python之字符串切片为列表

    函数名说明A replace old new count 将字符串A里的old替换为new xff0c 替换次数为counta join A 将字符串序列A之间插入字符aA split sep xff0c count 将字符串A切片输出为列
  • 用python实现最简单简单的计算器

    直接上代码 xff1a 密码是123 过程 体验 收获及自我评价 xff0c 本人在活动的具体工作可以输入1000字 import os 让解释器停住 xff0c 引用os模块 print 34 欢迎使用计算程序 34 print 34 请
  • Android 一键分享功能

    之前在做项目时遇到这么个需求 xff0c 就是用户点击Menu或者一个按钮可以把文字分享到各大微博例如新浪微博 腾讯 人人 开心 校内等 现在我给大家演示一下 xff08 一 xff09 先建一个工程文件ShareDemo xff08 二
  • android listview单击事件

    今天我们来学习下listview 单击事件 xff0c 这在开发中是经常用的组件之一 1 新建一个项目 xff0c 名为ListViewDemo 2 布置布局文件main xml lt xml version 61 34 1 0 34 en
  • android 焦点事件

    今天介绍下android中的焦点事件 xff0c 之前在项目有用到过 这块不是很难 xff0c 大家跟着过一遍吧 xff0c 用到的时候直接把我下面这段代码拷贝过去就ok了 1 建一个工程 xff0c 名为TestFocus 2 在布局文件
  • android 绘图、自定义组件

    我们在开发当中很多时候都需要自定义组件 xff0c 通过自定义组件 xff0c 可以随心所欲定制酷炫的效果 下面将演示自定义绘图组件 我们要绘制一个红色的线条 1 建立工程文件 xff0c 名为TouchDemo 2 布局文件 lt xml
  • SVN常用命令详解

    命令的使用 1 检出 svn co http 路径 目录或文件的全路径 本地目录全路径 username 用户名 password 密码svn co svn 路径 目录或文件的全路径 本地目录全路径 username用户名 password
  • androidstudio 拆包时设置dex方法个数

    前言 Android应用程序 xff0c 最终发布成一个apk xff0c 安装到手机上 apk文件随便用一个解压缩文件打开 xff0c 可以看到里面有一个classes dex文件 xff0c 这就是之前工程中所有的代码 xff0c 以及