アップデート2017年8月6日:私は統合するための以下の私の手順に従って試してみました
はバックとiOSアプリにネイティブ反応するが反応させ、ネイティブの0.47を使用したとき、私は問題に走りました。代わりに、私はReact NativeをiOS上でBuckと連携させるために、あらかじめ構築されたライブラリにリンクすることにより、新しい簡単なアプローチをとっています。私はBuckのサンプルプロジェクトのレポをフォークし、それをのReact Nativeで作業させました。また、そのレポのREADMEをデモBuck ReactネイティブiOSアプリの実行方法と自分自身を統合する方法で更新しました。
注:このアプローチはREADMEに記載されていますが、これは実動アプリケーションでこれを使用する際に問題があるかもしれません。
このレポはまだJSを生産用にバンドルしていません。
古い答え:
私は、iOSプロジェクトでの作業バックを得ました。それは非常に進行中の作業ですが、動作します。いくつかの注意事項:node_modules/react-native/React
と node_modules/react-native/Libraries
から
- 私は手動でコピーしたファイルは、(下記のフォルダ構造を参照してください)。
- メインプロジェクトで警告をエラーとして処理していたため、XcodeでこれらのReact Native警告をすべて表示したくないため、
-w
とフラグを各ライブラリに追加する必要がありました。
- パターンの後にライブラリを追加する必要があります。それはまた、React Native podspecを見るのに役立ちます。
- の
vendor/reactnative
フォルダ(下記参照)に必要がないようなものをクリーニングする機会があります。
- 生産用にJSを正しくバンドルするには、おそらくいくつかの作業が必要です。現在、JSがサーバー(Node.jsなど)からフェッチされている場合にのみ機能します。ここで
私vendor/reactnative/BUCK
ファイルです。ここで
apple_library(
name = 'ReactNative',
srcs = glob([
'React/**/*.m',
'React/**/*.mm',
'React/**/*.c',
'React/**/*.S',
]),
exported_headers = glob([
'React/**/*.h',
]),
system_frameworks = [
'JavaScriptCore'
],
exported_linker_flags = [
'-lc++',
],
compiler_flags = [
'-Wno-error',
'-w'
],
visibility = ['PUBLIC'],
)
apple_library(
name = 'RCTWebSocket',
srcs = glob([
'Libraries/WebSocket/*.m',
]),
headers = glob([
'React/**/*.h',
]),
exported_headers = glob([
'Libraries/WebSocket/*.h',
]),
compiler_flags = [
'-Wno-error',
'-w'
],
visibility = ['PUBLIC'],
deps = [
':ReactNative',
]
)
apple_library(
name = 'RCTNetwork',
srcs = glob([
'Libraries/Network/*.m',
]),
headers = glob([
'React/**/*.h',
]),
exported_headers = glob([
'Libraries/Network/*.h',
]),
compiler_flags = [
'-Wno-error',
'-w'
],
visibility = ['PUBLIC'],
deps = [
':ReactNative',
]
)
apple_library(
name = 'RCTText',
srcs = glob([
'Libraries/Text/*.m',
]),
headers = glob([
'React/**/*.h',
]),
exported_headers = glob([
'Libraries/Text/*.h',
]),
compiler_flags = [
'-Wno-error',
'-w'
],
visibility = ['PUBLIC'],
deps = [
':ReactNative',
]
)
apple_library(
name = 'RCTImage',
srcs = glob([
'Libraries/Image/*.m',
]),
headers = glob([
'React/**/*.h',
'Libraries/Network/*.h'
]),
exported_headers = glob([
'Libraries/Image/*.h',
]),
compiler_flags = [
'-Wno-error',
'-w'
],
visibility = ['PUBLIC'],
deps = [
':ReactNative',
':RCTNetwork'
]
)
は私のプロジェクトでは、ベンダーのフォルダ内のフォルダ構造である:私は追加私のメインBUCKファイルのdeps
で次に
vendor/reactnative
├── BUCK
├── Libraries
│ ├── ART
│ ├── ActionSheetIOS
│ ├── AdSupport
│ ├── Animated
│ ├── AppRegistry
│ ├── AppState
│ ├── BatchedBridge
│ ├── BugReporting
│ ├── CameraRoll
│ ├── Components
│ ├── CustomComponents
│ ├── DebugComponentHierarchy
│ ├── Devtools
│ ├── EventEmitter
│ ├── Experimental
│ ├── Fetch
│ ├── Geolocation
│ ├── Image
│ ├── Inspector
│ ├── Interaction
│ ├── JavaScriptAppEngine
│ ├── LayoutAnimation
│ ├── Linking
│ ├── LinkingIOS
│ ├── Modal
│ ├── NativeAnimation
│ ├── NavigationExperimental
│ ├── Network
│ ├── Promise.js
│ ├── PushNotificationIOS
│ ├── QuickPerformanceLogger
│ ├── RCTTest
│ ├── RKBackendNode
│ ├── ReactIOS
│ ├── ReactNative
│ ├── Sample
│ ├── Settings
│ ├── Storage
│ ├── StyleSheet
│ ├── Text
│ ├── Utilities
│ ├── Vibration
│ ├── WebSocket
│ ├── promiseRejectionIsError.js
│ ├── react-native
│ └── vendor
├── React
│ ├── Base
│ ├── Executors
│ ├── Layout
│ ├── Modules
│ ├── Profiler
│ └── Views
└── reactnative.xcodeproj
├── project.pbxproj
└── xcuserdata
:
'//vendor/reactnative:ReactNative',
'//vendor/reactnative:RCTWebSocket',
'//vendor/reactnative:RCTText',
'//vendor/reactnative:RCTNetwork',
'//vendor/reactnative:RCTImage'
これを「mor」に絞り込むことができますか特定の問題?今では、私はちょっと広すぎるように見えますが、反応的なネイティブプロジェクトを構築してビルドするための完全なガイドを書かずに、確実にこれに答える方法はありません。 – Michael