我正在尝试使用以下文件结构构建React Native应用程序:
Kurts-MacBook-Pro-2:lucy-app kurtpeek$ tree -L 1
.
├── README.md
├── __tests__
├── android
├── app.json
├── assets
├── index.js
├── ios
├── node_modules
├── package.json
├── src
└── yarn.lock
package.json
是
{
"name": "app",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "concurrently 'emulator @Nexus_5X_API_27_x86' 'yarn android-noavd'",
"android-noavd": "react-native run-android",
"android-px": "concurrently 'emulator @Pixel_2_API_27' 'yarn android-noavd'",
"android:release": "cross-env ENVFILE=.env.release yarn run android",
"android:staging": "cross-env ENVFILE=.env.staging yarn run android",
"build:android:dev": "cross-env ENVFILE=.env ./android/gradlew assembleRelease -p ./android/",
"build:android:release": "cross-env ENVFILE=.env.release ./android/gradlew assembleRelease -p ./android/",
"build:android:staging": "cross-env ENVFILE=.env.staging ./android/gradlew assembleRelease -p ./android/",
"clean": "concurrently 'rimraf ./android/build/' 'rimraf ./ios/build/' 'rimraf node_modules/' 'yarn cache clean'",
"codepush": "yarn codepush:ios; yarn codepush:android",
"codepush:android": "code-push release-react Lucy-Eng/LucyApp-Android android",
"codepush:ios": "code-push release-react Lucy-Eng/LucyApp-iOS ios --plistFile ios/LucyApp/Info.plist",
"codepush:ls:apps": "code-push app ls",
"codepush:ls:deploys": "echo iOS && code-push deployment ls Lucy-Eng/LucyApp-iOS; echo ANDROID && code-push deployment ls Lucy-Eng/LucyApp-Android",
"codepush:promote:android": "code-push promote Lucy-Eng/LucyApp-Android Staging Production",
"codepush:promote:ios": "code-push promote Lucy-Eng/LucyApp-iOS Staging Production",
"ios": "react-native run-ios --simulator='iPhone 7'",
"ios8": "react-native run-ios --simulator='iPhone 8'",
"ios:release": "cross-env ENVFILE=.env.release yarn run ios",
"ios:staging": "cross-env ENVFILE=.env.staging yarn run ios",
"iosx": "react-native run-ios --simulator='iPhone X'",
"lint": "eslint .",
"log:android": "react-native log-android",
"log:ios": "react-native log-ios",
"react-devtools": "react-devtools",
"start": "./node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"analytics-react-native": "^1.2.0",
"immutability-helper": "^2.5.0",
"libphonenumber-js": "^1.1.10",
"lodash": "^4.17.4",
"moment": "^2.19.0",
"moment-timezone": "^0.5.14",
"prop-types": "^15.6.0",
"querystring": "^0.2.0",
"raven-for-redux": "^1.3.0",
"react": "^16.2.0",
"react-native": "^0.53.3",
"react-native-android-keyboard-adjust": "^1.1.1",
"react-native-code-push": "^5.3.2",
"react-native-config": "^0.11.5",
"react-native-country-picker-modal": "^0.5.1",
"react-native-datepicker": "^1.6.0",
"react-native-intercom": "^8.0.0",
"react-native-keyboard-aware-scroll-view": "^0.4.4",
"react-native-markdown-renderer": "^3.1.0",
"react-native-material-kit": "git://github.com/xinthink/react-native-material-kit#95b0980",
"react-native-material-menu": "^0.2.3",
"react-native-modal": "^4.1.1",
"react-native-onesignal": "^3.0.6",
"react-native-phone-input": "^0.2.1",
"react-native-router-flux": "4.0.0-beta.27",
"react-native-sentry": "^0.35.3",
"react-native-smart-splash-screen": "^2.3.5",
"react-native-snackbar": "^0.4.3",
"react-native-swiper": "^1.5.13",
"react-native-vector-icons": "^4.4.0",
"react-navigation": "^1.5.11",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"redux-devtools-extension": "^2.13.2",
"redux-form": "^7.3.0",
"redux-logger": "^3.0.6",
"redux-persist": "^4.10.1",
"redux-thunk": "^2.2.0",
"reselect": "^3.0.1",
"validator": "^10.2.0"
},
"devDependencies": {
"babel-core": "^6.26.3",
"babel-eslint": "^8.0.1",
"babel-jest": "21.2.0",
"babel-preset-react-native": "4.0.0",
"code-push-cli": "^2.1.6",
"concurrently": "^3.5.1",
"cross-env": "^5.1.4",
"enzyme": "^3.1.1",
"enzyme-adapter-react-16": "^1.0.4",
"eslint": "^4.8.0",
"eslint-config-airbnb": "^15.1.0",
"eslint-import-resolver-reactnative": "^1.0.2",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.4.0",
"eslint-plugin-react-native": "^3.1.0",
"jest": "21.2.1",
"react-devtools": "^3.1.0",
"react-dom": "^16.0.0",
"react-test-renderer": "16.0.0-beta.5",
"rimraf": "^2.6.2"
},
"jest": {
"preset": "react-native",
"setupTestFrameworkScriptFile": "<rootDir>src/test-config/enzyme-config.js"
},
"rnpm": {
"assets": [
"./assets/fonts/"
]
}
}
并且有一个ios/Podfile
如此:
target 'LucyApp' do
pod 'React', :path => '../node_modules/react-native', :subspecs => [
'Core',
'BatchedBridge',
'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText',
'RCTNetwork',
'RCTWebSocket', # needed for debugging
# 'RCTBridge',
# Add any other subspecs you want to use in your project
]
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link
pod 'Intercom'
pod 'CodePush', :path => '../node_modules/react-native-code-push'
pod 'SentryReactNative', :path => '../node_modules/react-native-sentry'
# Add new pods below this line
end
当我尝试在Xcode中构建此应用时,我从SentryReactNative
收到导入错误:
同样,当我尝试使用yarn ios
运行模拟器时,出现以下错误:
In file included from /Users/kurtpeek/Documents/Dev/lucy/lucy-app/node_modules/react-native-sentry/ios/RNSentry.m:1:
In file included from /Users/kurtpeek/Documents/Dev/lucy/lucy-app/node_modules/react-native-sentry/ios/RNSentry.h:4:
/Users/kurtpeek/Documents/Dev/lucy/lucy-app/node_modules/react-native/React/Base/RCTBridge.h:12:9: fatal error: 'React/RCTBridgeDelegate.h' file not found
#import <React/RCTBridgeDelegate.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~
** BUILD FAILED **
The following commands produced analyzer issues:
Analyze Base/RCTModuleMethod.mm normal x86_64
(1 command with analyzer issues)
The following build commands failed:
CompileC /Users/kurtpeek/Documents/Dev/lucy/lucy-app/ios/build/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/SentryReactNative.build/Objects-normal/x86_64/RNSentryEventEmitter.o /Users/kurtpeek/Documents/Dev/lucy/lucy-app/node_modules/react-native-sentry/ios/RNSentryEventEmitter.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
Installing build/Build/Products/Debug-iphonesimulator/LucyApp.app
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
Failed to install the requested application
An application bundle was not found at the provided path.
Provide a valid path to the desired application bundle.
Print: Entry, ":CFBundleIdentifier", Does Not Exist
Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/LucyApp.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
关注https://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies后,我首先想到我可能需要将'RCTBridge'
添加到subspec
的{{1}},这就是注释掉行的原因在'React'
。但是,如果我取消注释该行并尝试Podfile
,我会得到一个&#34; CocoaPods找不到兼容的版本&#34;错误:
如何更新导入以构建应用程序?
答案 0 :(得分:4)
试试这个 -
有关更多选项,请查看RN repo上的问题 - https://github.com/facebook/react-native/issues/12042
答案 1 :(得分:2)
为我工作,没有黑客(仅在不使用Swift的情况下才提供建议):
答案 2 :(得分:2)
请遵循以下步骤。对我有用。
terminal
ios
文件夹Xcode
pod install
.xcworkspace
文件。cmd+shift+k
)并构建(cmd+b
)项目。就是这样。快乐编码:)
答案 3 :(得分:0)
对于我来说,要解决发生的问题是通过在Podfile
中添加所有这些依赖项来完成的:
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/'
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
添加依赖项并运行以下命令后:
cd ios
rm -rf Pods
pod deintegrate
pod install
希望这也可以解决某人的问题。
答案 4 :(得分:0)
https://github.com/react-native-cameraroll/react-native-cameraroll/issues/142#issuecomment-587551072
如上一篇文章所述。
如果您的应用使用的是广告连播,则要正确链接@ react-native-community / cameraroll。
不是添加libRNCCameraroll.a而是将libreact-native-cameraroll.a添加到构建阶段->将二进制文件与库链接
答案 5 :(得分:-2)
我的问题是没有正确安装react-native软件包,因为我没有在npm install
上运行sudo
。
因此以下步骤将起作用:
sudo rm -rf node_modules
sudo npm install
然后重建项目。 希望这项工作对您也有用。