记录Multidex介绍和使用 为什么要用记录呢,因为我从开始接触Android时我们的项目就在65535的边缘。不久Google就出了multidex的解决方案。...(this); } } 构建应用后,Android 构建工具会根据需要构建主 DEX 文件 (classes.dex) 和辅助 DEX 文件(classes2.dex 和 classes3.dex...multiDexKeepProguard 属性 multiDexKeepProguard 文件使用与 Proguard 相同的格式,并且支持整个 Proguard 语法。...如需了解有关 `Proguard 格式和语法的详细信息,请参阅 Proguard 手册中的 Keep Options 一节。...您在 multiDexKeepProguard 中指定的文件应该在任何有效的 ProGuard 语法中包含 -keep 选项。例如,-keep com.example.MyClass.class。
通过 ProGuard 移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付的 APK 不含有未使用的代码。...multiDexKeepProguard 属性 multiDexKeepProguard 文件使用与 Proguard 相同的格式,并且支持整个 Proguard 语法。...如需了解有关 Proguard 格式和语法的详细信息,请参阅 Proguard 手册中的 Keep Options 一节。...不过,由于是以定制形式实现配置,保留了使用与发布相适的最低 API 级别和 ProGuard 代码压缩执行正常构建的能力。...Application 子类(这样,只有适用于 API 级别 20 和更低版本的清单文件会扩展 MultiDexApplication 类或调用 MultiDex.install(this))。
通过ProGuard移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付的 APK 不含有未使用的代码。...multiDexKeepProguard 属性 multiDexKeepProguard 文件使用与 Proguard 相同的格式,并且支持整个 Proguard 语法。...如需了解有关 Proguard 格式和语法的详细信息,请参阅 Proguard 手册中的 Keep Options 一节。...不过,由于是以定制形式实现配置,保留了使用与发布相适的最低 API 级别和 ProGuard 代码压缩执行正常构建的能力。...Application 子类(这样,只有适用于 API 级别 20 和更低版本的清单文件会扩展 MultiDexApplication 类或调用 MultiDex.install(this))。
这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件。...minifyEnabled false表示工程打包时,不进行混淆 minifyEnabled false //混淆配置文件 proguardFiles getDefaultProguardFile('proguard-android.txt...'), 'proguard-project.txt' // 签名配置 signingConfig signingConfigs.myConfig } } afterEvaluate...\support\multidex\library\libs)下找到android-support-multidex.jar这个文件 最好单独拷贝一份出来到一个目录下 ,然后工程上右键 build path...gradle build --info 可能编译时间会有点长,耐心等待 ,倘若编译运行成功,会提示 Build Success ,这是我们可以在工程的目录中发现多了两个文件夹 项目目录多了 build 和gradle
文章目录 一、Dex 打包设置 1、多 Dex 支持 2、Dex 分包设置 3、开发和产品风格设置 ( 非必须 ) 二、完整 build.gradle 配置 1、build.gradle 配置 2、...android { defaultConfig { // 维度版本号 flavorDimensions "1.0" } // 定义不同的开发和产品风格..." testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } // 定义不同的开发和产品风格...file("dex.keep") minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION
随着安卓平台的不断发展与壮大,市场上大而全的应用比比皆是,产品需求的变更累积和UI交互的极致追求,除了 resources 文件的俱增,在 Android Project 中依赖的 Library 和...1K 等于 1024,65536 刚好是 64K,为了便于称呼和使用,就将这个限制规则统称为 64K 方法数的引用限制。...我们可以使用 productFlavors 构建开发环境和正式环境的不同 flavors 来优化 multidex 的长时间编译问题。...{ release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt...'), 'proguard-rules.pro' } } } dependencies
其次,既然和 dex 没有关系,那在打包 dex 的时候为什么会报错。...DexOpt 是在第一次加载 Dex 文件的时候执行的,将 dex 的依赖库文件和一些辅助数据打包成 odex 文件,即 Optimised Dex,存放在 cache/dalvik_cache 目录下...实现原理也不复杂,主要分为三步: 环境检查,包括传入参数合法性检查,路径检查以及proguard环境检测等。...使用mainDexClasses.rules规则,通过Proguard的shrink功能,裁剪无关类,生成一个tmp.jar包。...当 BuildType 为 Release 的时候,执行的是 proguard{flavor}Release Task,该 task 将 proguard 混淆后的类打包成 jar 文件存在 build
注意:如果你的 APP 使用了继承 Application 的类,你需要重写attachBaseContext()方法并调用 MultiDex.install(this) 来启用 multidex 。...这个插件使用 Proguard 来分析你的项目并在 [buildDir]/intermediates/multi-dex/[buildType]/maindexlist.txt 文件中生成一个 app...如果你在本地的测试机上没有遇到这个问题,并不代表你的 APP 没有问题,我通过查看友盟的崩溃记录和使用一些真机测试平台来进行检查,通常情况下会有所发现。...其他错误和问题 比如首次安装启动时黑屏没有响应/ANR、安装时异常等,你可以参考文末的一些文章,此外你还可以参考 Android 必知必会-Android Splash 页秒开之细节处理 来优化启动体验...参考资料和推荐阅读: Android Multidex 遇到的问题 (推荐此文) Android的multidex带来的性能问题-减慢app启动速度 ClassNotFoundException 总结
MultiDex 是什么? 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。...原理 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 简单地来说,MultiDex 做的事情就是: 解压得到 dex 并进行 dexOpt...在此情况下,您应该通过 ProGuard 应用代码压缩以尽量减小 DEX 文件的大小,并移除未使用的那部分代码。...在 Facebook 的这个方案基础上,其实你不知道MultiDex到底有多坑 给出了一个优化后的方案。...Reference 配置方法数超过 64K 的应用 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 其实你不知道MultiDex到底有多坑
MultiDex 是什么? 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。...原理 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 简单地来说,MultiDex 做的事情就是: 解压得到 dex 并进行 dexOpt...在此情况下,您应该通过 ProGuard 应用代码压缩以尽量减小 DEX 文件的大小,并移除未使用的那部分代码。...在 Facebook 的这个方案基础上,其实你不知道MultiDex到底有多坑 给出了一个优化后的方案。 ?...Reference 配置方法数超过 64K 的应用 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 其实你不知道MultiDex到底有多坑
首先使用Android SDK Manager升级到最新的Android SDK Build Tools和Android Support Library R21。...然后进行以下两步操作: 1.修改Gradle配置文件,启用MultiDex并包含MultiDex支持: ``` android { compileSdkVersion 21 buildToolsVersion...Android 5.0和更高版本使用名为ART的运行时,它原生支持从APK文件加载多个DEX文件。...Multidex仍有一些限制: DEX文件安装到设备的过程非常复杂,如果第二个DEX文件太大,可能导致应用无响应。此时应该使用ProGuard减小DEX文件的大小。...Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB或16MB。当方法数量过多导致超出缓冲区大小时,会造成dexopt崩溃。
首先插播一条自己的广告——有些朋友可能都知道了,我最近创建了一个知识星球,在这里试了一周,发现私密圈子的效率果然比群要好很多,付费门槛过滤掉了大部分广告和没有意愿学习分享的人,希望在这里能聚集更多的热爱学习热爱分享的朋友...dalvik-dx 篇 gradle 插件中已经准备好了jarOfRoots和所有class文件,现在该dex上场了的。...ClassReferenceListBuilder 路径在: dalvik-6a8e552-dx/src/com/android/multidex/ClassReferenceListBuilder.java...里面最后一行就有调用,调用方式和刚才的gradle插件类似。...java -cp “$jarpath” com.android.multidex.MainDexListBuilder <img src="https://chart.googleapis.com/chart
Google 官方支持 Multidex 的 jar 包是 android-support-multidex.jar,该 jar 包从 build tools 21.1 开始支持。...查看这个脚本的源码,可以看到它主要做了下面两件事情: 1)调用 proguard 的 shrink 操作来生成一个临时 jar 包; 2)将生成的临时 jar 包和输入的文件集合作为参数,然后调用com.android.multidex.MainDexListBuilder...Proguard的官网执行步骤如下: ? 在 shrink 这一步,proguard 会根据 keep 规则保留需要的类和类成员,并丢弃不需要的类和类成员。...答案是,因为 proguard 做代码混淆时生成了一个混淆前后代码之间的 mapping 关系文件,我们只需要根据这个 mapping 文件进行映射,即可得到混淆后的主 dex 文件列表。...根据这些要求,我们研究了网上一些开源的代码(也包括 Google 官方 android-support-multidex.jar 的代码),然后经过改造和验证,实现了一种比较灵活的加载方案。
/ out/ # Gradle files .gradle/ build/ # Local configuration file (sdk path, etc) local.properties # Proguard...folder generated by Eclipse proguard/ # Log Files *.log # Android Studio Navigation editor temp files...APIs or Firebase) google-services.json # Freeline freeline.py freeline/ freeline_project_description.json
Firebase是一个由Google提供的后端服务平台,它可以快速地开发和部署iOS、Android和Web应用。...要使用React和Firebasee搭建一个实时聊天应用,需要以下几个步步骤:创建一个React项目,并安装Firebase和react-firebase-hooks作为依赖项。...使用Firebase Authentication来实现用户登录和注册功能,并使用react-firebase-hooks/auth来获取用户状态。...2.安装Firebase和react-firebase-hooks在src文件夹下打开package.json文件,在dependencies部分添加以下两行代码:"firebase": "^9.0.0...", "react-firebase-hooks": "^0.7.0"这两行代码表示我们要安装最新版本的Firebase SDK(9.x)和react-firebase-hooks库(0.7.x)。
applyResourceMapping baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt" // 构建基准包和补丁包都要指定不同的...//applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard...,你需要在dependencies中进行配置compile "com.android.support:multidex:1.0.1"才可以使用MultiDex.install方法; SampleApplicationLike...Application,主要是为了降低接入成本,我们插件会动态替换AndroidMinifest文件中的Application为我们定义好用于反射真实Application的类(需要您接入SDK 1.2.2版本 和...orientation|screenSize|locale" android:theme="@android:style/Theme.Translucent" /> 第五步:混淆配置 为了避免混淆SDK,在Proguard
release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION...basic_app_dependencies.each { k, v -> implementation v } implementation "androidx.multidex...:multidex:2.0.1" implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation
这里需要强调的是,Dex和Jar一样是一个归档文件,里面仍然是Java代码对应的字节码文件。...(2) 分割Dex,多工程: 把所需要的.class文件或者是Jar文件和一些源码一起编译生成一个Jar文件。然后使用Android SDK提供的dx工具把Jar文件转成Dex文件。...multidex/MultiDex$V4.class android/support/multidex/MultiDex.class android/support/multidex/MultiDexApplication.class...Multidex仍有一些限制: DEX文件安装到设备的过程非常复杂,如果第二个DEX文件太大,可能导致应用无响应。此时应该使用ProGuard减小DEX文件的大小。...Android 2.2和2.3的缓冲区只有5MB,Android 4.x提高到了8MB或16MB。当方法数量过多导致超出缓冲区大小时,会造成dexopt崩溃。
上一篇文章说道tinker的热更新,可是少了点补丁包的管理,这一篇文章介绍的bugly就是增强版的,更加方便你集成tinker和包括了补丁包的后台管理。 为什么使用 Bugly 热更新?...'), 'proguard-rules.pro' signingConfig signingConfigs.release } } } dependiences...implementation 'com.tencent.bugly:crashreport_upgrade:1.3.4' implementation 'com.android.support:multidex...//applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可选,设置mapping文件,建议保持旧apk的proguard...public void onBaseContextAttached(Context base) { super.onBaseContextAttached(base); MultiDex.install
false" // 不显示Log minifyEnabled false //混淆 proguardFiles getDefaultProguardFile('proguard-android.txt...'), 'proguard-rules.pro' signingConfig signingConfigs.release //签名 } debug { signingConfig...implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:multidex
领取专属 10元无门槛券
手把手带您无忧上云