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

React-Native:在Android10和9(API28和29) dalvik.system.BaseDexClassLoader.findClass上崩溃

问题概述

React Native应用在Android 10(API 29)和Android 9(API 28)上崩溃,错误信息指向dalvik.system.BaseDexClassLoader.findClass。这个问题通常与应用的类加载机制有关,可能是由于Dex文件处理不当导致的。

基础概念

  1. Dex文件:Dalvik Executable (DEX) 文件是Android应用运行的基础,包含了编译后的字节码。
  2. BaseDexClassLoader:这是Android中用于加载DEX文件的类加载器。
  3. MultiDex:当应用的代码量超过65536个方法时,需要启用MultiDex支持,以便在一个应用中包含多个DEX文件。

相关优势

  • 性能优化:正确处理DEX文件可以提高应用的启动速度和运行效率。
  • 兼容性:确保应用在不同版本的Android系统上都能正常运行。

类型

  • 单Dex应用:应用代码量小于65536个方法。
  • MultiDex应用:应用代码量大于65536个方法,需要启用MultiDex支持。

应用场景

  • 大型应用:包含大量代码和第三方库的应用。
  • 兼容性要求高的应用:需要在多个Android版本上运行的应用。

问题原因

  1. Dex文件过多:应用中包含的DEX文件过多,导致类加载器无法正确处理。
  2. ProGuard或R8配置不当:代码混淆工具配置不当,导致某些类无法正确加载。
  3. 依赖冲突:第三方库之间存在依赖冲突,导致类加载失败。

解决方法

  1. 启用MultiDex支持: 在build.gradle文件中启用MultiDex支持:
  2. 启用MultiDex支持: 在build.gradle文件中启用MultiDex支持:
  3. 优化ProGuard或R8配置: 确保ProGuard或R8配置正确,避免误删重要类文件。例如:
  4. 优化ProGuard或R8配置: 确保ProGuard或R8配置正确,避免误删重要类文件。例如:
  5. 解决依赖冲突: 使用gradle dependencies命令检查依赖树,找出并解决冲突。例如:
  6. 解决依赖冲突: 使用gradle dependencies命令检查依赖树,找出并解决冲突。例如:
  7. 更新React Native和相关依赖: 确保使用最新版本的React Native和相关依赖库,以避免已知问题。

示例代码

代码语言:txt
复制
// build.gradle (Module: app)
android {
    defaultConfig {
        multiDexEnabled true
    }
}

dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.facebook.react:react-native:0.64.3'
}

参考链接

通过以上步骤,可以有效解决React Native应用在Android 10和9上因dalvik.system.BaseDexClassLoader.findClass导致的崩溃问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ubuntu 14.10 Server 安装 Jetty 9(Java服务引擎Web服务器)

这些组件都是开源的,也可用于商业用途分发。 Jetty被广泛用于多种项目产品,都可以开发环境生产环境中使用。Jetty可以很容易地嵌入到设备、工具、框架、应用服务器以及集群中。...Jetty特性 全功能并基于标准 开源与商用两可 灵活可扩展 小足迹 可嵌入 异步支持 企业弹性扩展 ApacheEclipse双重许可证 Ubuntu 14.10 server安装Jetty 9...,同时该目录下会创建一个名为java-8-openjdk-i386的符号链接,/usr/bin/java下也会相应创建符号链接。...现在你需要从这里下载Jetty9,在下载完成后,你需要使用以下命令来解压缩 $tar -xvf jetty-distribution-9.2.5.v20141112.tar.gz 该操作会将它解压到jetty-distribution...如果你看到了下面的错误 ** ERROR: JETTY_HOME not set, you need to set it or install in a standard location 你需要确保/

54320

Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改

