Không tìm thấy RNCSafeAreaView trong UIManager


9

Tôi cố gắng mở một gói, nhưng khi Android đang chạy, nó sẽ hiển thị thông báo tiếp theo

2020-01-05 23: 15: 45.366 26210-26210 / com.note.principal W / .note.principa: Truy cập trường ẩn Landroid / view / View; -> mAccessibilityDelegate: Landroid / view / View $ AccessDelegate; (greylist ánh sáng, phản xạ) 2020-01-05 23: 15: 45.470 26210-26242 / com.note.principal E / ReactNativeJS: Vi phạm bất biến: Yêu cầuNativeComponent: "RNCSafeAreaView" không được tìm thấy trong 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" không được tìm thấy trong 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" không được tìm thấy trong 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" không được tìm thấy trong 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" không được tìm thấy trong 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

Gói của dự án là

{
  "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"
  }
}

Dự án của lớp

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
    }
}

Đây là quy tắc hoạt động

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)
    }
}

ai đó biết giải pháp là gì?

Câu trả lời:


6

Tôi gặp lỗi tương tự. Để giải quyết, hãy đảm bảo cài đặt bối cảnh phản ứng-nguồn gốc-an toàn-khu vực.

npm install react-native-safe-area-context

Sau đó, nếu bạn đang sử dụng React Native 0.61.X, hãy đảm bảo thực hiện a pod install. Nó sẽ liên kết mọi thứ lại với nhau.

Nếu bạn đang sử dụng React Native <0.6 thì bạn cần thực hiện liên kết thủ công với react-native link react-native-safe-area-context


1
tôi đã thiếu bước cài đặt pod. cảm ơn.
lawph photo

2

Tôi đã được tìm kiếm và tìm thấy tiếp theo,

trước tiên, bạn cần làm sạch dự án

Mô-đun nhập khẩu thứ hai tại dự án

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)
            }
        }
    }

Tôi sẽ hy vọng rằng nó sẽ hữu ích, liên kết này cũng giúp tôi

phản ứng-nguồn gốc-an toàn-khu vực-bối cảnh


1

Làm việc cho tôi cho phiên bản dưới đây và trên iOS

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

Bước giải quyết

-Stop Metro Bundler hiện đang chạy

cài đặt pod cho ios

-thử lại ứng dụng

Hy vọng điều này sẽ giúp!


Android, không phải iOS
JIMJI1005

0

Trong trường hợp bạn KHÔNG sử dụng ReactRootView (tích hợp các ứng dụng hiện có vào Reac -igen) ...

Có thể bạn vẫn cần thêm gói của mình (các gói chưa hỗ trợ tự động nhấp nháy, ví dụ: chế độ xem khu vực an toàn mới ) vào MainApplication.java:

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

Trên cùng, nơi nhập khẩu là:

import com.th3rdwave.safeareacontext.SafeAreaContextPackage;

Thêm lớp SafeAreaContextPackage vào danh sách các gói đã xuất của bạn.

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

Nhưng các gói trong phản ứng bản địa, hoạt động không có ghi đè này
Alejandro Gonzalez

Thật vậy, các hoạt động không. Ứng dụng hiện: MainApplication (.java) | (.kt)
xác định

có lẽ, trong trường hợp của tôi, tôi cần thêm thư viện
Alejandro Gonzalez

Chắc chắn, tôi cho rằng bạn đang tích hợp một ứng dụng Android gốc hiện có với một dự án phản ứng gốc, phải không? Trong trường hợp này, bạn đang theo dõi các tài liệu chính thức hướng dẫn chúng tôi cách triển khai phản ứng tự nhiên trên các Hoạt động mà không cần Ứng dụng Phản ứng. Điều đó có thể được suy luận vì tôi có thể thấy bạn đang khai báo thủ công mReactInstanceManager, điều này sẽ làm tương tự như Ứng dụng React.
xác định

Đây là ý tưởng, vì dự án Reacigen chỉ là gói, sau đó tôi có một ứng dụng trong Android và ios. chúng là vật chứa nhưng mã và chức năng đang phản ứng tự nhiên
Alejandro Gonzalez

0

Dưới đây làm việc cho tôi:

  1. npm cài đặt Reac -igen-safe-area-bối cảnh
  2. phản ứng liên kết nguồn gốc phản ứng-nguồn gốc-an toàn-khu vực-bối cảnh
  3. Danh sách mục
  4. bên trong Android gradlew sạch
  5. bắt đầu
  6. npm chạy android
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.