ไม่พบ“ RNCSafeAreaView” ใน UIManager


9

ฉันพยายามเปิดบันเดิล แต่เมื่อ Android ใช้งานมันจะแสดงข้อความถัดไป

2020-01-05 23: 15: 45.366 26210-26210 / com.note.principal W / .note.principa: การเข้าถึงฟิลด์ที่ซ่อน Landroid / ดู / ดู; -> mAccessibilityDelegate: Landroid / ดู / ดู $ AccessibilityDelegate; (นักออกแบบกลเบา, การสะท้อนแสง) 2020-01-05 23: 15: 45.470 26210-26242 / com.note.principal E / ReactNativeJS: การละเมิดที่คงที่: requireNativeComponent: "RNCSafeAreaView" ไม่พบใน UIManager

This error is located at:
    in RNCSafeAreaView
    in Unknown
    in Unknown
    in n
    in Unknown
    in Unknown
    in C
    in P
    in u
    in RCTView
    in RCTView
    in h 2020-01-05 23:15:45.494 26210-26242/com.note.principal E/ReactNativeJS: Invariant Violation: requireNativeComponent:

ไม่พบ "RNCSafeAreaView" ใน UIManager

This error is located at:
    in P
    in u
    in RCTView
    in RCTView
    in h 2020-01-05 23:15:45.502 26210-26242/com.note.principal E/ReactNativeJS: Invariant Violation: requireNativeComponent:

ไม่พบ "RNCSafeAreaView" ใน UIManager

This error is located at:
    in P
    in u
    in RCTView
    in RCTView
    in h 2020-01-05 23:15:45.794 26210-26244/com.note.principal E/unknown:ReactNative: Invariant Violation: requireNativeComponent:

ไม่พบ "RNCSafeAreaView" ใน UIManager

This error is located at:
    in RNCSafeAreaView
    in Unknown
    in Unknown
    in n
    in Unknown
    in Unknown
    in C
    in P
    in u
    in RCTView
    in RCTView
    in h, stack:
exports@175:1634
get@163:682
Al@89:70673
Ml@89:70108
Ul@89:67144
Ul@-1
Pl@89:65839
Pl@-1
<unknown>@89:25495
unstable_runWithPriority@168:3915
sn@89:25442
cn@89:25377
kl@89:64831
la@89:87813
render@89:90592
exports@342:541
run@334:1305
runApplication@334:2287
value@25:3685
<unknown>@25:841
value@25:2939
value@25:813
value@-1 2020-01-05 23:15:45.832 26210-26244/com.note.principal E/unknown:ReactNative: Invariant Violation: requireNativeComponent:

ไม่พบ "RNCSafeAreaView" ใน UIManager

This error is located at:
    in P
    in u
    in RCTView
    in RCTView
    in h, stack:
exports@175:1634
get@163:682
Al@89:70673
Ml@89:70108
Ul@89:67144
Ul@-1
Pl@89:65839
Pl@-1
<unknown>@89:25495
unstable_runWithPriority@168:3915
sn@89:25442
cn@89:25377
kl@89:64831
la@89:87813
render@89:90592
exports@342:541
run@334:1305
runApplication@334:2287
value@25:3685
<unknown>@25:841
value@25:2939
value@25:813
value@-1 2020-01-05 23:15:45.856 26210-26244/com.note.principal E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
Process: com.note.principal, PID: 26210
com.facebook.react.common.JavascriptException: Invariant Violation: requireNativeComponent: "RNCSafeAreaView" was not found in

UIManager

This error is located at:
    in P
    in u
    in RCTView
    in RCTView
    in h, stack:
exports@175:1634
get@163:682
Al@89:70673
Ml@89:70108
Ul@89:67144
Ul@-1
Pl@89:65839
Pl@-1
<unknown>@89:25495
unstable_runWithPriority@168:3915
sn@89:25442
cn@89:25377
kl@89:64831
la@89:87813
render@89:90592
exports@342:541
run@334:1305
runApplication@334:2287
value@25:3685
<unknown>@25:841
value@25:2939
value@25:813
value@-1

    at com.facebook.react.modules.core.ExceptionsManagerModule.reportException(ExceptionsManagerModule.java:71)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:371)
    at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:150)
    at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:26)
    at android.os.Looper.loop(Looper.java:193)
    at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:225)
    at java.lang.Thread.run(Thread.java:764) 2020-01-05 23:15:45.862 26210-26244/com.note.principal I/Process: Sending signal.

PID: 26210 SIG: 9

แพ็คเกจของโครงการคือ

