描述
react-native codegen 忽略了 package.json/codeGenConfig/andorid/javaPackageName 中的 javaPackageName,并使用了 com.facebook.fbreact.specs
重现步骤
请参考 https://github.com/mfazekas/rn-codegen-javapackagename
请查看 react-native/packages/react-native/scripts/codegen/generate-artifacts-executor.js 的第454行至第462行 2a6a895
| | generateSpecsCLIExecutor.generateSpecFromInMemorySchema( |
| | platform, |
| | schemaInfo.schema, |
| | tmpOutputDir, |
| | libraryName, |
| | 'com.facebook.fbreact.specs', |
| | schemaInfo.library.config.type, |
| | useLocalIncludePaths, |
| | ); |
React Native 版本
0.74.2
受影响的平台
运行时 - Android
领域
代码生成
npx react-native info
的输出
% npx react-native info
info Fetching system and libraries information...
System:
OS: macOS 14.5
CPU: (12) arm64 Apple M2 Max
Memory: 118.64 MB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.20.2
path: ~/.nvm/versions/node/v18.20.2/bin/node
Yarn:
version: 3.6.4
path: ~/.nvm/versions/node/v18.20.2/bin/yarn
npm:
version: 10.5.0
path: ~/.nvm/versions/node/v18.20.2/bin/npm
Watchman:
version: 2024.05.06.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.14.2
path: /Users/boga/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.5
- iOS 17.5
- macOS 14.5
- tvOS 17.5
- visionOS 1.2
- watchOS 10.5
Android SDK: Not Found
IDEs:
Android Studio: 2024.1 AI-241.15989.150.2411.11948838
Xcode:
version: 15.4/15F31d
path: /usr/bin/xcodebuild
Languages:
Java:
version: 20.0.1
path: /usr/bin/javac
Ruby:
version: 2.7.8
path: /Users/boga/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.74.2
wanted: 0.74.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: Not found
newArchEnabled: false
堆栈跟踪或日志
n/a
可复现步骤
https://github.com/mfazekas/rn-codegen-javapackagename/
截图和视频
- 无响应*
8条答案
按热度按时间vs3odd8k1#
这是一个已知的bug。问题无论你是否使用
includesGeneratedCode
都会发生。我已经有一个内部票据来解决这个问题。
遗憾的是,修复它将对每个代码生成用户造成破坏性的变化,所以我们在何时修复方面要谨慎一些。
7ivaypg92#
感谢cortinico。
另一个问题是
outputDir
不是相对于包根目录,而是相对于当前工作目录。因此,在复现器中运行:它会生成
./android/codegen
,而不是../RTNCalculator/android/codegen
。RTNCalculator/package.json
:这是个bug吗?我应该为它单独开一个问题吗?
weylhg0b3#
它生成了
./android/codegen
,而不是../RTNCalculator/android/codegen
。我不确定这是否符合你之前的陈述。
如果正如你所说,路径是相对于当前工作目录的(在你的示例中是
./ReproducerApp
),那么内容应该生成在:不是吗?
sigwle7e4#
我不确定这是否符合你之前的陈述。如果正如你所说,路径是相对于当前工作目录的(在你的例子中是
./ReproducerApp
),那么内容应该生成在:不是吗?
抱歉如果我说得不清楚。我本以为
总是生成到
RTNCaclulator/android/codegen
,所以总是进入库,但如果我从应用程序目录运行它会在应用程序中创建一个新文件夹它生成到
ReproducerApp/android/codegen
3mpgtkmj5#
@dmytrorykun 在这里可以帮您更多,因为他执行了
react-native codegen
命令。但是是的,这可能是一个单独的错误,需要单独的问题。zaqlnxep6#
这绝对是个错误。我来看看
kupeojn67#
@dmytrorykun打开了问题#45112
t9eec4r08#
我们一直在解决react-native-builder-bob中的问题。我已经在那里添加了一个脚本来修补这种行为。对于那些想要使用这个的人,当我们将其部署到bob时,你们将能够用
--target codegen
调用它,它应该生成代码生成规范并修补这个问题。