为什么 gradlew assembleDebug 没有 运行 jetifier,而 react-native 运行-android 运行 jetifier?
Why gradlew assembleDebug doesn't run jetifier, while react-native run-android run jetifier?
我在 gradle.properties 上设置了 android.useAndroidX = true
和 android.enableJetifier = true
。但是当我 运行 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...
但是当我将目录更改为android 目录和运行 ./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?
我找到了答案。为了让您的 gradle 构建包含库的 jetifier-ed 代码,步骤很简单。
- 运行
react-native run-android
先。这将对库进行 jetifier 处理并将它们放入构建文件夹中。
- 运行
./gradlew assembleDebug
。这会将构建文件夹中的 jetifier-ed 代码抓取到 APK 中,而不会再抱怨了。
我的情况是,在克隆项目之后,我 运行 ./gradlew assembleDebug
之前 运行 react-native run-android
。删除 android 文件夹中的构建文件夹也会导致同样的情况。
你可以运行
npx jetify
在组装调试之前
我在 gradle.properties 上设置了 android.useAndroidX = true
和 android.enableJetifier = true
。但是当我 运行 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...
但是当我将目录更改为android 目录和运行 ./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?
我找到了答案。为了让您的 gradle 构建包含库的 jetifier-ed 代码,步骤很简单。
- 运行
react-native run-android
先。这将对库进行 jetifier 处理并将它们放入构建文件夹中。 - 运行
./gradlew assembleDebug
。这会将构建文件夹中的 jetifier-ed 代码抓取到 APK 中,而不会再抱怨了。
我的情况是,在克隆项目之后,我 运行 ./gradlew assembleDebug
之前 运行 react-native run-android
。删除 android 文件夹中的构建文件夹也会导致同样的情况。
你可以运行
npx jetify
在组装调试之前