{
  "name": "Notes",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "bundle_android": "react-native bundle --entry-file index.js --platform android --dev false --bundle-output ./bundles/android/index.android.bundle",
    "bundle_ios": "react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ./bundles/ios/main.jsbundle",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.5",
    "prop-types": "^15.7.2",
    "react": "16.9.0",
    "react-native": "0.61.5",
    "react-native-gesture-handler": "^1.5.3",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-safe-area-context": "^0.6.2",
    "react-navigation": "^4.0.10",
    "react-navigation-stack": "^2.0.8"
  },
  "devDependencies": {
    "@babel/core": "^7.7.7",
    "@babel/runtime": "^7.7.7",
    "@react-native-community/eslint-config": "^0.0.6",
    "babel-jest": "^24.9.0",
    "eslint": "^6.8.0",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.57.0",
    "react-test-renderer": "16.9.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

โครงการของการไล่ระดับสี

include ':app'
rootProject.name='Notes'


include ':hermes-engine'
project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android/')

include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')

include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')



// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
        mavenLocal()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}




apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId ""
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

project.ext.react = [
        enableHermes: false,
]

def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "com.facebook.react:react-native:+"
    implementation 'com.android.support:support-annotations:27.1.1'
    implementation project(':react-native-gesture-handler')
    implementation project(':react-native-linear-gradient')

    if (enableHermes) {
        implementation project(':hermes-engine')
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
}

นี่คือรหัสของกิจกรรม

package com.note

import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.facebook.react.ReactInstanceManager
import com.facebook.react.ReactRootView
import com.facebook.react.common.LifecycleState
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
import com.facebook.react.shell.MainReactPackage
import com.facebook.soloader.SoLoader
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage
import com.BV.LinearGradient.LinearGradientPackage

class ReactActivity : AppCompatActivity(), DefaultHardwareBackBtnHandler {

    private val OVERLAY_PERMISSION_REQ_CODE = 1

    private lateinit var mReactRootView: ReactRootView
    private lateinit var mReactInstanceManager: ReactInstanceManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        SoLoader.init(this, false)
        mReactRootView = ReactRootView(this)
        mReactInstanceManager = ReactInstanceManager.builder()
            .setApplication(application)
            .setCurrentActivity(this)
            .setApplication(application)
            .setBundleAssetName("aaaaaa.android.bundle")
            .addPackage(MainReactPackage())
            .addPackage(RNGestureHandlerPackage())
            .addPackage(LinearGradientPackage())
            .setInitialLifecycleState(LifecycleState.RESUMED)
            .build()
        // The string here (e.g. "MyReactNativeApp") has to match
        // the string in AppRegistry.registerComponent() in index.js
        mReactRootView.startReactApplication(mReactInstanceManager, "Notes", null)

        setContentView(mReactRootView)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!Settings.canDrawOverlays(this)) {
                val intent = Intent(
                        Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:$packageName")
                )
                startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE)
            }
        }
    }

    override fun invokeDefaultOnBackPressed() {
        super.onBackPressed()
    }

    override fun onBackPressed() {
        if (mReactInstanceManager != null) {
            mReactInstanceManager.onBackPressed()
        } else {
            super.onBackPressed()
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (!Settings.canDrawOverlays(this)) {
                    // SYSTEM_ALERT_WINDOW permission not granted
                }
            }
        }
        mReactInstanceManager?.onActivityResult(this,requestCode, resultCode, data)
    }
}

บางคนรู้ว่าทางออกคืออะไร?

คำตอบ:


6

ฉันพบข้อผิดพลาดเดียวกัน เพื่อแก้ปัญหาให้แน่ใจว่าได้ติดตั้ง react-native-safe-area-context

npm install react-native-safe-area-context

แล้วถ้าคุณกำลังใช้ตอบสนอง 0.61.X pod installทำให้พื้นเมืองแน่ใจว่าจะทำ มันจะเชื่อมโยงทุกอย่างเข้าด้วยกัน

หากคุณใช้ React Native <0.6 คุณต้องทำการเชื่อมโยงด้วยตนเอง react-native link react-native-safe-area-context


1
ฉันพลาดขั้นตอนการติดตั้งพ็อด ขอบคุณ
lawphotog

2

ฉันถูกค้นหาและพบต่อไป

ก่อนอื่นคุณต้องทำความสะอาดโครงการ

โมดูลนำเข้าที่สองในโครงการ

include ':app'
rootProject.name='Notes'


include ':hermes-engine'
project(':hermes-engine').projectDir = new File(rootProject.projectDir, '../node_modules/hermes-engine/android/')

include ':react-native-gesture-handler'
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')

include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')

include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')

