首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android dex文件64k限制解决办法

这些变化,除了会导致打包出的 APK 文件越来越大之外,当项目中java代码包含的方法数(method count)超出一个峰值时,编译过程中就会出现如下错误: 较早版本的编译系统中,错误内容如下: Conversion..."4g" } } 添加这些配置后,编译工具会构建出一个主 DEX 文件(classes.dex)和其他附属 DEX 文件(classes2.dex,classes3.dex 等,如果需要的话)...Dex 文件出现的 string 默认是 4 个字节即 16 位大小的 int 类型的数字引用使用的,即单个 Dex 文件最多只能引用 2^16 个 strings,当你的项目中出现超过这个最大数字的字符串引用...使用 Android Studio APK Analyzer ,我们至少能够做到: 查看APK压缩文件中各个子文件的大小(如DEX和resource文件) 理解DEX文件的结构 快速查看APK文件的版本信息...(直接查看AndroidManifest.xml内容) 直观地比较两个APK文件内容 Android-Studio-APK-Analyzer-Samples.png 开发阶段使用Android Studio

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

APK 瘦身优化

瘦身 主要是下载转换率提高 头部App都有Lite版本 渠道合作产商要求 APK 分析工具 ApkTool 反编译工具 官网:https://ibotpeaches.github.io/ApkTool...apktool d students.apk Analyze apk Android studio 2.2之后使用 - 查看apk组成大小,各资源占比 - 查看dex文件组成 - 可以进行apk...classes.dex:包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。 AndroidManifest.xml:包含核心Android清单文件。...优化res,assets文件 手动lint检查,手动删除无用资源 在Android Studio中打开“Analyze” 然后选择"Inspect Code..."...如果你的dex文件太大,检查是否引入了重复功能的第三方库(图片加载库,glide,picasso,fresco,image_loader,如果不是你一个人单独开发完成的很容易出现这种情况),尽量做到一个功能点一个库解决

1.4K20

Android Studio 3.6 发布啦,快来围观

五、在APK分析器中反混淆类和方法字节码 使用APK Analyzer检查DEX文件时,可以按以下步骤对类和方法字节码进行模糊处理: 1.从菜单栏中选择 Build > Analyze APK。...2.在出现的对话框中,导航到要检查的APK,然后选择它。 3.点击打开。 4.在 APK 分析器中,选择要检查的 DEX 文件。...5.在DEX文件查看器中,为要分析的APK 加载 ProGuard 映射文件。 6.右键单击要检查的类或方法,然后选择Show bytecode。...启用此选项后,Android Studio会在同步过程中跳过构建任务列表,从而使Gradle Sync更快地完成并改善UI响应速度。...请记住,当IDE跳过构建任务列表时,Gradle面板中的任务列表为空,并且构建文件中的任务名称自动完成不起作用。

8.9K20

学(kao)习(bei)官方关于64k异常处理 ^_^

然后,构建系统会将所有 DEX 文件打包到 APK 中。...DEX 文件的过程相当复杂,如果辅助 DEX 文件较大,可能会导致应用无响应 (ANR) 错误。...如果启动期间需要的任何类未在主 DEX 文件中提供,那么应用将崩溃并出现错误 java.lang.NoClassDefFoundError。...这些设置会使适用于 Gradle 的 Android 插件执行以下操作: 执行 pre-dexing:将每个应用模块和每个依赖项构建为单独的 DEX 文件; 将每个 DEX 文件加入 APK,并且不做任何修改...这些设置的好处是,可以进行快速的增量式构建,因为只有修改过的模块的 DEX 文件才会在后续构建期间重新计算并重新打包。但是,这些构建APK 只能用于在 Android 5.0 设备上进行测试。

94720

Android 项目构建流程

如何实现整个构建的过程,对于每一个构建的步骤,都需要相应的功能模块来进行,比如Java Code编译,如何打成dex包等等,而这Android则为我们提供了相应的工具,在Android Studio命令行窗口中...然后我们只需要对构建文件按照自己的需求进行相应的配置,就可以构建出自己所需要的项目。 那么,整个Andoid项目的构建过程中,都执行了那些构建的任务呢?...通过dx工具将class文件转化为dex文件。 此时我们得到了经过处理后的资源文件和一个dex文件,当然,还会存在一些其它的资源文件,这个时候,就是将其打包成一个类似apk文件。...压缩 - 移除无效的类、属性、方法等 优化 - 优化bytecode移除没用的结构 混淆 - 把类名、属性名、方法名替换为晦涩难懂的1到2个字母的名字 当然它也只能混淆Java代码,Android工程中...class文件结构和dex文件结构比对。 image.png 第6步:apkbuilder 打包生成APK文件

