React Native 应用程序 - 在 Android 8 真实设备上启动时崩溃/关闭

2024-07-03

我有一个 React Native 项目(不是 Expo)初始化为react native init myapp。 我可以在装有 Android 5 的模拟器和真实设备上运行此应用程序,但无法在装有 Android 8 的 Android 手机上运行该应用程序。

这是package.json:

{
  "name": "myapp",
  "version": "2.0.0",
  "private": true,
  "main": "lib/index.js",
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "formik": "^1.5.1",
    "iso-639-1": "^2.0.3",
    "jsrsasign": "^8.0.12",
    "moment": "^2.24.0",
    "moment-jalaali": "^0.8.3",
    "react": "16.6.3",
    "react-native": "0.58.6",
    "react-native-app-intro-slider": "^1.0.1",
    "react-native-document-picker": "^2.3.0",
    "react-native-elements": "^1.1.0",
    "react-native-gesture-handler": "^1.1.0",
    "react-native-i18n": "^2.0.15",
    "react-native-modal-datetime-picker": "^6.0.0",
    "react-native-paper": "^2.12.0",
    "react-native-persian-calendar-picker": "^2.2.2",
    "react-native-settings-list": "^1.8.0",
    "react-native-simple-dialogs": "^1.1.0",
    "react-native-vector-icons": "^6.3.0",
    "react-navigation": "^3.3.2",
    "react-navigation-material-bottom-tabs": "^1.0.0",
    "realm": "^2.24.0",
    "yup": "^0.26.10"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "24.1.0",
    "babel-preset-flow": "^6.23.0",
    "flow-bin": "^0.86.0",
    "jest": "24.1.0",
    "metro-react-native-babel-preset": "0.53.0",
    "react-test-renderer": "16.6.3"
  },
  "jest": {
    "preset": "react-native",
    "transformIgnorePatterns": [
      "node_modules/(?!(jest-)?react-native|react-navigation|react-navigation-redux-helpers)"
    ]
  },
  "rnpm": {
    "assets": [
      "./assets/fonts/"
    ]
  }
}

我已经在运行 Android 5 的 Genymotion 模拟器和运行 Android 5 的真实 LG 设备上对其进行了测试,一切正常.

但最近,我尝试在Honor 8XAndroid 8 的设备。但是从 Metro 获取 JS Bundle 后,应用程序将关闭,没有任何错误!

  • 运行命令:react-native run-android

这是来自的日志react-native log-android:

--------- beginning of crash
--------- beginning of system
--------- beginning of main
03-05 23:28:52.567  5513  5513 D ReactNative: ReactInstanceManager.ctor()
03-05 23:28:52.604  5513  5513 D ReactNative: ReactInstanceManager.createReactContextInBackground()
03-05 23:28:52.604  5513  5513 D ReactNative: ReactInstanceManager.recreateReactContextInBackgroundInner()
03-05 23:29:32.605  5513  5513 D ReactNative: ReactInstanceManager.onJSBundleLoadedFromServer()
03-05 23:29:32.608  5513  5513 D ReactNative: ReactInstanceManager.recreateReactContextInBackground()
03-05 23:29:32.608  5513  5513 D ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread()
03-05 23:29:32.642  5513  5617 D ReactNative: ReactInstanceManager.createReactContext()

最后一行出现后,应用程序将在设备上关闭!

  • 另外,我向应用程序授予了所有权限,包括在其他应用程序上绘图, Storage许可并将其排除在外省电...

这是 Metro Bundler 输出(看起来不错):

Loading dependency graph, done.
 DELTA  [android, dev] ..\..\../index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100.0% (1169/1169), done.

::ffff:127.0.0.1 - - [05/Mar/2019:20:02:17 +0000] "GET /index.delta?platform=android&dev=true&minify=false HTTP/1.1" 200 - "-" "okhttp/3.12.1"
  • 我尝试运行你好世界在我的荣耀8X设备上运行应用程序并且运行成功,所以我认为设备和Android都没有问题......
  • 还考虑到myapp在 Android 5 的模拟器和设备上成功运行,我完全困惑......也许其中之一有问题依赖关系

环境: - Windows 10 企业版

Android 特定文件:android/build.gradle:

buildscript {
    ext {
        buildToolsVersion = "28.0.2"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 27
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}
allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}
task wrapper(type: Wrapper) {
    gradleVersion = '4.7'
    distributionUrl = distributionUrl.replace("bin", "all")
}