include ':react-native-safe-area-context'
project(':react-native-safe-area-context').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-safe-area-context/android')

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "com.facebook.react:react-native:+"
    implementation 'com.android.support:support-annotations:27.1.1'
    implementation project(':react-native-gesture-handler')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-safe-area-context')

    if (enableHermes) {
        implementation project(':hermes-engine')
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
}


 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        SoLoader.init(this, false)
        mReactRootView = ReactRootView(this)
        mReactInstanceManager = ReactInstanceManager.builder()
            .setApplication(application)
            .setCurrentActivity(this)
            .setApplication(application)
            .setBundleAssetName("index.android.bundle")
            .addPackage(MainReactPackage())
            .addPackage(RNGestureHandlerPackage())
            .addPackage(LinearGradientPackage())
            .addPackage(SafeAreaContextPackage())
            .addPackage(SDKCorePackage())
            .setInitialLifecycleState(LifecycleState.RESUMED)
            .build()
        // The string here (e.g. "MyReactNativeApp") has to match
        // the string in AppRegistry.registerComponent() in index.js
        mReactRootView.startReactApplication(mReactInstanceManager, "Notes", null)

        setContentView(mReactRootView)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!Settings.canDrawOverlays(this)) {
                val intent = Intent(
                        Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:$packageName")
                )
                startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE)
            }
        }
    }

ฉันจะหวังว่ามันจะมีประโยชน์ลิงค์นี้ยังช่วยฉันด้วย

ตอบสนองพื้นเมืองปลอดภัยพื้นที่บริบท


1

ทำงานสำหรับฉันสำหรับรุ่นด้านล่างและบน iOS

"react": "16.9.0",
 "react-native": "0.61.5",

ขั้นตอนในการแก้ไข

- หยุด Metro Bundler ปัจจุบันที่ทำงานอยู่

- ติดตั้งฝักสำหรับ iOS

ลองใช้แอปพลิเคชันอีกครั้ง

หวังว่านี่จะช่วยได้!


Android ไม่ใช่ iOS
JIMJI1005

0

ในกรณีที่คุณไม่ได้ใช้ ReactRootView (รวมแอพที่มีอยู่เข้ากับการตอบสนองดั้งเดิม) ...

คุณอาจยังคงต้องเพิ่มแพ็คเกจของคุณ (แพ็คเกจที่ยังไม่สนับสนุนการเชื่อมโยงอัตโนมัติเช่นมุมมองที่ปลอดภัยใหม่เป็นต้น) ไปที่MainApplication.java:

android/app/src/main/.../MainApplication.java

ด้านบนโดยที่การนำเข้าคือ:

import com.th3rdwave.safeareacontext.SafeAreaContextPackage;

เพิ่มคลาส SafeAreaContextPackage ไปยังรายการแพ็กเกจที่เอ็กซ์พอร์ตของคุณ

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.asList(
            new MainReactPackage(),
            /**other packages of yours**/
            new SafeAreaContextPackage()
    );
}

แต่กลุ่มอยู่ในการตอบสนองพื้นเมืองกิจกรรมไม่ได้มีการแทนที่นี้
Alejandro Gonzalez

แน่นอนกิจกรรมไม่ได้ แอปพลิเคชันทำ: MainApplication (.java) | (.kt)
ofundefined

บางทีในกรณีของฉันฉันต้องเพิ่มห้องสมุด
Alejandro Gonzalez

แน่นอนฉันคิดว่าคุณกำลังรวมแอพ Android ที่มีอยู่กับโปรเจ็กต์ตอบโต้พื้นเมืองใช่ไหม? ในกรณีนี้คุณกำลังติดตามเอกสารอย่างเป็นทางการซึ่งสอนให้เราทราบถึงการนำปฏิกิริยากลับมาใช้กับกิจกรรมโดยไม่ต้องมีแอปพลิเคชันตอบโต้ อาจสรุปได้ว่าฉันเห็นว่าคุณกำลังประกาศด้วยตนเองmReactInstanceManagerซึ่งจะทำเช่นเดียวกันกับ React Application
ofundefined

นี่เป็นความคิดเพราะโครงการของ Native มีปฏิกิริยาเป็นเพียงบันเดิลดังนั้นฉันจึงมีแอปพลิเคชันใน Android และ iOS มันเป็นคอนเทนเนอร์ แต่โค้ดและฟังก์ชั่นนั้นอยู่ในเนทีฟแบบโต้ตอบ
Alejandro Gonzalez

0

ทำงานด้านล่างสำหรับฉัน:

  1. npm ติดตั้ง react-native-safe-area-context
  2. ลิงค์ปฏิกิริยาดั้งเดิมเนทีฟตอบสนองพื้นเมืองพื้นที่ปลอดภัยบริบท
  3. รายการสินค้า
  4. ภายใน android gradlew สะอาด
  5. เริ่มต้นนาที
  6. npm ใช้ android
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.