我已经在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...
但是当我将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?
答案 0 :(得分:2)
我找到了答案。为了使gradle构建包括库的喷射代码,步骤很简单。
react-native run-android
。这将对库进行过滤,并将它们放在build文件夹中。./gradlew assembleDebug
。这样会将您在build文件夹中由jetifier编辑的代码捕获到APK中,而不会再抱怨了。我的情况是,我在克隆项目之后运行./gradlew assembleDebug
,然后再运行react-native run-android
。删除android文件夹中的build文件夹也会导致相同的情况。
答案 1 :(得分:0)
您可以运行
npx jetify
在组装调试之前