在试图升级react-native-navigation
时,在升级了react本机安全区域上下文之后,我得到了以下错误
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.
我的建筑剧本:
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')
}
}
发布于 2022-03-07 13:09:24
短期解决方案:
如果使用ReactNative <= 0.63,请在V3中安装react-native-safe-area-context
(例如3.4.1),因为它与v4 of safe-area-context
不兼容
漫长而痛苦的旅程,也弥补了我在路上的一些错误:
这有助于我解决这个问题:
首先,设置构建脚本-版本:
解释这些版本的功能:另一个标头--另一个标题但请记住,您的应用程序的minSdkVersion必须至少与您的依赖要求一样高
Google还使用它来确定一个应用程序可以安装到一个用户设备中的哪个设备上,这是Android提供前向兼容性的主要方式,它不应用行为更改,除非targetSdkVersion被更新了,targetSdkVersion是您的应用程序将使用的版本。更改此值不会改变运行时行为,您的compileSdkVersion不包含在APK _x中。
如果您想了解更多有关此的内容,请参见这里。
注意:如果您增加了compileSdkVersion,请确保您已经在您的PC上安装了新的SDK。在我的例子中,我忽略了这一点,得到了一个没有帮助的错误,比如:
* 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之后,我得到了以下错误:
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
// 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:
cd /android && ./gradlew wrapper --gradle-version 6.9
我还必须将build:gradle-tools改为4.2.2
dependencies {
classpath('com.android.tools.build:gradle:4.2.2')
}
https://stackoverflow.com/questions/71378027
复制相似问题