1.2K00

Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^

前言 随着APP的一次又一次迭代,APP的体积也越来越大,这时候,会引发这么一个问题,早期的错误异常如下: ? 较新版本的 Android 构建系统虽然显示的错误不同,但指示的是同一问题: ?...然后,构建系统会将所有 DEX 文件打包到 APK 中。...如果启动期间需要的任何类未在主 DEX 文件中提供,那么应用将崩溃并出现错误 java.lang.NoClassDefFoundError。...这些设置会使适用于 Gradle 的 Android 插件执行以下操作: 执行 pre-dexing:将每个应用模块和每个依赖项构建为单独的 DEX 文件; 将每个 DEX 文件加入 APK,并且不做任何修改...这些设置的好处是,可以进行快速的增量式构建,因为只有修改过的模块的 DEX 文件才会在后续构建期间重新计算并重新打包。但是,这些构建APK 只能用于在 Android 5.0 设备上进行测试。

80910

Android Gradle】安卓应用构建流程 ( Java 源码编译 和 AIDL 文件编译 )

文章目录 一、安卓应用构建简介 二、Java 源码编译 三、AIDL 源码编译 一、安卓应用构建简介 ---- 使用 Android Studio 开发 Android 应用时 , 编译应用后在 Module...; 这些临时文件都是各种 Java JDK , Android SDK 工具执行产生的 , 如 : javac 执行产生 .class 字节码文件 , dx 工具打包字节码文件dex 文件 , aapt2...generated 主要是处理 配置信息 , Resources 资源文件 ; output 目录主要是输出 打包 后的 APK 安装包文件 ; 这些文件是应用编译过程中 , 生成的文件 , 熟悉安卓应用编译流程..., 和这些生成文件 , 对排查 Android 编译时错误很有帮助 ; 编译构建 APK 安装包 , 需要将 Java 代码 , AIDL 文件 , Asset 资源 , Resources 资源 ,..." 路径中 ; 安卓 APK 安装包中的 classes.dex 文件就是这么编译生成的 ; 三、AIDL 源码编译 ---- 如果项目中使用了 AIDL 跨进程访问 , 编译时就需要编译 AIDL

77230

构建工具看 Android APK 编译打包流程

那在Android Studio中,又是由谁来调度这些工具的呢?Gradle构建工具。...Gradle Task 在Android Studio中,我们运行一个debug包,Build控制台上就可以看到所有的构建相关task: Starting Gradle Daemon......比如 1)、在以前的AAPT版本,Android 清单文件出现错误的节点元素只会被忽略或警告,而AAPT2开始会对这些节点进行报错,比如: <activity android:name=".MainActivity...再谈谈这三个工具(dx/r8/d8)的区别: dx是最早的转换工具,用于转换class文件dex文件Android Studio 3.1之后,引入了D8编译器和 R8 工具。...Studio的更新日志中也找到了对应的说明: Android 构建团队不断进行更改以提高生成性能,在此版本中(Android Studio 3.6),我们将默认打包工具更改为 zipflinger 以进行调试生成

3.6K30

Android减包 - 使用APK Analyzer分析你的APK

本文是对 Analyze Your Build with APK Analyzer 的翻译。 Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。...(译注:新版APK和旧版APK之间文件大小的差异) 这里有3种方法访问APK Analyzer: 拖拽APKAndroid Studio的编辑窗口。 切换到Project视图,并且双击APK文件。...另外,这种显示形式提供了lint的能力,会在右上角显示警告、错误提示。图5显示了manifest文件错误提示。 ? 图5:manifest文件的一个错误。...查看代码和资源实体 不同的构建任务会改变APK文件最后的实体。比如混淆压缩规则能改变你最后的代码和图片资源。...Referenced Method列是DEX文件中引用的全部方法,它包含了你定义的方法、依赖的library、定义在标准Java和Android包中的方法。

2.8K60

Android Studio3.0新功能加快构建速度