android/gradle.properties:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true

android/app/build.gradle

apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
    entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true
android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    defaultConfig {
        applicationId "ir.mokhtaresho.tnet.users"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "2.0.0"
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk true
            include "armeabi-v7a", "x86", "arm64-v8a"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}
dependencies {
    implementation project(':realm')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-i18n')
    implementation project(':react-native-gesture-handler')
    implementation project(':react-native-document-picker')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"
}
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

您是否尝试清除缓存?通常是这样的:

rm package-lock.json
rm -rf node_modules
rm -rf $TMPDIR/metro-*
rm -rf $TMPDIR/haste-map-*
npm cache clean
npm install
npm start -- --reset-cache

但您可能只需要删除地铁和急速地图缓存。抱歉,如果您已经尝试过。

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

React Native 应用程序 - 在 Android 8 真实设备上启动时崩溃/关闭 的相关文章

  • 使用“expo install”来安装我需要安装的所有内容是否安全?

    我正在做一个世博会项目 我们必须使用expo install添加其他展览库时 例如expo permissions expo av 但我们也可以使用expo install对于非世博图书馆 例如react native root toast
  • 没有身份验证的 Android SyncAdapter 与 Android 服务

    我不希望对我的同步适配器使用身份验证 因为我计划使用它来同步搜索查询的 Twitter 公共时间线 我应该使用 SyncAdapter 还是任何普通服务 在此用例中 两者都可以正常工作 如果您的应用程序可能包含多个用户帐户 那么采用 Syn
  • Firebase 持久性如何存储我的 Android 应用的本地数据

    我正在制作一个类似于 WhatsApp 的 Android 应用程序 在该应用程序中 用户可以发送文本和图像 为了保存消息以便可以离线查看 我使用了 FirebaseDatabase getInstance setPersistenceEn
  • Android CardView 不适用于 Api 21

    我正在使用安卓CardView它在 Api 21 下完美运行 但是当我在 Api 21 即 Lollipop 上使用它时 XML 属性如下cardElevation cornerRadius不起作用 我究竟做错了什么 这是我的 XML 布局
  • 如何在Android 10及更高版本中通过intent MediaStore.ACTION_IMAGE_CAPTURE获取图像URI

    对于版主 我知道已经存在这样的问题 但所有这些方法最终都会通过提供位图data getExtra data 这实际上只是thumbnail 我想要获取 URI 而不是位图 并且我需要获取实际图像的 URI 而不是其缩略图 方法可在2021
  • 有没有办法让每个人都可以访问 firestore 数据库,但只能通过应用程序?

    我正在使用 Firestore 创建 Android 应用程序 我的应用程序不需要身份验证 是否有任何安全规则允许每个人读取和写入 firestore 但只能通过我的应用程序 我试图找到一些规则 但每个规则都基于身份验证 感谢您的帮助 最接
  • Android Studio 设计预览是像素化的

    我的 android studio 设计预览很模糊 文本以及小部件 我尝试通过执行以下操作来修复它 Android Studio 属性 gt 兼容性 gt 更改高 DPI 设置 gt 覆盖高 DPI 我关闭了 android studio
  • 在 Flutter 的登录屏幕中显示循环进度对话框,如何在 Flutter 中实现进度对话框?

    我有一个登录表单 其中有两个文本字段 用户名 密码 和一个按钮 登录 点击登录按钮后 我将调用 API 我想展示一个CircularProgressIndicator在此 api 调用期间 进度对话框应显示在登录表单的中心和顶部 我努力了F
  • 在 Formik 中提交后如何重置/清空表单

    这样我就有了我的表格 我只是希望提交成功后它是空的 我已经看到我应该使用enableReinitializing并手动更改值 如下所示 this values content 但我不明白我可以把这个选项放在哪里
  • RecyclerView 仅显示 Firebase 中的一项

    我知道关于这个问题的疑问很少 但他们都没有解决我的问题 特别是我的代码是用 Kotlin 编写的 并且是新的Fragments 不要急于说我的问题是重复的 我的问题正是标题所说的 我的RecyclerView仅填充了来自的一项 子项 Fir
  • 新项目应该使用哪个 Android Camera API?

    我正在开发一个新的应用程序 我想一直支持果冻豆 冰淇淋三明治 我需要在我的应用程序中使用摄像机 只是拍摄一些 15 秒的镜头 无需处理 我是否必须编写两个相机活动 一个使用相机 api 另一个使用camera2 api 并以某种方式根据设备
  • Google Play 游戏服务 - 自定义通知/欢迎回来

    我一直在互联网上查找 但找不到我的答案 有没有办法向用户显示他们已登录 GPGS 第一次登录时 您会收到一条通知 内容为 欢迎 但是当您下次打开应用程序时 什么也没有显示 有没有办法显示欢迎回来通知 对于 iOS 这是可能的 在第 9 步上
  • 根据组成员身份显示内容 - OKTA + ReactJS

    我正在使用 Okta 进行 SPA Express 后端 的用户身份验证 如何使用 Okta API 根据组成员身份显示 隐藏内容 例如如果活动用户是特定组的成员 我想显示一些菜单项 Okta React SDK 中有什么东西吗 我的想法很
  • Android onBackPressed() 没有被调用?

    在我的 MainActivity 从 AppCompatActivity 扩展 中 我想重写 onBackPressed 方法 如下所示 Override public void onBackPressed Log d MainActivi
  • 纱线安装抛出错误请求失败“404未找到”

    我已经在我的笔记本电脑上反应了本机项目 当我将项目转移到我的电脑并运行yarn install时 我使用yarn安装了一些模块 一些使用npm安装了 我得到 一个意料之外的问题发生了 https registry yarnpkg com j
  • 给出文档名称的 UID

    我想知道在我的 firestore 数据库中保存用户首选项的最佳实践是什么 我会尝试用一个例子来解释 Case 1 我的 用户 集合中有这种文档 名称是由 Firebase 随机生成的 有 3 个字段 user uid 细绳 nicknam
  • 将图像添加到Toast?

    是否可以以编程方式将图像添加到 toast 弹出窗口 Yes 您可以使用 setView 方法将 imageview 或任何视图添加到 toast 通知中 使用此方法您可以根据您的要求自定义 Toast 在这里 我创建了一个要膨胀到 Toa
  • appcompat 在操作栏中显示进度导致 NPE

    将我的 SDK 更新到所有最新的 Android 5 0 后 我无法使用 appcompat 中 ActionBar 中内置的进度条 我已经完成了所有通常的修复 将 supportRequestWindowFeature 调用移至 setC
  • Android RecyclerView:拖放多个ViewType

    I implement drag and drop for a RecyclerView it works well when have one View type but reset the RecyclerView when have
  • 图像选择器在 React Native 应用程序中不起作用,为什么?

    我已经成功安装了react native image picker 对于一个新的react本机应用程序 链接它并通过info plist文件授予正确的权限来访问相机 照片等 我正在使用 React native image picker 页

