title: First React Native App: Task :app:processDebugMainManifest FAILED
body: <h1> Problem </h1>
  <p> I have followed the instructions as specified in https://reactnative.dev/docs/environment-setup, except for choclatey as I already have node etc. But I cannot build my app to reach the output RN boilerplate on the emulator(Step 2: in docs) following npx react-native run-android. I have searched for many many hours for a fix but I am not getting anywhere and it's becoming very frustrating. Below I have attached relevant outputs. </p> <br/> <p>Thank you in advance for your help. I'm only starting out so forgive me if I need to ask further questions to fully understand the issue.
  <h3> cmd output
  <pre><code>D:\CDLearn\ReactNative\AirBnb&gt;npx react-native run-android
  info Running jetifier to migrate libraries to AndroidX. You can disable it using &quot;--no-jetifier&quot; flag.
  Jetifier found 903 file(s) to forward-jetify. Using 8 workers...
  info Starting JS server...
  info Launching emulator...
  info Successfully launched emulator.
  info Installing the app...
  &gt; Task :app:processDebugMainManifest FAILED
  11 actionable tasks: 11 executed
  
  FAILURE: Build failed with an exception.
  
  * What went wrong:
  Execution failed for task ':app:processDebugMainManifest'.
  &gt; Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not &quot;opens java.io&quot; to unnamed module @379b3356
  
  * Try:
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
  
  * Get more help at https://help.gradle.org
  
  BUILD FAILED in 8s
  
  error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
  Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
  
  FAILURE: Build failed with an exception.
  
  * What went wrong:
  Execution failed for task ':app:processDebugMainManifest'.
  &gt; Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not &quot;opens java.io&quot; to unnamed module @379b3356
  
  * Try:
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
  
  * Get more help at https://help.gradle.org
  
  BUILD FAILED in 8s
  
      at makeError (D:\CDLearn\ReactNative\AirBnb\node_modules\execa\index.js:174:9)
      at D:\CDLearn\ReactNative\AirBnb\node_modules\execa\index.js:278:16
      at processTicksAndRejections (internal/process/task_queues.js:93:5)
      at async runOnAllDevices (D:\CDLearn\ReactNative\AirBnb\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:94:5)
      at async Command.handleAction (D:\CDLearn\ReactNative\AirBnb\node_modules\react-native\node_modules\@react-native-community\cli\build\index.js:186:9)
  info Run CLI with --verbose flag for more details.
  
  </code></pre>
  <h3>build.gradle (project) </h3>
  <pre><code>// Top-level build file where you can add configuration options common to all sub-projects/modules.
  
  buildscript {
      ext {
          buildToolsVersion = &quot;29.0.3&quot;
          minSdkVersion = 21
          compileSdkVersion = 29
          targetSdkVersion = 29
          ndkVersion = &quot;20.1.5948944&quot;
      }
      repositories {
          google()
          jcenter()
      }
      dependencies {
          classpath(&quot;com.android.tools.build:gradle:4.1.0&quot;)
          // NOTE: Do not place your application dependencies here; they belong
          // in the individual module build.gradle files
      }
  }
  
  allprojects {
      repositories {
          mavenLocal()
          maven {
              // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
              url(&quot;$rootDir/../node_modules/react-native/android&quot;)
          }
          maven {
              // Android JSC is installed from npm
              url(&quot;$rootDir/../node_modules/jsc-android/dist&quot;)
          }
  
          google()
          jcenter()
          maven { url 'https://www.jitpack.io' }
      }
  }
  
  </code></pre>
  build.gradle (module) </h3>
  <pre><code>apply plugin: &quot;com.android.application&quot;
  
  import com.android.build.OutputFile
  
  /**
   * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
   * and bundleReleaseJsAndAssets).
   * These basically call `react-native bundle` with the correct arguments during the Android build
   * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
   * bundle directly from the development server. Below you can see all the possible configurations
   * and their defaults. If you decide to add a configuration block, make sure to add it before the
   * `apply from: &quot;../../node_modules/react-native/react.gradle&quot;` line.
   *
   * project.ext.react = [
   *   // the name of the generated asset file containing your JS bundle
   *   bundleAssetName: &quot;index.android.bundle&quot;,
   *
   *   // the entry file for bundle generation. If none specified and
   *   // &quot;index.android.js&quot; exists, it will be used. Otherwise &quot;index.js&quot; is
   *   // default. Can be overridden with ENTRY_FILE environment variable.
   *   entryFile: &quot;index.android.js&quot;,
   *
   *   // https://reactnative.dev/docs/performance#enable-the-ram-format
   *   bundleCommand: &quot;ram-bundle&quot;,
   *
   *   // whether to bundle JS and assets in debug mode
   *   bundleInDebug: false,
   *
   *   // whether to bundle JS and assets in release mode
   *   bundleInRelease: true,
   *
   *   // whether to bundle JS and assets in another build variant (if configured).
   *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
   *   // The configuration property can be in the following formats
   *   //         'bundleIn${productFlavor}${buildType}'
   *   //         'bundleIn${buildType}'
   *   // bundleInFreeDebug: true,
   *   // bundleInPaidRelease: true,
   *   // bundleInBeta: true,
   *
   *   // whether to disable dev mode in custom build variants (by default only disabled in release)
   *   // for example: to disable dev mode in the staging build type (if configured)
   *   devDisabledInStaging: true,
   *   // The configuration property can be in the following formats
   *   //         'devDisabledIn${productFlavor}${buildType}'
   *   //         'devDisabledIn${buildType}'
   *
   *   // the root of your project, i.e. where &quot;package.json&quot; lives
   *   root: &quot;../../&quot;,
   *
   *   // where to put the JS bundle asset in debug mode
   *   jsBundleDirDebug: &quot;$buildDir/intermediates/assets/debug&quot;,
   *
   *   // where to put the JS bundle asset in release mode
   *   jsBundleDirRelease: &quot;$buildDir/intermediates/assets/release&quot;,
   *
   *   // where to put drawable resources / React Native assets, e.g. the ones you use via
   *   // require('./image.png')), in debug mode
   *   resourcesDirDebug: &quot;$buildDir/intermediates/res/merged/debug&quot;,
   *
   *   // where to put drawable resources / React Native assets, e.g. the ones you use via
   *   // require('./image.png')), in release mode
   *   resourcesDirRelease: &quot;$buildDir/intermediates/res/merged/release&quot;,
   *
   *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
   *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
   *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
   *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
   *   // for example, you might want to remove it from here.
   *   inputExcludes: [&quot;android/**&quot;, &quot;ios/**&quot;],
   *
   *   // override which node gets called and with what additional arguments
   *   nodeExecutableAndArgs: [&quot;node&quot;],
   *
   *   // supply additional arguments to the packager
   *   extraPackagerArgs: []
   * ]
   */
  
  project.ext.react = [
      enableHermes: false,  // clean and rebuild if changing
  ]
  
  apply from: &quot;../../node_modules/react-native/react.gradle&quot;
  
  /**
   * Set this to true to create two separate APKs instead of one:
   *   - An APK that only works on ARM devices
   *   - An APK that only works on x86 devices
   * The advantage is the size of the APK is reduced by about 4MB.
   * Upload all the APKs to the Play Store and people will download
   * the correct one based on the CPU architecture of their device.
   */
  def enableSeparateBuildPerCPUArchitecture = false
  
  /**
   * Run Proguard to shrink the Java bytecode in release builds.
   */
  def enableProguardInReleaseBuilds = false
  
  /**
   * The preferred build flavor of JavaScriptCore.
   *
   * For example, to use the international variant, you can use:
   * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
   *
   * The international variant includes ICU i18n library and necessary data
   * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
   * give correct results when using with locales other than en-US.  Note that
   * this variant is about 6MiB larger per architecture than default.
   */
  def jscFlavor = 'org.webkit:android-jsc:+'
  
  /**
   * Whether to enable the Hermes VM.
   *
   * This should be set on project.ext.react and mirrored here.  If it is not set
   * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
   * and the benefits of using Hermes will therefore be sharply reduced.
   */
  def enableHermes = project.ext.react.get(&quot;enableHermes&quot;, false);
  
  android {
      ndkVersion rootProject.ext.ndkVersion
  
      compileSdkVersion rootProject.ext.compileSdkVersion
  
      compileOptions {
          sourceCompatibility JavaVersion.VERSION_1_8
          targetCompatibility JavaVersion.VERSION_1_8
      }
  
      defaultConfig {
          applicationId &quot;com.airbnb&quot;
          minSdkVersion rootProject.ext.minSdkVersion
          targetSdkVersion rootProject.ext.targetSdkVersion
          versionCode 1
          versionName &quot;1.0&quot;
      }
      splits {
          abi {
              reset()
              enable enableSeparateBuildPerCPUArchitecture
              universalApk false  // If true, also generate a universal APK
              include &quot;armeabi-v7a&quot;, &quot;x86&quot;, &quot;arm64-v8a&quot;, &quot;x86_64&quot;
          }
      }
      signingConfigs {
          debug {
              storeFile file('debug.keystore')
              storePassword 'android'
              keyAlias 'androiddebugkey'
              keyPassword 'android'
          }
      }
      buildTypes {
          debug {
              signingConfig signingConfigs.debug
          }
          release {
              // Caution! In production, you need to generate your own keystore file.
              // see https://reactnative.dev/docs/signed-apk-android.
              signingConfig signingConfigs.debug
              minifyEnabled enableProguardInReleaseBuilds
              proguardFiles getDefaultProguardFile(&quot;proguard-android.txt&quot;), &quot;proguard-rules.pro&quot;
          }
      }
  
      // applicationVariants are e.g. debug, release
      applicationVariants.all { variant -&gt;
          variant.outputs.each { output -&gt;
              // For each separate APK per architecture, set a unique version code as described here:
              // https://developer.android.com/studio/build/configure-apk-splits.html
              // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
              def versionCodes = [&quot;armeabi-v7a&quot;: 1, &quot;x86&quot;: 2, &quot;arm64-v8a&quot;: 3, &quot;x86_64&quot;: 4]
              def abi = output.getFilter(OutputFile.ABI)
              if (abi != null) {  // null for the universal-debug, universal-release variants
                  output.versionCodeOverride =
                          defaultConfig.versionCode * 1000 + versionCodes.get(abi)
              }
  
          }
      }
  }
  
  dependencies {
      implementation fileTree(dir: &quot;libs&quot;, include: [&quot;*.jar&quot;])
      //noinspection GradleDynamicVersion
      implementation &quot;com.facebook.react:react-native:+&quot;  // From node_modules
  
      implementation &quot;androidx.swiperefreshlayout:swiperefreshlayout:1.0.0&quot;
  
      debugImplementation(&quot;com.facebook.flipper:flipper:${FLIPPER_VERSION}&quot;) {
        exclude group:'com.facebook.fbjni'
      }
  
      debugImplementation(&quot;com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}&quot;) {
          exclude group:'com.facebook.flipper'
          exclude group:'com.squareup.okhttp3', module:'okhttp'
      }
  
      debugImplementation(&quot;com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}&quot;) {
          exclude group:'com.facebook.flipper'
      }
  
      if (enableHermes) {
          def hermesPath = &quot;../../node_modules/hermes-engine/android/&quot;;
          debugImplementation files(hermesPath + &quot;hermes-debug.aar&quot;)
          releaseImplementation files(hermesPath + &quot;hermes-release.aar&quot;)
      } else {
          implementation jscFlavor
      }
  }
  
  // Run this once to be able to run the application with BUCK
  // puts all compile dependencies into folder libs for BUCK to use
  task copyDownloadableDepsToLibs(type: Copy) {
      from configurations.compile
      into 'libs'
  }
  
  apply from: file(&quot;../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle&quot;); applyNativeModulesAppBuildGradle(project)
  </code></pre>