Skip to content

Unresolved reference: PackageList // native_modules.gradle #600

@sb-bartworx

Description

@sb-bartworx

Environment

System:
OS: macOS 10.14.5
CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Memory: 26.03 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 10.15.3 - ~/.nvm/versions/node/v10.15.3/bin/node
Yarn: 1.17.3 - /usr/local/bin/yarn
npm: 6.4.1 - ~/.nvm/versions/node/v10.15.3/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 12.4, macOS 10.14, tvOS 12.4, watchOS 5.3
Android SDK:
API Levels: 28
Build Tools: 28.0.3
System Images: android-21 | Google APIs Intel x86 Atom_64, android-28 | Google APIs Intel x86 Atom_64
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 10.3/10G8 - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: 0.60.3 => 0.60.3

Description

After the upgrade to RN 0.60.3 I can't build my Android App anymore. The build fails with the message: Unresolved reference: PackageList.

Reproducible Demo

Just migrate to RN 0.60.3 and the new autolink system.
The PackageList.java file is created from native_modules.gradle (https://github.com/react-native-community/cli/blob/master/packages/platform-android/native_modules.gradle)
It seem that the added (gradle) android.sourceSets.main.java.srcDirs is wrong.

def generatedSrcDir = new File(buildDir, "generated/rncli/src/main/java/com/facebook/react")

task generatePackageList {
    doLast {
      autoModules.generatePackagesFile(generatedCodeDir, generatedFileName, generatedFileContentsTemplate)
    }
  }

preBuild.dependsOn generatePackageList

android {
    sourceSets {
      main {
        java {
          srcDirs += generatedSrcDir
        }
      }
    }
  }

The generatedSrcDir contains the (Java) Package. Maybe the issue.
Everything works fine, if I change the script to:

def generatedSrcDir = "generated/rncli/src/main/java"
def generatedCodeDir = new File(buildDir, "$generatedSrcDir/com/facebook/react")

task generatePackageList {
    doLast {
      autoModules.generatePackagesFile(generatedCodeDir, generatedFileName, generatedFileContentsTemplate)
    }
  }

preBuild.dependsOn generatePackageList

android {
    sourceSets {
      main {
        java {
          srcDirs += "build/$generatedSrcDir"
        }
      }
    }
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions