question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Android] possible regression with `:app:mergeReleaseResources` in 0.60.0-rc.1

See original GitHub issue

Problems

Those problems were introduced in 0.60.0-rc:

  1. import packageJson from './package.json' causes error

    Execution failed for task ':app:mergeReleaseResources'.
    > /Users/rying/repos/resourcesRepro/android/app/src/main/res/raw/package.json: Error: package is not a valid resource name (reserved Java keyword)
    

    Apparently package.json got copied to res/raw which makes gradle complain. This works fine in 0.59.x, however.

  2. All those generated resources (e.g. package.json, app.json…) get moved to android/app/src/main/res.

    • I believe those generated resources should not be moved into this directory since they are generated on the fly. The current behavior in 0.60.0-rc makes it difficult for Git version control - they should always in build rather than src.
    • Because of this, metro will also complain:
      jest-haste-map: Haste module naming collision: myapp
        The following files share their name; please adjust your hasteImpl:
          * <rootDir>/package.json
          * <rootDir>/android/app/src/main/res/raw/package.json
      
      I need to add those files into metro’s blacklist to stop this error. 😭

Possible relevant commits

React Native version:

  System:
    OS: macOS 10.14.5
    CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
    Memory: 194.87 MB / 8.00 GB
    Shell: 5.7.1 - /usr/local/bin/zsh
  Binaries:
    Node: 12.4.0 - /usr/local/Cellar/node/12.4.0/bin/node
    Yarn: 1.16.0 - /usr/local/Cellar/node/12.4.0/bin/yarn
    npm: 6.9.0 - /usr/local/Cellar/node/12.4.0/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
  IDEs:
    Android Studio: 3.4 AI-183.6156.11.34.5522156
    Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6 
    react-native: 0.60.0-rc.1 => 0.60.0-rc.1

Steps To Reproduce

  1. Clone https://github.com/robertying/resources-repro
  2. yarn
  3. react-native run-android --variant release

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Reactions:1
  • Comments:48 (19 by maintainers)

github_iconTop GitHub Comments

3reactions
mikehardycommented, Aug 13, 2019

also, a trick, if you have modified a package after install, by directly editing the files in node_modules, then your change won’t work if you delete your own node_modules and reinstall, and it won’t work on CI or co-workers machines etc, because the file needs to be changed every time.

Easy solution though - this is the trick - install the wonderful patch-package npm module, hook it in your postinstall in package.json, and after editing in node modules run npx patch-package <name of module you edited>.

That diffs the original module vs the changes you made, creates a patch, puts it in the ./patches/ directory with a versioned name and everything, and now your change will be applied for everyone postinstall (so it works on CI etc) and later if the module is updated it will give you a nice warning to see if you still need your patch.

react-native development is painful (to me) without this tool…with it, no problems

2reactions
robertyingcommented, Jul 8, 2019

@Fouppy Unfortunately, this is still an issue. I opened a PR https://github.com/facebook/metro/pull/420 to metro but they don’t seem to be responding. So I guess this problem will exist for some time.

But meanwhile, you could use the patched file to get around.

Read more comments on GitHub >

github_iconTop Results From Across the Web

No results found

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found