React Native 执行任务“:expo权限:compileDebugKotlin”失败

kd3sttzy  于 2023-01-14  发布在  React
关注(0)|答案(6)|浏览(383)

我正在开发一个React原生应用程序,其中包含了一些expo库(裸工作流)。我已经成功地使用了expo-location,但现在我也安装了expo-camera后,应用程序将无法再使用npm run android构建,还没有在ios上尝试。
它将在:expo-permissions:compileDebugKotlin步骤崩溃。
我确实在另一个论坛上发现了这个问题,他们说要把buildToolsVersionbuild.gradle更新到29.0.2,但是它已经在29.0.2上了。然后我更新了react-native-unimodules,它需要使用expo库,并且包含expo权限。它不起作用。现在,我的库的当前版本是:

"react-native-unimodules": "^0.12.0"

"expo-permissions": "~10.0.0"

"expo-camera": "^9.1.1"

你有什么想法吗?有人也遇到过这个问题吗?
谢谢
更详细的堆栈跟踪如下所示:

Task :expo-permissions:compileDebugKotlin FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.2/userguide/command_line_interface.html#sec:command_line_warnings
153 actionable tasks: 4 executed, 149 up-to-date
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (16, 40): Unresolved reference: PermissionAwareActivity
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (170, 17): Unresolved reference: PermissionAwareActivity
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (236, 19): Unresolved reference: PermissionAwareActivity
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (237, 62): Too many arguments for public final fun requestPermissions(@NonNull p
0: Array<(out) String!>, p1: Int): Unit defined in android.app.Activity
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (237, 64): Cannot infer a type for this parameter. Please specify it explicitly.
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (237, 77): Cannot infer a type for this parameter. Please specify it explicitly.
e: app\node_modules\expo-permissions\android\src\main\java\expo\modules\permissions\PermissionsService.kt: (237, 97): Cannot infer a type for this parameter. Please specify it explicitly.

FAILURE: Build failed with an exception.
3lxsmp7m

3lxsmp7m1#

您可能不想使用其他人在线引用的版本,而是使用您本地安装的版本,这取决于您上次更新Android SDK的时间。
在Windows上,您可以查找SDK版本(工具版本):

dir %ANDROID_SDK_ROOT%\build-tools
  • nix系统可能会有类似的SDK路径(未检查):
ls -al $ANDROID_SDK_ROOT\build-tools
nxowjjhe

nxowjjhe2#

您可能安装了较新版本的expo-camera。我的expo-clipboard软件包也遇到了同样的问题。
我的项目使用的是expo@44,我遵循了官方文档,运行了npm install expo-clipboard,安装了最新版本,这是兼容最新的世博会版本在这个时候是expo@46
简单的解决方法是根据您的expo版本使用正确的版本。
1.在你的package.json中找到你的expo版本。我的是"expo": "~44.0.0",
1.转到https://github.com/expo/expo/tree/sdk-{version}/packages(我的是https://github.com/expo/expo/tree/sdk-44/packages)。
1.找到要使用的软件包(如expo-clipboard),然后转到其package.json文件以检查版本Ex. www.example.com https://github.com/expo/expo/blob/sdk-44/packages/expo-clipboard/package.json#L3
1.安装该特定版本npm install expo-clipboard@2.1.1
希望能有所帮助!

c6ubokkw

c6ubokkw3#

我已经通过将react-native-unimodules从版本0.13.2降级到0.12.0解决了此问题

g9icjywg

g9icjywg4#

我通过将react-native-unimodules从版本0.13.2降级到0.12.0解决了这个问题,我认为问题是新版本的unimodules需要升级您的android构建工具,因此正确的做法不是降级unimodules,而是将构建工具从28.0.0升级到29.0.3,如下所示:

buildscript {
    ext {
        buildToolsVersion = "29.0.3"
        minSdkVersion = 21
        compileSdkVersion = 29
        targetSdkVersion = 29
mtb9vblg

mtb9vblg5#

我通过将我的expo版本从43.0.0减少到40.0.0并设置“sdkVersion”来使我的工作正常:“38.0.0”。看起来这些版本彼此不匹配,或者与其他一些expo依赖项不匹配。
应用程序json中:

{
  "name": "MyApp",
  "displayName": "MyApp",
      "expo": {
        "name": "MyApp",
        "slug": "myapp.app",
        "sdkVersion": "38.0.0"
      }
}

...并在包中。json

"dependencies" {
    "expo": "^40.0.0",
    "expo-file-system": "^9.3.0",
    "expo-linking": "~2.0.1",
    "expo-splash-screen": "~0.8.0",
    "expo-status-bar": "~1.0.3",
    "expo-updates": "^0.4.2",
}
siv3szwd

siv3szwd6#

当我重新生成项目或尝试在设备上运行时,也遇到了同样的问题。
我通过在我的expo项目上使用expo install expo-permissions安装expo权限,然后转到Android Studio并同步我的项目,之后我清理我的项目,您可以在build/Clean Project上找到该项目,之后我在Android Studio上安装Kotlin扩展,之后再次清理项目,然后rebuild Project(build/Rebuild Project)。
这些步骤解决了我的问题。

相关问题