Android Studio3.0很多新的功能,他们可以直接加快Android Studio构建速度从而加快开发效率,构建速度直接影响到开发效率,浪费时间即浪费生命,可以通过修改一些配置,优化下构建速度...Android Studio3.0之前的做法 通过配置DEX 资源缩短构建时间 gradle 添加以下代码 android { ......3.0之后的做法 使用用D8 编译器作为DEX 编译器 Android Studio3.0 包含了一个新的可选择DEX编译器,叫做D8,不久它将替换掉旧的DX编译器,现在可以选择使用新的编译器,DEX编译直接影响到...app的构建时间,dex文件大小,和运行时的性能,当使用新的D8编译器,D8编译更快和输出更小的.dex文件,并且相同或者更好的app运行时性能。...,在一些特定的场景很有用 runtimeOnly 不用来编译,但是会打包到apk,这个方式是deprecated(不推荐使用)的 参考 配置构建 Migrate to Android Plugin for

95920

Janus高危漏洞深度分析

但如果恶意攻击者用另一把私钥对APK签了名,并将这个修改过的APK对用户手机里的已有应用升级时,就会出现签名不一致的情况。因此,在正常情况下,Android的签名机制起到了防篡改的作用。...而判断的依据是通过文件头部魔术字(Magic Code)来判断。如果文件头部魔术字是“dex”则判定该文件Dex文件,如果文件头部的魔术字是“PK”则判定该文件Apk文件。...总而言之,Android在加载执行代码时,只认文件头,而安装验证签名时只认文件尾。 因此只要构造一个APK,从其头部看是一个Dex文件,从其尾部看,是一个APK文件,就可以实施攻击。...当然仅仅简单地将恶意dex放在头部,原apk放在尾部合起来的文件还是不能直接用来攻击。需要稍作修正。对于头部dex,需要修改DexHeader中的file_size,将其调整为合并后文件的大小。...Android平台的permission机制完全依赖于应用的签名,签名机制一旦突破,所有基于Android permission构建的安全体系将崩溃。

91330

Janus高危漏洞深度分析

但如果恶意攻击者用另一把私钥对APK签了名,并将这个修改过的APK对用户手机里的已有应用升级时,就会出现签名不一致的情况。因此,在正常情况下,Android的签名机制起到了防篡改的作用。...如果这个文件是一个Dex文件,则按Dex的格式加载执行,如果是一个APK文件,则先抽取APK中的dex文件,然后再执行。而判断的依据是通过文件头部魔术字(Magic Code)来判断。...如果文件头部魔术字是“dex”则判定该文件Dex文件,如果文件头部的魔术字是“PK”则判定该文件Apk文件。...总而言之,Android在加载执行代码时,只认文件头,而安装验证签名时只认文件尾。 因此只要构造一个APK,从其头部看是一个Dex文件,从其尾部看,是一个APK文件,就可以实施攻击。...Android平台的permission机制完全依赖于应用的签名,签名机制一旦突破,所有基于Android permission构建的安全体系将崩溃。

1.1K90

【译】使用 APK Analyzer 分析你的 APK

Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。使用APK Analyzer不仅能够减少你花在debug上的时间,而且还能减少你的APK大小。...(译注:新版APK和旧版APK之间文件大小的差异) 这里有3种方法访问APK Analyzer: 拖拽APKAndroid Studio的编辑窗口。 切换到Project视图,并且双击APK文件。...另外,这种显示形式提供了lint的能力,会在右上角显示警告、错误提示。图2显示了manifest文件错误提示。...图2:manifest文件的一个错误 查看代码和资源实体 不同的构建任务会改变APK文件最后的实体。比如混淆压缩规则能改变你最后的代码和图片资源。...Referenced Method列是DEX文件中引用的全部方法,它包含了你定义的方法、依赖的library、定义在标准Java和Android包中的方法。

2.4K50

「万物生长」一个APK从诞生到活跃在Android手机上

dex工具将会将第三方库和Class文件转化二进制dex文件。 apkbuilder工具将编译好的资源文件、源码的二进制文件以及assets下的资源文件内联最后生成我们见到的apk文件。...Java Compile + Dex / 代码编译 项目中其实我们更多时候已经用Android Studio提供的Build功能完成了,而这一样的能力提供方就包括Gradle。...往简单了说,就是一个项目自动构建工具呗。但是这样的一个工具在我们的开发过程中到底占到怎么一个不可或缺的位置呢?我们来纵观一下一个apk的打包流程就可以直到他干了什么事情了。...zipalign zipalign是一种归档对齐工具,可对 Android 应用 (APK) 文件提供重要的优化。 其目的是要确保所有未压缩数据的开头均相对于文件头部分执行特定的对齐。...使用时间点 必须在应用构建过程中的两个特定时间点之一使用 zipalign,具体在哪个时间点使用,取决于所使用的应用签名工具: 如果使用的是 jarsigner,则只能在为 APK 文件签名之后执行 zipalign

93520
领券