《Android Studio开发实战 从零基础到App上线(第2版)》书后面的附录中给出了Android8Android9的主要特性说明,附录表格如下图所示: 不过附录表格只涵盖了常见的功能代码适配...,而Android8Android9的众多新特性还涉及到其它的代码适配,下面就补充列出Android8、Android9Android10的额外兼容处理说明: Android8.0 1、属性动画组合...1、Android10默认开启沙箱模式,即使已经动态申请了存储卡读写权限,在外部存储读写文件仍然失败。...此时要在代码中添加版本号判断,如果当前系统版本大于等于29,就不再开关WiFi,代码例子如下: if (Build.VERSION.SDK_INT >= 29) { // Android10...Android10及以下版本,该值默认为true,但从Android11开始该值默认为false。 设置代码示例如下: // 设置是否允许访问文件,如WebView访问存储卡的文件。

1K20
  • Android 10 Android 11的适配

    背景 最近在项目中着手做Android10Android11 适配时候,期间遇到了不少的坑。之前有专门写过qq、微信分享的适配。但是此次针对偏业务侧适配工作的时候还是碰到了一些新的问题。...close() } return false } 经过测试,29的下29 的设备下,分享qq、微信都成功了。...Android10 公共目录下的图片无法通过file:// 格式去访问,提示找不到路径。如glide加载、图片选择库、裁剪框架等等都会收到影响。...但是,这里有个坑: Android10不行,Android11又可以!!为什么? 因为Google改回来了,让Android11支持file://格式了。。。。 (wtf?...三、终极适配方案 Android10 开启标志位 :android:requestLegacyExternalStorage="true"来开启兼容模式,关闭分区适配,相当于targetSdkVersion

    1.3K41

    详解Android10的分区存储机制(Scoped Storage)适配教程

    发布Android10的时候官方明确表态: 2020年,主要平台版本将要求所有应用都使用分区存储,无论应用的目标 SDK 级别是多少。因此,您应该提前确保您的应用能够使用分区存储。...翻译成通俗语言,不管是使用requestLegacyExternalStorage=true的方式以兼容模式运行还是降低targetSDK都无法接下来2020年的Android(API 29)10更新中被豁免...应用自己创建的照片、视频音频(通过MediaStore访问)。 分区存储将影响Android10系统首次安装启动、且targetSdkVersion =29的应用。...影响范围: Android 10运行的应用: 1.targetSdkVersion <= 28,不受影响 2.如果targetSdkVersion = 29,默认情况应用外部存储可见性将被过滤...下面是关于分区存储权限其他相关项目的表格。

    3.3K32

    干货 | 携程Android 10适配踩坑指南

    2019 年 9 月 3 日,Google 发布了 Android 10 正式版。Android 10 聚焦移动创新、安全隐私和数字健康三大主题,全面打造最佳用户体验。 ?...因此,AndroidX本质其实就是对Android Support Library进行的一次升级。...允许其他应用访问,并且应用卸载后不允许删除的文件,文件需要存储共享目录,应用可以选择是否进行目录整改,将文件迁移到Android10要求的media集合目录。...的应用,其获取设备ID时,会直接返回null targetSdkVersion>=29 的应用,其获取设备ID时,会直接抛出异常SecurityException 如果您的App希望Android...开始,默认情况下,搭载 Android 10 或更高版本的设备,系统会传输随机分配的 MAC 地址。

    3.3K77

    8. 遇到不可抗力的自然灾害

    run-android可能出错是因为以前link的组件新生成的有冲突,重新运行一遍即可,如果报java编译类错误,尝试cd android && ....升级react-native到0.31.0##### ---- react-native毕竟新生,迭代速度那叫一个快,提醒使用的童鞋对于每一个release都要重视,至少要看一下release note...首先一个大的改动29版本,分离了启动程序,从以前的MainActivity.java变成现在的MainActivity.javaMainApplication.java,猜测目的是将主启动程序与启动视图分离...,MainActivity,MainApplication如果你已经运行react-native upgrade则无需改动 添加name属性,AndroidManifest.xml文件中添加如下 <application...return ( <ActivityIndicator size='large' color='#30A<em>9</em>DE

    1.2K30

    国内大厂都在使用哪些移动跨平台框架

    ,然后使用原生组件进行渲染,采用此方案的主要有React Native、Weex快应用;最后一种是使用自带的渲染引擎自带的原生组件实现跨平台,采用这种方案的主要是Flutter。...企业微信 3.0.13 9. 腾讯视频 8.0.0 10. 拼多多 5.3.0 11. 微信 7.0.11 12. QQ ✔ 8.2.9 13....网易云音乐 ✔ 7.0.20 29. 腾讯课堂 ✔ ✔ ✔ 4.8.5 30. 淘宝直播 ✔ 1.6.1 31. 交管12123 2.4.4 32....9、京东金融(v5.4.30) arm框架: armeabi-v7a 包含 kotlin 、andriodx 跨平台框架:react-native 分包数量高达 11 个 dex 10、腾讯动漫(...、抖音(v11.2.0) arm框架: armeabi-v7a 包含 kotlin、androidx 跨平台框架:react-native 分包数量高达 10 个 dex 29、今日头条(v7.7.4

    2.1K20

    当dex分包遇上NoClassDefFoundError&ClassNotFoundException

    简介 本文记录的是:国庆节前夕,解决Crash率高达9.08%问题成功避免加班拿3倍工资的故事 PS: 除了时间两者相遇外,本文中提到的两个(top1&top2)crash问题与dex分包并没有关系...nativeLibraryDirectories=[/data/app-lib/com.example.android.downloader-1, /vendor/lib, /system/lib]] dalvik.system.BaseDexClassLoader.findClass...主dex中 这两个Crash测试中不可复现 按常理,主dex中的类,并不会出现NoClassDefFoundError/ClassNotFoundException这种Crash,不过谨慎起见我们还是对分包方案进行了一翻研究...答:log.txt抓取的是程序挂掉瞬间的logcat信息,因为输出这个关键log信息的地方并不会导致程序挂掉,所以只有很极端的情况(ExceptionInInitializerErrorNoClassDefFoundError...“腾讯Bugly(http://bugly.qq.com)” 腾讯Bugly 最专业的质量跟踪平台 精神哥、小萝莉,为您定期分享应用崩溃解决方案 ▲长按二维码可识别关注

    61520

    web 环境运行 react-native 页面

    背景 近两年来react-native构造原生应用异常火爆,app中用来替代H5页面可以明显提升用户体验,但是一些场景是需要配套web版本的,比如分享、seo或者react-native报错时的降级方案等...如果适配web再去实现一套H5的页面会增加开发维护成本,同一套代码能不能跑浏览器了?...由于react-native的页面都是基于react-native基础组件API或者自己实现的module,react-native页面的代码是完全可以复用的。...由于preact去掉了合成事件,所有的事件都是绑定到dom,对应的react-native的触摸手势事件需要用原生事件替代,组件的手势事件prop改为原生的touch事件prop。...2.组件渲染首屏时间如下 优化前 优化后 组件渲染时长从105ms降到86ms,首屏可见事件从292ms提前到了230ms 线上数据 优化后页面是从929日开始 总资源加载耗时 页面开始导航到可交互耗时

    4.2K01

    使用 React Native 重写大型 Ionic 应用后,我们想分享一下这八个经验

    但是实际这个差距可能是 0.5~1.0 倍之间,毕竟要填的坑太多了,以至于中途的时候让人想放弃。 最后,我们花了两三个月的时间才重写完这个应用。...注: Ionic 时代,可以用 Ionic resources 来生成 icon splash 以适配不同的机型。...由于,我日常用的手机是 Android 系统,而 React Native 的 Web 资源问题,实际 Android iOS 都会出现的。...记得记录崩溃问题 我 release Growth 3.0 的早期版本 2.9.9 的时候,漏掉了一个对 Null 值的判断,结果造成了大量的闪退问题(三十几个用户)。...除此,一些未知的机型也会出现问题,尽管是个问题,但是由于数量较少就没有在意了。 对于写原生代码来说,这几乎是必备的手段。对于 WebView 来说,并不会存在太大的崩溃问题,除非使用了原生组件。

    1.8K60

    React-Native 安卓预加载优化方案

    导致React-Native安卓端白屏时间较长的关键性因素 我们对不同网络状态下不同机型的React-Native线上项目进行了实时性能监控,下图所示为React Native IOS安卓端线上性能数据对比分析图...对比IOS端与Android端的首屏时间数据,我们发现安卓端占有一定的劣势,我们启动React-Native安卓应用时,会发现第一次启动React-Native安卓页面会有一个短暂的白屏过程,而且完全退出后再进入...针对首屏获取时间较长的问题,项目已经采用React-Native前端异步数据缓存优化方案,而且IOS安卓端数据返回的平均值均在180ms左右,而页面加载的过程中界面渲染以及框架初始化的时间占比均只有...9.3%,不为导致IOS安卓端首屏时间差异较大的关键因素。...原文链接:http://www.ivweb.io/topic/5958de8b1eb29e24e8a098a4

    5.7K11

    当dex分包遇上NoClassDefFoundError & ClassNotFoundException

    简介 本文记录的是:国庆节前夕,解决Crash率高达9.08%问题成功避免加班拿3倍工资的故事 PS: 除了时间两者相遇外,本文中提到的两个(top1&top2)crash问题与dex分包并没有关系...主dex中 这两个Crash测试中不可复现 按常理,主dex中的类,并不会出现NoClassDefFoundError/ClassNotFoundException这种Crash,不过谨慎起见我们还是对分包方案进行了一翻研究...幸好,RDM异常上报平台逐个查看logcat信息的过程中,我们第4页找到了一个关键的日志信息 log.txt ?...答:log.txt抓取的是程序挂掉瞬间的logcat信息,因为输出这个关键log信息的地方并不会导致程序挂掉,所以只有很极端的情况(ExceptionInInitializerErrorNoClassDefFoundError...“腾讯Bugly(http://bugly.qq.com)” 腾讯Bugly 最专业的质量跟踪平台 精神哥、小萝莉,为您定期分享应用崩溃解决方案

    2.4K90

    ReactNative之参照具体示例来看RN中的FlexBox布局

    FlexBox中分为 容器属性(flexDirection、flexWrap、alignItems、justifyContent、alignContent) 元素属性(flex、alignSelf、...该属性FlexBox布局中也是一个尤为重要而且比较常用的一个属性。flexDirection主要是用来控制子元素的布局方向的,主要分为横向布局纵向布局,默认是纵向布局(column)。...最后就来看一下render中了,render中分别调用了按钮区布局区两块的内容。 ?...35 36 37 ); 38 } 39 } 六、AlignItem 该属性也是比较常用的,用来定义子元素交叉轴的对齐方式...this.resultDisplayView()} 75 76 ); 77 } 78 } 七、AlignSelf 最后我们来看一下这个AlignSelf属性,该属性是元素属性,主要设置子元素

    1.9K30

    Flutter正在悄悄击败React-Native

    : 通过Boss直聘的url传参测试,深圳地区的React-Native招聘数量为9页 https://www.zhipin.com/c101280600/?...query=react-native&page=9&ka=page-9 Flutter: 通过Boss直聘的url传参测试,深圳地区的Flutter招聘数量为8页 https://www.zhipin.com...学习flutter的成本在于使用dart语言,其实成本也不算很高,只是放在我身上去学习,性价比不高 flutter的国内标杆产品周边朋友反馈普遍存在一些体验交互、兼容性的问题 由于需要快速兑现试错...,最终选择react-native作为技术栈选型 一个产品初期,应该快速兑现产品需求,看市场响应如何再做下一步的打算 react-native环境搭建(mac电脑) 准备工作 brew install...,看我整篇文章react-nativeflutter一会大些一会驼峰,要规范命名(主要是Mac键盘难用你们懂的~) 如果不规范大小写命名,就会遇到下面这个情况 我已经遇到很多同事粉丝问我,为什么我本地构建没问题

    1.1K40
    领券