首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android&Java技术

    Multiple dex files define Lokhttp3internalwsWebSocketProtocol

    Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一: ? ,而 ad library有依赖了一个 http library,这是一个我用okhttp封装的网络请求库,而 ad library 又依赖了 compile ‘com.squareup.okhttp3: 要想使用 okhttp 是不可以的,因为使用implementation 对于ad library 是不可见的,所以ad library又依赖了一次 compile ‘com.squareup.okhttp3: 但是依赖冲突的问题确实还是存在的… 于是乎,网上搜了一篇帖子: https://stackoverflow.com/questions/45111497/android-gradle-failed-multiple-dex-files-define-okhttp

    58740发布于 2020-02-27
  • 来自专栏韩曙亮的移动开发专栏

    【Android 安全】DEX 加密 ( DEX 加密原理 | DEX 加密简介 | APK 文件分析 | DEX 分割 )

    文章目录 一、DEX 加密简介 二、APK 文件分析 三、DEX 分割 一、DEX 加密简介 ---- Proguard 混淆弊端 : 之前使用 Proguard 混淆 后的代码 , 虽然降低了代码的可读性 , 但是如果多花点时间和精力 , 还是可以读懂的 , 因此这里继续进行下一个操作 , DEX 加密 , 经过加密后的 DEX 文件 , 就 无法被反编译工具反编译出来了 ; DEX 加密 : 经过加密后的 DEX 文件 , 就是被破坏了原有格式的 DEX 文件 , 该 DEX 文件不是标准的 DEX 文件 ; Android 启动从 Application 开始 , 然后会查找主 Activity 界面 : 封装 Java / Kotlin 代码 ; 三、DEX 分割 ---- classes.dex 可以进行分割 : 不分割的情况 : 一般情况下 所有代码都在一个 DEX 下 ; 分割的情况 : 该 DEX 可以分割成两部分 , 其中 一个只包含启动 Application , 另一个 DEX 包含其他代码 ; DEX 加密解密 : 分割后加密 : 分割后的 DEX , 只包含启动

    1.9K00编辑于 2023-03-28
  • 来自专栏全栈程序员必看

    dex文件详解

    1、基本概念 能被DVM虚拟机识别,加载并执行的文件格式 2、生成dex文件 1、通过IDE自动帮我们build 生成 2、手动通过dx命令去生成dex文件 3、在手机上手动运行dex文件 3、 /70/gravity/SouthEast) 然后生成dex文件 ! /70/gravity/SouthEast) 执行dex文件,首先得通过adb命令来登陆到手机中,进入手机的控制台,最后通过dalvikvm来执行dex文件 ! ,无间隙 3、整个应用中所有的java源文件都放在一个dex中(不考虑android multidex) ! /70/gravity/SouthEast) 6、dex文件和class文件的异同 1、本质上他们都是一样的,dex是通过class文件演变而来 2、class文件存在许多冗余的信息,dex去冗余,并整合

    1.1K20编辑于 2022-09-14
  • 来自专栏全栈程序员必看

    打开DEX文件

    下载dex2jar软件 解压下载的文件 将 APK解压出来的文件夹下的 classes.dex 文件复制到 解压下的dex2jar文件下. 在dex2jar文件夹目录处输入cmd 复制“d2j-dex2jar.bat classes.dex” 右键粘贴 会生成一个.jar文件 下载jd-gui软件 解压后打开软件 拖入.jar文件 手机端下载MT管理器app 左上角三条杠——-安装包提取——-定位 然后点击安装包——查看—–classes.dex———dex++编辑器打开 http://q2.qlogo.cn/headimg_dl

    8.2K20编辑于 2022-09-14
  • 来自专栏全栈程序员必看

    android加载dex方法,android Dex文件的加载

    上篇文章讲到了apk的分包,通过multidex构建出包含多个dex文件的apk,从而解决65536的方法数限制问题《Android Dex分包》。 在dalvik虚拟机上,应用启动时只会加载主dex文件,而从dex需要我们手动去加载,那么问题来了,如何手动加载一个dex文件? file.getName(); if (name.endsWith(DEX_SUFFIX)) { // Raw dex file (not inside a zip/jar). try { dex [elements.size()]); } files为dex文件的file对象list,判断是dex文件之后调用loadDexFile方法加载dex文件,返回DexFile对象。 所以之前在dex分包的时候,我们通过PathClassLoader获取已加载的保存在pathList中的dex信息,然后利用DexClassLoadder加载我们指定的从dex文件,将dex信息合并到pathList

    2.8K20编辑于 2022-09-07
  • 来自专栏全栈程序员必看

    dex文件打开

    其中fileName是输入要打开的dex文件名称,当然它是包括文件路径的;pArchive是打开这个文件后用来表达dex文件内容的对象。 由上面分析可知,dex文件是压缩成zip文件,这样可以减少占用空间。dex文件在系统里是怎么样打开的过程呢? )在处理Dex文件时,会调用函数集合:dvm_dalvik_system_DexFile,这个函数集合里,主要有如下函数: constDalvikNativeMethod dvm_dalvik_system_DexFile , &pRawDexFile, false) == 0) { LOGV(“Opening DEX file ‘%s'(DEX)\n”, sourceName); pDexOrJar = (DexOrJar Dex文件,然后打开这个文件。

    4.6K10编辑于 2022-09-14
  • 来自专栏向治洪

    dex分包方案

    Android2.3及以前版本用来执行dexopt(用于优化dex文件)的内存只分配了5M 2. 一个dex文件最多只支持65536个方法。 简单来说,其原理是将编译好的class文件拆分打包成两个dex,绕过dex方法数量的限制以及安装时的检查,在运行时再动态加载第二个dex文件中。 文中说得比较简单,我们来完善一下该方案:除了第一个dex文件(即正常apk包唯一包含的Dex文件),其它dex文件都以资源的方式放在安装包中,并在Application的onCreate回调中被注入到系统的 分好包之后就要开始生成dex文件,首先打包第一个dex文件:  ? 由这里将${classes}(该文件夹下都是要打包到第一个dex的文件)打包生成第一个dex。 由于第二个dex包是在Application的onCreate中动态注入的,如果dex包过大,会使app的启动速度变慢,因此,在dex分包过程中一定要注意,第二个dex包不宜过大。 2.

    1.3K50发布于 2018-02-01
  • 来自专栏韩曙亮的移动开发专栏

    【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )

    文章目录 一、不同版本的 DEX 加载 1、Android 8.0 版本 DEX 加载分析 2、Android 6.0 版本 DEX 加载分析 3、Android 5.0 版本 DEX 加载分析 一、 suppressedExceptions); } } 参考源码地址 : 6.0.1_r16/xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java 3、 方法 生成上述 DEX 数组 ; makeDexElements 方法有 3 个参数 ; 5.0 系统 Element[] dexElements 生成 代码示例如下 : ( 只展示相关源码 ) optimizedDirectory, suppressedExceptions); } } 参考源代码 : 5.1.0_r3/ xref/libcore/dalvik/src/main/java/dalvik/system/DexPathList.java 分析上面 3 个版本的 DEX 加载源码 , 发现每个版本加载方法不同

    1.3K00编辑于 2023-03-28
  • 来自专栏全栈程序员必看

    dex文件介绍

    文章目录 1, 什么是dex文件 2, 如何生成一个dex文件 3, dex文件的作用 4, dex文件格式详解 5, 与class对比 1, 什么是dex文件 能被 dvm识别, 加载并执行的文件格式 生成class文件 – dx --dx --output Hello.dex Hello.class 生成dex文件 手机中手动运行dex文件 – adb push Hello.dex /sdcard push到手机sd卡目录下 – adb shell 进入手机shell – dalvikvm -cp /sdcard/Hello.dex Hello 执行dex文件 3, dex文件的作用 记录整个工程中所有类文件的信息 4, dex文件格式详解 是一种8位字节的二进制流文件 各个数据按顺序紧密的排列, 无间隙 整个应用中所有class源文件都放在一个dex文件中 dex文件结构图: dex文件头: dex_string_ids: 记录整个应用中的字符串 struct type_id_list dex_type_ids: 类型索引 struct proto_id_list dex_proto_ids

    1.4K30编辑于 2022-09-07
  • 来自专栏全栈程序员必看

    dex文件格式

    result=0xc0&0x7f 第2个字节0x83大于0x7f,表示需要用到第3个字节。 result2 = result1 + (0x83 & 0x7f) << 7 第3个字节0x92大于0x7f,表示需要用到第4个字节。 result3 = result2 + (0x92 & 0x7f) << 14 第4个字节0x25小于0x7f,表示到了结尾。 result4 = result3 + (0x25 & 0x7f) << 21 最后计算结果为0x40 + 0x180 + 0x48000 + 0x4a00000 = 0x4a481c0 2.dex文件整体结构 3.dex文件结构分析 Dalvik虚拟机解析dex文件的内容,最终将其映射成DexMapList数据结构。

    2.2K30编辑于 2022-09-13
  • 来自专栏全栈程序员必看

    java打开dex文件_dex文件反编译工具(Dedexer)

    dedexer是Android DEX文件反汇编工具,目前网上唯一一个反编译dex文件的反编译工具。如果你用过ant编译java程序,那么编译Dedexer是一件非常简单的工作。 该软件要求您的电脑要装有Java环境(进入下载jre.Java环境)才能正常使用 dedexer与dexdump相比至少有3个优点 一,不需要在android模拟器中运行。 -o – 指定生成日志文件(dex.log). 运行结果,出现一个使用帮助.仔细阅读后试了下: java -jar ddx.jar -o -D -d java -jar ddx1.5.jar -o -D -d c:\dex\gen c:\dex\classes.dex 示例: D:\WINDOWS\system32> java -jar ddx1.5.jar -o -D -d c:\dex\gen c:\dex\classes.dex Processing com/

    2.1K30编辑于 2022-09-14
  • 来自专栏全栈程序员必看

    android之Unable to execute dex: Multiple dex files define「建议收藏」

    出现了异常Dex Loader:Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice libs下引入的jar包,并删除android dependence下的相应的jar包 2.右击android项目,build path->configure build path… 3.

    28410编辑于 2022-07-20
  • 来自专栏韩曙亮的移动开发专栏

    【Android 安全】DEX 加密 ( 支持多 DEX 的 Android 工程结构 )

    文章目录 一、支持多 DEX 的 Android 工程结构 一、支持多 DEX 的 Android 工程结构 ---- 在 支持多 DEX 的 Android 工程 中 , 有 3 个 Module , 如下图 , app 是主应用 , 其 Module 类型是 “Phone & Tablet Module” , multiple-dex-core 是 Android 依赖库 , 其作用是解密并加载多 DEX 文件 , 其 Module 类型是 “Android Library” , multiple-dex-tools 是 Java 依赖库 , 其类型是 “Java or Kotlin Library ” , 其作用是用于生成主 DEX ( 主 DEX 的作用就是用于解密与加载多 DEX ) , 并且还要为修改后的 APK 进行签名 ;

    56000编辑于 2023-03-28
  • 来自专栏移动开发专栏

    Cause: com.android.dex.DexException: Multiple dex files define Lcom

    jar包 解决: 检查项目,删除重复的jar包即可 stackoverflow:http://stackoverflow.com/questions/7870265/unable-to-execute-dex-multiple-dex-files-define-lcom-myapp-rarray

    41630编辑于 2022-06-10
  • 来自专栏韩曙亮的移动开发专栏

    【Android 热修复】热修复原理 ( 修复包 Dex 文件准备 | Dex 优化为 Odex | Dex 文件拷贝 | 源码资源 )

    文章目录 一、修复包 Dex 文件准备 二、Odex 优化 三、Dex 文件拷贝 四、 源码资源 一、修复包 Dex 文件准备 ---- 异常代码 : 故意写一个异常代码 , 并执行该代码 , 肯定会崩溃 文件 ) 二、 将 Java 字节码文件打包到 Dex 文件 章节流程 , 将更新后的 kim.hsl.hotfix.HotFixTest 类打包成 dex 文件 ; 进入到 " HotFix\app " 文件 ; ( 可以参考 【Android 安全】DEX 加密 ( Java 工具开发 | 生成 dex 文件 | Java 命令行执行 ) 博客内容) 将编译好的 update.dex 放置到 SD 卡根目录中 , 下一步开始使用该 dex 文件进行热修复 ; 二、Odex 优化 ---- 修复包就是一个 Dex 文件 , 热修复框架虽然给生成了一个 .patch 文件 , 其本质还是将 Dex 文件进行了优化 , 将 Dex 文件转为 Odex 文件 , 系统查找类时 , 加载 Dex 速度很慢 , 将 Dex 优化为 Odex , 从 Odex 中取 Class 字节码速度要更快一些 ;

    1.2K10编辑于 2023-03-29
  • 来自专栏用户6296428的专栏

    浅谈 Android Dex 文件

    youzan 7: putfield #3 // Field helloString:Ljava/lang/String; 10: main(java.lang.String[]); Code: 0: new #4 // class Hello 3: 0: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream; 3: String;)V' access : 0x0009 (PUBLIC STATIC) code - registers : 3 Dex文件的具体格式 现在来分析一下 Dex 文件的具体格式,就像 MP3,MP4,JPG,PNG 文件一样,Dex 文件也有它自己的格式,只有遵守了这些格式,才能被 Android 运行时环境正确识别

    95020发布于 2020-08-25
  • 来自专栏全栈程序员必看

    class, classloder, dex 详解

    dex文件的作用 dex文件的作用是记录整个工程(通常是一个Android工程)的所有类文件的信息。 dex文件的结构 8位字节的二进制流文件 各个数据紧密排列,无间隙,减少了文件体积,加快加载速度 整个工程的类信息都存放在一个dex文件中(不考虑dex分包的情况下) class文件与dex文件的比较 本质上都是一样的,都是二进制流文件格式,dex文件是从class文件演变而来的 class文件存在冗余信息,dex文件则去掉了冗余,并且整合了整个工程的类信息。 DexClassLoader:与Java中的Customer ClassLoader类似,主要加载自定义路径下的APK或者JAR中的字节码文件(Android中主要是指dex文件,即classes.dex com.nan.loadapkdemo-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.nan.loadapkdemo-1/split_lib_slice_3_

    69710编辑于 2022-07-20
  • 来自专栏全栈程序员必看

    android .dex文件探究

    (int i,int j){ int e = 3; return e+i+j; } public static void main(String 这样就会生成DEX.dex文件,如果出现does not match path 的错误,就,这样执行: D:\SDK\build-tools\27.0.1\dx --dex --output=DEX.dex com\example\asus1\rexiufu\DEX.class 然后我们使用010 Editor来打开这个DEX.dex文件 DEX文件结构 我们先看Header: 文件头包含了dex 目前,dex的魔数固定为dex.035 然后第二个,checksum,它是dex文件的校验和,通过它可以判断dex文件是否被损坏或者被篡改。 这里fieldIdsSize的大小为3,fieldIdsOff的值为“58 01 00 00 ”: 又涉及到有个数据结构: struct DexFieldId{ u2 classIdx;

    82540编辑于 2022-09-14
  • 来自专栏刘晓杰

    dex文件字节码解析

    这一篇解析dex文件.还是由上一篇文章MainActivity生成的dex文件.dex文件比较大,我就不贴16进制代码了,大致讲一下具体怎么操作.由于手工解析太困难了,所以我就借助代码和两篇参考文章来解析的 Android逆向之旅---解析编译之后的Dex文件格式 Android dex文件解析 接下来开始解析. 1.头文件 头文件格式包含magic, checksum,file_size等信息,但是要注意他们都是小端数据 = 1000 && i <= 2000) { // System.out.println(string); } } } 3. 文件比class文件要复杂得多.一方面是小端排列,另一方面需要寻址.最重要的一点是,class文件的类索引里面所有的信息都是直接排进去的,但是dex文件里面的类都是存的索引,dex文件更为紧凑.也就是意味着 ,如果需要修改dex文件,那么他的成本会比修改class文件难得多

    89510发布于 2020-06-02
  • 来自专栏ppjun专栏

    Dex热修复原理

    今天我们主要介绍dex这种。 热修复包括两个部分 从远程端下载修复好bug的补丁包 客户端安装补丁包,加载补丁包的类。 使用android�类加载器,在类没被加载到模拟器前(一般在application热修复,如果类已加载,再去记载相同的类就无效了)然后先加载补丁dex,再去加载原来的app里面的dex,因为加载过的类 /包名里面的dex) DexClassLoader 可以加载任意目录下的dex/jar/apk/zip. 最后在DexPathList的findclass方法,将Element的数组每个Element对象的dex加载成class。 所以我们在什么时候插入补丁包的dex呢,就在Dexpatchlist类的findclass方法里面。将补丁的Elements数组加上原来的Elements数组,一起循环获取dex返回class。

    1.4K20发布于 2018-09-05
领券