ReactNative*Android編1って書いてるけどAndroid編2があるとかiOS編があるとかは未定ですReactNativeの「Native」の部分がどう動いてるのか気になったのでソース見てみました。細かい所まで見てないですし、間違った認識かもしれませんのであしからず。エントリポイントはMainActivityAndroidManifestにはMainActivityとDevSettingsActivityでaction.MainがMainActivityでここからアプリがスタートするようです。DevSettingsActivityはデバッグ用のメニュー(ReloadやLiveReloadなどのメニュー)を表示するためのアクティビティのようです。MainActivityReactActivityというAbstractClassを継承したクラスで自動でgetMainComponentNameがオーバライドされてプロジェクト名を返すようになっています。PermissionAwareActivityを実装したクラスです。基本的にはActivityでしか受け取れないイベント(ライフサイクルやonActivityResultなど)が起きたときにReactActivityDelegateに伝播するクラスです。DefaultHardwareBackBtnHandlerはJSModuleから呼び出されonBackPressedを実行するinvokeDefaultOnBackPressedのみをインターフェースとして持っており、PermissionAwareActivityはActivityのパーミッション関連のメソッドと全く同じメソッドが定義されたインターフェースです。android.support.v4.app.FragmentActivityを継承したReactFragmentActivityも用意してあります。サポートパッケージを使う場合はこちらに変更するようです。ReactActivityDelegateこのクラスも基本的にはReactActivityから伝播されたイベントをReactInstanceManagerに伝播しています。デバッグ時のメニュー表示に必要なパーミッションの処理もこのクラスで処理されています。onCreateでloadAppメソッドでReactRootViewのインスタンスが生成され、startReactApplicationを実行した後setContentViewされます。ReactRootViewこのクラスはSizeMonitoringFrameLayoutを継承しRootViewを実装しています。SizeMonitoringFrameLayoutはonSizeChanged発生時にリスナを発火してくれるだけのFrameLayoutのサブクラスです。RootViewは子ViewにMotionイベントが発生した時に呼ばれるonChildStartedNativeGestureだけを持つインターフェースです。ReactRootViewは基本的にタッチイベントやViewの表示領域の変更(回転やキーボードの有無)をJS側へ通知する処理をしています。onMeasureが呼ばれ描画領域が確定するとattachToReactInstanceManagerが呼ばれReactInstanceManagerのインスタンスメソッドattachMeasuredRootViewが呼ばれReactRootViewが渡されます。デフォルトではReactInstanceManagerはXReactInstanceManagerImplのインスタンスがセットされます。XReactInstanceManagerImplこのクラスはまだ全然理解出来てません。setupReactContextでReactRootViewの初期化を行っています。XReactInstanceManagerImplはReactRootViewの配列をフィールドに持っており、個々の初期化はattachMeasuredRootViewToInstanceで行われています。attachMeasuredRootViewToInstanceはReactRootViewとCatalystInstanceを引数に持ち、CatalystInstanceクラスはJS<->JavaでAPI呼び出しをする環境を提供してくれるらしいです。UIManagerModulecatalystInstance.getNativeModule(UIManagerModule.class)でUIManagerModuleのインスタンスを取得してます。このクラスはReactContextBaseJavaModuleを継承しており、これはJS側からJavaのコードを呼ぶために必要なものです。自分でJavaからAPIを呼びたい時はこのクラスのサブクラスをつくります。UIManagerModuleはJSのComponentからイベントを受け取り、フィールドのUIImplementationのインスタンスに伝播します。UIManagerModuleのaddMeasuredRootViewメソッドでは引数のReactRootViewをフィールドのUIImplementationに登録しています。03:02ReactNativeのソースを読んで見る(Android編1)Tweet広告を非表示にする関連記事2017-12-06KotlinJSを動かす先日Kotlin1.2がリリースされました。バッ...2017-07-20AndroidのカスタムOSが使われている端末でDevメニューが出ない時の対処もー、クソん。私は書いてないです...2017-04-05(解決)ReactNative+FirebaseではネイティブSDKを使ったほうが良いかも(追記)解決しました。JavascriptCoreが原因でした。ExpoについてLTしてきました月別アーカイブはてなブログをはじめよう!saburesanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。