更新 React Native 0.72 后,react-native-vactor-icon 导致错误

Atu*_*our 1 android gradle react-native

  • 出了什么问题:任务“:app:lintVitalAnalyzeRelease”的配置出现问题(类型“AndroidLintAnalyzeTask”)。
    • Gradle 检测到以下位置存在问题:“C:\React-Projects\English-Muni\android\app\build\intermediates\ReactNativeVectorIcons”。

      原因:任务“:app:lintVitalAnalyzeRelease”使用任务“:app:copyReactNativeVectorIconFonts”的此输出,而没有声明显式或隐式依赖项。这可能会导致产生不正确的结果,具体取决于任务的执行顺序。

      可能的解决方案:

      1. 将任务 ':app:copyReactNativeVectorIconFonts' 声明为 ':app:lintVitalAnalyzeRelease' 的输入。
      2. 使用 Task#dependsOn 声明对 ':app:lintVitalAnalyzeRelease' 中的 ':app:copyReactNativeVectorIconFonts' 的显式依赖。
      3. 使用 Task#mustRunAfter 声明对 ':app:lintVitalAnalyzeRelease' 中的 ':app:copyReactNativeVectorIconFonts' 的显式依赖。

      有关此问题的更多详细信息,请参阅https://docs.gradle.org/8.0.1/userguide/validation_problems.html#implicit_dependency 。

这是 app/build.gradle 文件

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: "com.android.application"
apply plugin: "com.facebook.react"


import com.android.build.OutputFile


android {
  ndkVersion rootProject.ext.ndkVersion

  compileSdkVersion rootProject.ext.compileSdkVersion

  namespace "com.englishmuni"
defaultConfig {
    applicationId "com.englishmuni"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 36
    versionName "1.0.32"
    buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", 
    isNewArchitectureEnabled().toString()
    multiDexEnabled true
  }
   }

     }

dependencies {

  implementation project(':react-native-vector-icons')
}

apply from: file("../../node_modules/@react-native-community/cli-platform- 
android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
Run Code Online (Sandbox Code Playgroud)

小智 7

这是一个更简单的补丁,适用于 RN 0.72 上的变体,用于矢量图标。您必须将这些行替换为/node_modules/react-native-vector-icons/fonts.gradle

afterEvaluate {
     .
     .
     .
     android.applicationVariants.all { def variant ->
        def targetName = variant.name.capitalize()
        def lintVitalAnalyzeTask = tasks.findByName("lintVitalAnalyze${targetName}")
            if (lintVitalAnalyzeTask) {
                lintVitalAnalyzeTask.dependsOn(fontCopyTask)
            }
        def generateAssetsTask = tasks.findByName("generate${targetName}Assets")
        generateAssetsTask.dependsOn(fontCopyTask)
    }
Run Code Online (Sandbox Code Playgroud)

然后修补该包。npx patch-package react-native-vector-icons