[Android] possible regression with `:app:mergeReleaseResources` in 0.60.0-rc.1
See original GitHub issueProblems
Those problems were introduced in 0.60.0-rc:
-
import packageJson from './package.json'
causes errorExecution 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 tores/raw
which makes gradle complain. This works fine in 0.59.x, however. -
All those generated resources (e.g.
package.json
,app.json
…) get moved toandroid/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 thansrc
. - Because of this,
metro
will also complain:
I need to add those files into metro’s blacklist to stop this error. 😭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 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
Possible relevant commits
-
https://github.com/facebook/react-native/commit/962437fafd02c936754d1e992479056577cafd05
-
https://github.com/facebook/react-native/commit/eb534bca58a89ae306010626a8bdae92c23b8784
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
- Clone https://github.com/robertying/resources-repro
- yarn
- react-native run-android --variant release
Issue Analytics
- State:
- Created 4 years ago
- Reactions:1
- Comments:48 (19 by maintainers)
Top Results From Across the Web
No results found
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
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
@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.