5

我已经设置android.useAndroidX = trueandroid.enableJetifier = true在 gradle.properties 上。但是当我跑步时,react-native run-android我看到:

info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1902 file(s) to forward-jetify. Using 4 workers...

但是当我将 dir 更改为 android dir 并运行./gradlew assembleDebug时,我没有看到这样的东西。android.support.*因此,我的构建在导入库的任何地方都会中断。

> Task :react-native-app-auth:compileDebugJavaWithJavac FAILED
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/
RNAppAuthModule.java:10: error: package android.support.annotation does not exist
import android.support.annotation.Nullable;
                                 ^
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/RNAppAuthModule.java:11: error: cannot find symbol
import android.support.customtabs.CustomTabsCallback;
                                 ^
  symbol:   class CustomTabsCallback
  location: package android.support.customtabs
.../node_modules/react-native-app-auth/android/src/main/java/com/rnappauth/RNAppAuthModule.java:12: error: cannot find symbol
import android.support.customtabs.CustomTabsClient;
                                 ^
  symbol:   class CustomTabsClient
  location: package android.support.customtabs

(25 more errors)

为什么会这样?我怎样才能解决这个问题?有没有办法从外部强制 gradlew 运行 jetifier?

4

2 回答 2

5

我找到了答案。为了让您的 gradle 构建包含您的库的 jetifier 代码,步骤很简单。

  1. 先跑react-native run-android。这将喷射库并将它们放在构建文件夹中。
  2. 运行./gradlew assembleDebug。这会将构建文件夹中的 jetifier-ed 代码抓取到 APK 中,而不会再抱怨了。

我的情况是我在克隆项目之后运行./gradlew assembleDebug之前运行。react-native run-android删除 android 文件夹中的 build 文件夹也会导致同样的情况。

于 2019-09-17T09:02:16.527 回答
0

你可以跑

npx jetify

组装前调试

于 2020-07-24T11:26:25.600 回答