随机推荐

  • Android Studio 卡在“正在连接模拟器”

    我最近更新了 Android studio 和往常一样 它坏了 每当我尝试启动模拟器时 Android Studio 就会永远卡在 正在连接模拟器 屏幕中 我尝试过的事情 将 VM 堆大小增加到 512mb 将 RAM 大小减少至 512m
  • 处理屏幕旋转上的片段重复(带有示例代码)

    有一些类似的答案 但不适用于这种情况 我的情况很简单 我有一个具有两种不同布局的活动 一种是纵向布局 另一种是横向布局 In Portrait i use
  • 处理屏幕旋转上的片段重复(带有示例代码)

    有一些类似的答案 但不适用于这种情况 我的情况很简单 我有一个具有两种不同布局的活动 一种是纵向布局 另一种是横向布局 In Portrait i use
  • 在 C# 中运行 Linux 控制台命令

    我使用以下代码在 C 应用程序中通过 Mono 运行 Linux 控制台命令 ProcessStartInfo procStartInfo new ProcessStartInfo bin bash c ls procStartInfo R
  • 在 C# 中运行 Linux 控制台命令

    我使用以下代码在 C 应用程序中通过 Mono 运行 Linux 控制台命令 ProcessStartInfo procStartInfo new ProcessStartInfo bin bash c ls procStartInfo R
  • 如何调试 Java Applet?

    目前 我所掌握的唯一信息是浏览器状态栏中的一行错误消息 例如 你知道我如何获得堆栈跟踪吗 除了明显使用 Java 控制台和小程序查看器之外 从 Java 6 update 7 开始 您还可以使用VisualVM http java sun
  • 如何调试 Java Applet?

    目前 我所掌握的唯一信息是浏览器状态栏中的一行错误消息 例如 你知道我如何获得堆栈跟踪吗 除了明显使用 Java 控制台和小程序查看器之外 从 Java 6 update 7 开始 您还可以使用VisualVM http java sun
  • SQL Server 2008 R2 安装卡住

    当我尝试安装 mySQL Server 2008 R2 时 它总是卡在SqlEngineDBStartConfigAction install configrc Cpu64 我在其他问题中发现我应该杀死msiexec进程 但我找不到它 我应
  • SQL Server 2008 R2 安装卡住

    当我尝试安装 mySQL Server 2008 R2 时 它总是卡在SqlEngineDBStartConfigAction install configrc Cpu64 我在其他问题中发现我应该杀死msiexec进程 但我找不到它 我应
  • 从 json 对象初始化 Typescript 中的 Map

    这个问题在这里已经有答案了 我在 Typescript 中有一个包含地图的类 public map Map
  • 从 json 对象初始化 Typescript 中的 Map

    这个问题在这里已经有答案了 我在 Typescript 中有一个包含地图的类 public map Map
  • Android 圆形按钮可点击区域

    我在 Android Studio 中制作了这个圆形按钮 我使用了自定义背景 问题是图像中突出显示的黄色区域是可单击的 我想将可点击区域减少到仅红色圆圈 有什么办法可以做到这样的事情吗 You cannot删除图像的透明区域 因为它是你形象
  • Android 圆形按钮可点击区域

    我在 Android Studio 中制作了这个圆形按钮 我使用了自定义背景 问题是图像中突出显示的黄色区域是可单击的 我想将可点击区域减少到仅红色圆圈 有什么办法可以做到这样的事情吗 You cannot删除图像的透明区域 因为它是你形象
  • WordPress 网站前端的 CSV 上传(PHP/SQL)

    我在某些领域取得了很大进展 但在其他领域却遇到了困难 目标是 客户正在使用现有的 WordPress 网站 他们希望管理员用户访问带有上传选项的前端页面之一 他们可以在其中上传 CSV 每天几次 然后 在访问门户中的其他页面时 将显示表格中
  • WordPress 网站前端的 CSV 上传(PHP/SQL)

    我在某些领域取得了很大进展 但在其他领域却遇到了困难 目标是 客户正在使用现有的 WordPress 网站 他们希望管理员用户访问带有上传选项的前端页面之一 他们可以在其中上传 CSV 每天几次 然后 在访问门户中的其他页面时 将显示表格中
  • 如何增加 IntelliJ IDEA 上的内存堆大小?

    我想分配大约 1GB 的堆大小 但我似乎无法弄清楚 这个怎么做 Use Help 编辑自定义虚拟机选项 右侧会自动打开一个编辑器 vmoptions文件 调整值 Xmx 保存并重启IntelliJ IDEA 查看 IntelliJ IDEA
  • 如何增加 IntelliJ IDEA 上的内存堆大小?

    我想分配大约 1GB 的堆大小 但我似乎无法弄清楚 这个怎么做 Use Help 编辑自定义虚拟机选项 右侧会自动打开一个编辑器 vmoptions文件 调整值 Xmx 保存并重启IntelliJ IDEA 查看 IntelliJ IDEA
  • 为简单的 hadoop mapreduce 作业运行两个映射器和两个减速器

    我只是想更好地了解如何使用多个映射器和化简器 我想使用一个简单的 hadoop mapreduce 字数统计作业来尝试一下 我想为这个字数统计作业运行两个映射器和两个化简器 我是否需要这样做在配置文件上手动配置 或者仅对 WordCount
  • 为简单的 hadoop mapreduce 作业运行两个映射器和两个减速器

    我只是想更好地了解如何使用多个映射器和化简器 我想使用一个简单的 hadoop mapreduce 字数统计作业来尝试一下 我想为这个字数统计作业运行两个映射器和两个化简器 我是否需要这样做在配置文件上手动配置 或者仅对 WordCount
  • React Native 应用程序 - 在 Android 8 真实设备上启动时崩溃/关闭

    我有一个 React Native 项目 不是 Expo 初始化为react native init myapp 我可以在装有 Android 5 的模拟器和真实设备上运行此应用程序 但无法在装有 Android 8 的 Android 手