首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >react本机-安全区域-上下文抛出“未解析引用:”错误

react本机-安全区域-上下文抛出“未解析引用:”错误
EN

Stack Overflow用户
提问于 2022-03-07 08:08:01
回答 1查看 7.8K关注 0票数 4

在试图升级react-native-navigation时,在升级了react本机安全区域上下文之后,我得到了以下错误

代码语言:javascript
运行
复制
Note: Recompile with -Xlint:deprecation for details.
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (12, 34): Unresolved reference: R
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (15, 34): Unresolved reference: getInsets
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (16, 24): Unresolved reference: Type
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (17, 28): Unresolved reference: Type
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (18, 28): Unresolved reference: Type
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt: (55, 50): Unresolved reference: R
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (8, 37): Unresolved reference: FabricViewStateManager
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (9, 37): Unresolved reference: FabricViewStateManager
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (19, 66): Unresolved reference: HasFabricViewStateManager
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (24, 41): Unresolved reference: FabricViewStateManager
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (26, 3): 'getFabricViewStateManager' overrides nothing
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt: (26, 45): Unresolved reference: FabricViewStateManager
e: /home/me/myProject/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt: (71, 10): Unresolved reference: fabricViewStateManager

FAILURE: Build failed with an exception.

我的建筑剧本:

代码语言:javascript
运行
复制
buildscript {
    ext {
        buildToolsVersion = "29.0.2"
        minSdkVersion = 16
        compileSdkVersion = 29
        targetSdkVersion = 29
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath('com.android.tools.build:gradle:3.5.3')
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-03-07 13:09:24

短期解决方案:

如果使用ReactNative <= 0.63,请在V3中安装react-native-safe-area-context (例如3.4.1),因为它与v4 of safe-area-context不兼容

漫长而痛苦的旅程,也弥补了我在路上的一些错误:

这有助于我解决这个问题:

首先,设置构建脚本-版本:

  • minSdkVersion = 24 (即Android7nougat)
  • targetSdkVersion =
  • compileSdkVersion = 31 (此处设置最新可能)

解释这些版本的功能:另一个标头--另一个标题但请记住,您的应用程序的minSdkVersion必须至少与您的依赖要求一样高

Google还使用它来确定一个应用程序可以安装到一个用户设备中的哪个设备上,这是Android提供前向兼容性的主要方式,它不应用行为更改,除非targetSdkVersion被更新了,targetSdkVersion是您的应用程序将使用的版本。更改此值不会改变运行时行为,您的compileSdkVersion不包含在APK _x中。

如果您想了解更多有关此的内容,请参见这里

注意:如果您增加了compileSdkVersion,请确保您已经在您的PC上安装了新的SDK。在我的例子中,我忽略了这一点,得到了一个没有帮助的错误,比如:

代码语言:javascript
运行
复制
* Where:
Build file '/home/me/myProject/android/app/build.gradle' line: 130

* What went wrong:
A problem occurred evaluating project ':app'.
> No signature of method: build_bzoaxr1mlfb80yiyz2yt0w97u.android() is applicable for argument types: (build_bzoaxr1mlfb80yiyz2yt0w97u$_run_closure1) values: [build_bzoaxr1mlfb80yiyz2yt0w97u$_run_closure1@1068678f]

例如,在中,如下所示:

然后,看看升级级插件。

https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle

升级Gradle之后,我得到了以下错误:

代码语言:javascript
运行
复制
10:01   Gradle sync failed: Could not get unknown property 'compile' for configuration container of type org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer. (3 s 273 ms)

所以我把from configurations.compile改成了implementation in android/app/build.gradle

代码语言:javascript
运行
复制
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.implementation
    into 'libs'
}

然后,分级同步成功,没有错误。

当我在android studio中这样做时,我已经清除了购买run > clean project的项目,但是您也可以去/android并运行./gradlew clean

但是当我尝试启动应用程序时,我遇到了一个问题。在对堆栈溢出进行了一些搜索之后,原因似乎是RN仍然与Gradle7不兼容。所以回到6.9:

代码语言:javascript
运行
复制
cd /android &&  ./gradlew wrapper --gradle-version 6.9

我还必须将build:gradle-tools改为4.2.2

代码语言:javascript
运行
复制
dependencies {
        classpath('com.android.tools.build:gradle:4.2.2')
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71378027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档