React Native App-在Android 8真实设备上的启动时崩溃/关闭



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

这是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设备上进行了测试,并且一切正常

但是最近,我试图使用Android 8上的 Honor 8x设备上运行此项目。但是,从Metro获得JS捆绑后,该应用程序将关闭,而不会出错!

  • 运行命令: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()

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

  • 另外,我将所有权限授予了该应用程序,包括绘制其他应用程序存储权限也将其排除在电池节省 ...

这是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设备上运行 Hello World 应用程序成功,所以我认为设备和Android没有问题...
  • 还考虑到myapp在Android 5上成功运行在模拟器和设备上,我完全感到困惑... Maby 依赖项之一
  • 有一个问题

环境: - Windows 10 Enterprise

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

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

我与xiomi and Realm遇到了同样的问题。

开始在Moto设备上进行测试工作正常。

看来,v0.58.0的反应本地人不兼容/到目前为止,在领域中打破了某些东西。临时解决方案将是使用v0.57.8

初始化您的RN项目

步骤:react-native init-version =" react-native@0.57.8" projectNameCD ProjectNameNPM安装领域 - 保存反应链接

它应该起作用

您应该从

更改代码
def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true

进入

def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false

相关内容

  • 没有找到相关文章

最新更新