@xrnjs/app-template 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/$package.json +51 -0
  2. package/.env +6 -0
  3. package/.env.prod +6 -0
  4. package/LICENSE +202 -0
  5. package/android/app/build.gradle +176 -0
  6. package/android/app/build_defs.bzl +19 -0
  7. package/android/app/debug.keystore +0 -0
  8. package/android/app/proguard-rules.pro +10 -0
  9. package/android/app/src/debug/AndroidManifest.xml +13 -0
  10. package/android/app/src/debug/java/com/xrn/template/ReactNativeFlipper.java +73 -0
  11. package/android/app/src/main/AndroidManifest.xml +46 -0
  12. package/android/app/src/main/assets/index.main-bundle.bundle +178940 -0
  13. package/android/app/src/main/assets/index.sub-bundle.bundle +178928 -0
  14. package/android/app/src/main/assets/xrn-manifest.json +1 -0
  15. package/android/app/src/main/java/com/xrn/template/MainActivity.kt +52 -0
  16. package/android/app/src/main/java/com/xrn/template/MainApplication.kt +91 -0
  17. package/android/app/src/main/java/com/xrn/template/multibundle/XBundleInfoHook.kt +9 -0
  18. package/android/app/src/main/java/com/xrn/template/multibundle/XDevSupportParams.kt +6 -0
  19. package/android/app/src/main/java/com/xrn/template/multibundle/XRNHostParams.kt +81 -0
  20. package/android/app/src/main/java/com/xrn/template/navigation/MainClazzFactory.kt +14 -0
  21. package/android/app/src/main/java/com/xrn/template/navigation/XBundleActivity.kt +56 -0
  22. package/android/app/src/main/java/com/xrn/template/navigation/XMainActivity.kt +4 -0
  23. package/android/app/src/main/java/com/xrn/template/utils/DevEntryUtil.kt +29 -0
  24. package/android/app/src/main/java/com/xrn/template/utils/LifecycleAwareRunnable.kt +37 -0
  25. package/android/app/src/main/jni/CMakeLists.txt +7 -0
  26. package/android/app/src/main/jni/MainApplicationModuleProvider.cpp +32 -0
  27. package/android/app/src/main/jni/MainApplicationModuleProvider.h +16 -0
  28. package/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +45 -0
  29. package/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +38 -0
  30. package/android/app/src/main/jni/MainComponentsRegistry.cpp +65 -0
  31. package/android/app/src/main/jni/MainComponentsRegistry.h +32 -0
  32. package/android/app/src/main/jni/OnLoad.cpp +11 -0
  33. package/android/app/src/main/res/drawable/bg_debug_entry.xml +15 -0
  34. package/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  35. package/android/app/src/main/res/drawable-hdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
  36. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_alerttriangle.png +0 -0
  37. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronleft.png +0 -0
  38. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronright.png +0 -0
  39. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_close.png +0 -0
  40. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_loader.png +0 -0
  41. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
  42. package/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_src_assets_backiconmask.png +0 -0
  43. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_images_fail_icon.png +0 -0
  44. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_images_success_icon.png +0 -0
  45. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_close.png +0 -0
  46. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_filter.png +0 -0
  47. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_more.png +0 -0
  48. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_search.png +0 -0
  49. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_share.png +0 -0
  50. package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_navigation_assets_backicon.png +0 -0
  51. package/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
  52. package/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
  53. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_copy_icon.png +0 -0
  54. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_app_info.png +0 -0
  55. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_app_start_time.png +0 -0
  56. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_file.png +0 -0
  57. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_fps.png +0 -0
  58. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_h5.png +0 -0
  59. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_health.png +0 -0
  60. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_kadun.png +0 -0
  61. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_net.png +0 -0
  62. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_qingchu.png +0 -0
  63. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_scan.png +0 -0
  64. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_self.png +0 -0
  65. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_setting.png +0 -0
  66. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_view_check.png +0 -0
  67. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_view_level.png +0 -0
  68. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_viewmetrics.png +0 -0
  69. package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_images_rebackwhiteicon.png +0 -0
  70. package/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
  71. package/android/app/src/main/res/layout/activity_splash.xml +16 -0
  72. package/android/app/src/main/res/layout/layout_rn_dev_float.xml +18 -0
  73. package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  74. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  75. package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  76. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  77. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  78. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  79. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  80. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  81. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  82. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  83. package/android/app/src/main/res/raw/bundle_config.json +23 -0
  84. package/android/app/src/main/res/raw/launch_screen.json +1 -0
  85. package/android/app/src/main/res/values/strings.xml +3 -0
  86. package/android/app/src/main/res/values/styles.xml +9 -0
  87. package/android/build.gradle +83 -0
  88. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  89. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  90. package/android/gradle.properties +63 -0
  91. package/android/gradlew +234 -0
  92. package/android/gradlew.bat +89 -0
  93. package/android/settings.gradle +18 -0
  94. package/harmony/.clang-format +64 -0
  95. package/harmony/.clang-tidy +1 -0
  96. package/harmony/.clangd +13 -0
  97. package/harmony/AppScope/app.json5 +10 -0
  98. package/harmony/AppScope/resources/base/element/string.json +8 -0
  99. package/harmony/AppScope/resources/base/media/app_icon.png +0 -0
  100. package/harmony/XRNTemplate-dev.cer +52 -0
  101. package/harmony/XRNTemplate-devDebug.p7b +0 -0
  102. package/harmony/XRNTemplate.p12 +0 -0
  103. package/harmony/build-profile.json5 +91 -0
  104. package/harmony/code-linter.json5 +20 -0
  105. package/harmony/entry/build-profile.json5 +33 -0
  106. package/harmony/entry/hvigorfile.ts +6 -0
  107. package/harmony/entry/obfuscation-rules.txt +23 -0
  108. package/harmony/entry/oh-package-lock.json5 +486 -0
  109. package/harmony/entry/oh-package.json5 +59 -0
  110. package/harmony/entry/src/main/cpp/CMakeLists.txt +72 -0
  111. package/harmony/entry/src/main/cpp/PackageProvider.cpp +51 -0
  112. package/harmony/entry/src/main/cpp/generated/BundleNavigation.cpp +25 -0
  113. package/harmony/entry/src/main/cpp/generated/BundleNavigation.h +21 -0
  114. package/harmony/entry/src/main/cpp/generated/ConfigNativeModule.cpp +21 -0
  115. package/harmony/entry/src/main/cpp/generated/ConfigNativeModule.h +21 -0
  116. package/harmony/entry/src/main/cpp/generated/GetRandomValuesNativeModule.cpp +21 -0
  117. package/harmony/entry/src/main/cpp/generated/GetRandomValuesNativeModule.h +21 -0
  118. package/harmony/entry/src/main/cpp/generated/ImageResizer.cpp +21 -0
  119. package/harmony/entry/src/main/cpp/generated/ImageResizer.h +21 -0
  120. package/harmony/entry/src/main/cpp/generated/NativeHarmonyTouchId.cpp +22 -0
  121. package/harmony/entry/src/main/cpp/generated/NativeHarmonyTouchId.h +21 -0
  122. package/harmony/entry/src/main/cpp/generated/OreitationLockerNativeModule.cpp +31 -0
  123. package/harmony/entry/src/main/cpp/generated/OreitationLockerNativeModule.h +21 -0
  124. package/harmony/entry/src/main/cpp/generated/RNCCameraRoll.cpp +28 -0
  125. package/harmony/entry/src/main/cpp/generated/RNCCameraRoll.h +21 -0
  126. package/harmony/entry/src/main/cpp/generated/RNCCameraRollPermission.cpp +26 -0
  127. package/harmony/entry/src/main/cpp/generated/RNCCameraRollPermission.h +21 -0
  128. package/harmony/entry/src/main/cpp/generated/RNCWebViewComponentDescriptor.h +43 -0
  129. package/harmony/entry/src/main/cpp/generated/RNCWebViewJSIBinder.h +120 -0
  130. package/harmony/entry/src/main/cpp/generated/RNCWebViewModule.cpp +22 -0
  131. package/harmony/entry/src/main/cpp/generated/RNCWebViewModule.h +21 -0
  132. package/harmony/entry/src/main/cpp/generated/RNDeviceInfo.cpp +137 -0
  133. package/harmony/entry/src/main/cpp/generated/RNDeviceInfo.h +21 -0
  134. package/harmony/entry/src/main/cpp/generated/RNDocumentPicker.cpp +24 -0
  135. package/harmony/entry/src/main/cpp/generated/RNDocumentPicker.h +21 -0
  136. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerButtonComponentDescriptor.h +43 -0
  137. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerButtonJSIBinder.h +38 -0
  138. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerModule.cpp +28 -0
  139. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerModule.h +21 -0
  140. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerRootViewComponentDescriptor.h +43 -0
  141. package/harmony/entry/src/main/cpp/generated/RNGestureHandlerRootViewJSIBinder.h +31 -0
  142. package/harmony/entry/src/main/cpp/generated/RNLocalize.cpp +31 -0
  143. package/harmony/entry/src/main/cpp/generated/RNLocalize.h +21 -0
  144. package/harmony/entry/src/main/cpp/generated/RNOHGeneratedPackage.h +191 -0
  145. package/harmony/entry/src/main/cpp/generated/RTNCodePush.cpp +48 -0
  146. package/harmony/entry/src/main/cpp/generated/RTNCodePush.h +21 -0
  147. package/harmony/entry/src/main/cpp/generated/ReactNativeBlobUtil.cpp +51 -0
  148. package/harmony/entry/src/main/cpp/generated/ReactNativeBlobUtil.h +21 -0
  149. package/harmony/entry/src/main/cpp/generated/XRNAppUtilsModule.cpp +29 -0
  150. package/harmony/entry/src/main/cpp/generated/XRNAppUtilsModule.h +21 -0
  151. package/harmony/entry/src/main/cpp/generated/XRNAssetLoaderModule.cpp +21 -0
  152. package/harmony/entry/src/main/cpp/generated/XRNAssetLoaderModule.h +21 -0
  153. package/harmony/entry/src/main/cpp/generated/XRNBundleModule.cpp +27 -0
  154. package/harmony/entry/src/main/cpp/generated/XRNBundleModule.h +21 -0
  155. package/harmony/entry/src/main/cpp/generated/XRNDebugToolsModule.cpp +32 -0
  156. package/harmony/entry/src/main/cpp/generated/XRNDebugToolsModule.h +21 -0
  157. package/harmony/entry/src/main/cpp/generated/XRNFileModule.cpp +22 -0
  158. package/harmony/entry/src/main/cpp/generated/XRNFileModule.h +21 -0
  159. package/harmony/entry/src/main/cpp/generated/XRNLoadingModule.cpp +25 -0
  160. package/harmony/entry/src/main/cpp/generated/XRNLoadingModule.h +21 -0
  161. package/harmony/entry/src/main/cpp/generated/XRNMultiBundleModule.cpp +21 -0
  162. package/harmony/entry/src/main/cpp/generated/XRNMultiBundleModule.h +21 -0
  163. package/harmony/entry/src/main/cpp/generated/XRNNativeStorageModule.cpp +26 -0
  164. package/harmony/entry/src/main/cpp/generated/XRNNativeStorageModule.h +21 -0
  165. package/harmony/entry/src/main/cpp/generated/XRNNavigation.cpp +23 -0
  166. package/harmony/entry/src/main/cpp/generated/XRNNavigation.h +21 -0
  167. package/harmony/entry/src/main/cpp/generated/XRNToastModule.cpp +22 -0
  168. package/harmony/entry/src/main/cpp/generated/XRNToastModule.h +21 -0
  169. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/BaseReactNativeOhTplAsyncStoragePackage.h +68 -0
  170. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/turbo_modules/RNCAsyncStorage.cpp +26 -0
  171. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/turbo_modules/RNCAsyncStorage.h +21 -0
  172. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/ComponentDescriptors.h +22 -0
  173. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/EventEmitters.cpp +18 -0
  174. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/EventEmitters.h +19 -0
  175. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/Props.cpp +21 -0
  176. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/Props.h +20 -0
  177. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/ShadowNodes.cpp +19 -0
  178. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/ShadowNodes.h +25 -0
  179. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/States.cpp +18 -0
  180. package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/react/renderer/components/_react_native_oh_tpl_async_storage/States.h +23 -0
  181. package/harmony/entry/src/main/ets/BundleHelper.ets +198 -0
  182. package/harmony/entry/src/main/ets/Constants.ets +2 -0
  183. package/harmony/entry/src/main/ets/MainAbilityStage.ets +60 -0
  184. package/harmony/entry/src/main/ets/entryability/EntryAbility.ets +57 -0
  185. package/harmony/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets +12 -0
  186. package/harmony/entry/src/main/ets/lottie/launch_screen.json +1 -0
  187. package/harmony/entry/src/main/ets/module/devtools/components/FloatBall.ets +359 -0
  188. package/harmony/entry/src/main/ets/navDestination/BizModuleContainer.ets +8 -0
  189. package/harmony/entry/src/main/ets/navDestination/MainModuleContainer.ets +8 -0
  190. package/harmony/entry/src/main/ets/navDestination/Splash.ets +79 -0
  191. package/harmony/entry/src/main/ets/pages/Index.ets +66 -0
  192. package/harmony/entry/src/main/module.json5 +68 -0
  193. package/harmony/entry/src/main/resources/base/element/color.json +12 -0
  194. package/harmony/entry/src/main/resources/base/element/string.json +19 -0
  195. package/harmony/entry/src/main/resources/base/media/background.png +0 -0
  196. package/harmony/entry/src/main/resources/base/media/foreground.png +0 -0
  197. package/harmony/entry/src/main/resources/base/media/ic_back.png +0 -0
  198. package/harmony/entry/src/main/resources/base/media/layered_image.json +7 -0
  199. package/harmony/entry/src/main/resources/base/media/startIcon.png +0 -0
  200. package/harmony/entry/src/main/resources/base/profile/backup_config.json +3 -0
  201. package/harmony/entry/src/main/resources/base/profile/main_pages.json +5 -0
  202. package/harmony/entry/src/main/resources/en_US/element/string.json +16 -0
  203. package/harmony/entry/src/main/resources/rawfile/bundle_config.json5 +23 -0
  204. package/harmony/entry/src/main/resources/rawfile/fonts/AntDesign.ttf +0 -0
  205. package/harmony/entry/src/main/resources/rawfile/fonts/Entypo.ttf +0 -0
  206. package/harmony/entry/src/main/resources/rawfile/fonts/EvilIcons.ttf +0 -0
  207. package/harmony/entry/src/main/resources/rawfile/fonts/Feather.ttf +0 -0
  208. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome.ttf +0 -0
  209. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Brands.ttf +0 -0
  210. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Regular.ttf +0 -0
  211. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Solid.ttf +0 -0
  212. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Brands.ttf +0 -0
  213. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Regular.ttf +0 -0
  214. package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Solid.ttf +0 -0
  215. package/harmony/entry/src/main/resources/rawfile/fonts/Fontisto.ttf +0 -0
  216. package/harmony/entry/src/main/resources/rawfile/fonts/Foundation.ttf +0 -0
  217. package/harmony/entry/src/main/resources/rawfile/fonts/Ionicons.ttf +0 -0
  218. package/harmony/entry/src/main/resources/rawfile/fonts/MaterialCommunityIcons.ttf +0 -0
  219. package/harmony/entry/src/main/resources/rawfile/fonts/MaterialIcons.ttf +0 -0
  220. package/harmony/entry/src/main/resources/rawfile/fonts/Octicons.ttf +0 -0
  221. package/harmony/entry/src/main/resources/rawfile/fonts/SimpleLineIcons.ttf +0 -0
  222. package/harmony/entry/src/main/resources/rawfile/fonts/Zocial.ttf +0 -0
  223. package/harmony/entry/src/main/resources/zh_CN/element/string.json +16 -0
  224. package/harmony/entry/src/mock/mock-config.json5 +2 -0
  225. package/harmony/entry/src/ohosTest/ets/test/Ability.test.ets +35 -0
  226. package/harmony/entry/src/ohosTest/ets/test/List.test.ets +5 -0
  227. package/harmony/entry/src/ohosTest/module.json5 +13 -0
  228. package/harmony/entry/src/test/List.test.ets +5 -0
  229. package/harmony/entry/src/test/LocalUnit.test.ets +33 -0
  230. package/harmony/hvigor/hvigor-config.json5 +22 -0
  231. package/harmony/hvigorfile.ts +6 -0
  232. package/harmony/material/ac/6a282c38039b44b2949441a85986c35d +1 -0
  233. package/harmony/material/ce/b2a765b7b925475797f45ae55c8d3ad3 +0 -0
  234. package/harmony/material/fd/0/9cbed212f275489b874de30a02692f59 +1 -0
  235. package/harmony/material/fd/1/dc8ea45ef44142d09bca7eeacdc5ecac +1 -0
  236. package/harmony/material/fd/2/d34888210a5846829d745f65295f90b7 +1 -0
  237. package/harmony/oh-package-lock.json5 +27 -0
  238. package/harmony/oh-package.json5 +17 -0
  239. package/ios/.xcode.env +11 -0
  240. package/ios/BundleEventCenter/XTBundleProvider.h +17 -0
  241. package/ios/BundleEventCenter/XTBundleProvider.m +129 -0
  242. package/ios/BundleEventCenter/XTBundleViewControllerFactory.h +18 -0
  243. package/ios/BundleEventCenter/XTBundleViewControllerFactory.m +39 -0
  244. package/ios/BundleEventCenter/bundleController/XTBundleViewController.h +16 -0
  245. package/ios/BundleEventCenter/bundleController/XTBundleViewController.m +35 -0
  246. package/ios/BundleEventCenter/bundleController/XTMainBundleViewController.h +16 -0
  247. package/ios/BundleEventCenter/bundleController/XTMainBundleViewController.m +41 -0
  248. package/ios/BundleEventCenter/bundleController/xtBundles.plist +14 -0
  249. package/ios/Podfile +221 -0
  250. package/ios/Podfile.lock +955 -0
  251. package/ios/RNDebug/DebugPlugin/XTPluginManage.h +24 -0
  252. package/ios/RNDebug/DebugPlugin/XTPluginManage.m +93 -0
  253. package/ios/RNDebug/Views/XTLoadJSErrorTipPanel.swift +231 -0
  254. package/ios/RNDebug/Views/XTScanQRPlugin.swift +122 -0
  255. package/ios/RNDebug/Views/XTSuspendBall.h +34 -0
  256. package/ios/RNDebug/Views/XTSuspendBall.m +357 -0
  257. package/ios/XRNTemplate/AppDelegate.h +8 -0
  258. package/ios/XRNTemplate/AppDelegate.mm +168 -0
  259. package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/Contents.json +55 -0
  260. package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/icon120_120@2x.png +0 -0
  261. package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/icon180_180@3x.png +0 -0
  262. package/ios/XRNTemplate/Images.xcassets/Contents.json +6 -0
  263. package/ios/XRNTemplate/Images.xcassets/launch_icon.imageset/Contents.json +21 -0
  264. package/ios/XRNTemplate/Images.xcassets/launch_icon.imageset/launch_icon@2x.png +0 -0
  265. package/ios/XRNTemplate/Info.plist +82 -0
  266. package/ios/XRNTemplate/LaunchScreen.storyboard +43 -0
  267. package/ios/XRNTemplate/main.m +10 -0
  268. package/ios/XRNTemplate-Bridging-Header.h +29 -0
  269. package/ios/XRNTemplate.xcodeproj/project.pbxproj +1022 -0
  270. package/ios/XRNTemplate.xcodeproj/xcshareddata/xcschemes/XRNTemplate.xcscheme +88 -0
  271. package/ios/XRNTemplate.xcworkspace/contents.xcworkspacedata +10 -0
  272. package/ios/XRNTemplate.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  273. package/ios/XRNTemplateTests/Info.plist +24 -0
  274. package/ios/XRNTemplateTests/XRNTemplateTests.m +66 -0
  275. package/main-bundle/App.tsx +29 -0
  276. package/main-bundle/app.json +15 -0
  277. package/main-bundle/babel.config.js +4 -0
  278. package/main-bundle/index.ts +3 -0
  279. package/main-bundle/metro.config.js +21 -0
  280. package/main-bundle/package.json +35 -0
  281. package/main-bundle/router.ts +18 -0
  282. package/main-bundle/tsconfig.json +26 -0
  283. package/main-bundle/xrn.config.ts +13 -0
  284. package/main-bundle/yarn.lock +13622 -0
  285. package/package.json +16 -0
  286. package/react-native.config.js +36 -0
  287. package/sub-bundle/App.tsx +23 -0
  288. package/sub-bundle/app.json +15 -0
  289. package/sub-bundle/babel.config.js +4 -0
  290. package/sub-bundle/index.ts +3 -0
  291. package/sub-bundle/metro.config.js +21 -0
  292. package/sub-bundle/package.json +36 -0
  293. package/sub-bundle/router.ts +18 -0
  294. package/sub-bundle/tsconfig.json +26 -0
  295. package/sub-bundle/xrn.config.ts +13 -0
  296. package/sub-bundle/yarn.lock +13652 -0
  297. package/xrn-react-native-xcode.sh +172 -0
  298. package/xrn.config.json +46 -0
@@ -0,0 +1 @@
1
+ {"dependencies":{"@bam.tech/react-native-image-resizer":"3.0.9","@react-native-async-storage/async-storage":"1.21.0","@react-native-camera-roll/camera-roll":"7.8.3","@react-native-clipboard/clipboard":"1.13.2","@react-native-community/netinfo":"11.3.2","@react-native-community/push-notification-ios":"1.11.0","@react-native-cookies/cookies":"6.2.1","@react-native-oh/react-native-harmony":"0.72.38","@react-native-picker/picker":"2.6.1","@sdcx/pull-to-refresh":"0.21.0","@sentry/react-native":"4.15.2","@xrn/core":"0.0.2-beta.33","@yidun/quickpass-plugin-rn":"1.3.4","lottie-react-native":"6.4.1","react":"18.2.0","react-native":"0.72.5","react-native-adjust":"4.38.0","react-native-blob-util":"0.19.11","react-native-config":"1.5.3","react-native-device-info":"11.1.0","react-native-document-picker":"9.2.0","react-native-fast-image":"8.6.3","react-native-fs":"2.20.0","react-native-gesture-handler":"2.14.1","react-native-get-random-values":"1.11.0","react-native-image-picker":"7.0.3","react-native-keyboard-manager":"6.5.16-0","react-native-keychain":"8.1.2","react-native-linear-gradient":"3.0.0-alpha.1","react-native-localize":"3.1.0","react-native-modpow":"1.1.1-0","react-native-orientation-locker":"1.7.0","react-native-pdf":"6.7.4","react-native-permissions":"4.1.2","react-native-place-module":"0.1.1","react-native-reanimated":"3.6.0","react-native-safe-area-context":"4.7.4","react-native-screens":"3.33.0","react-native-svg":"15.0.0","react-native-touch-id":"4.4.1","react-native-update-in-app-xt":"1.0.5","react-native-video":"6.0.0-alpha.9","react-native-vision-camera":"4.0.1","react-native-webview":"13.10.2"},"commonBaseLine":{"modules":{},"id":0,"hash":"","useOldApp":true}}
@@ -0,0 +1,52 @@
1
+ package com.xrn.template
2
+
3
+ import android.animation.Animator
4
+ import android.os.Bundle
5
+ import android.view.LayoutInflater
6
+ import androidx.appcompat.app.AppCompatActivity
7
+ import com.blankj.utilcode.util.LogUtils
8
+ import com.blankj.utilcode.util.ToastUtils
9
+ import com.xrn.template.databinding.ActivitySplashBinding
10
+ import xrn.modules.navigation.kotlin.NavHelper.buildMainModuleIntent
11
+
12
+ class MainActivity : AppCompatActivity() {
13
+ override fun onCreate(savedInstanceState: Bundle?) {
14
+ super.onCreate(savedInstanceState)
15
+ val binding = ActivitySplashBinding.inflate(
16
+ LayoutInflater.from(
17
+ this
18
+ )
19
+ )
20
+ setContentView(binding.root)
21
+ initViews(binding)
22
+ }
23
+
24
+ private fun initViews(binding: ActivitySplashBinding) {
25
+ binding.lavSplashLottie.addAnimatorListener(object : Animator.AnimatorListener {
26
+ override fun onAnimationStart(animation: Animator) {
27
+ }
28
+
29
+ override fun onAnimationEnd(animation: Animator) {
30
+ startXMainActivity()
31
+ }
32
+
33
+ override fun onAnimationCancel(animation: Animator) {
34
+ }
35
+
36
+ override fun onAnimationRepeat(animation: Animator) {
37
+ }
38
+ })
39
+ }
40
+
41
+ private fun startXMainActivity() {
42
+ val mainIntent = buildMainModuleIntent(this, null)
43
+
44
+ if (mainIntent == null) {
45
+ LogUtils.e("跳转失败,主 Bundle 未注册!!!")
46
+ ToastUtils.showLong("跳转失败,主 Bundle 未注册!!!")
47
+ }
48
+ startActivity(mainIntent)
49
+ overridePendingTransition(0, 0)
50
+ finish()
51
+ }
52
+ }
@@ -0,0 +1,91 @@
1
+ package com.xrn.template
2
+
3
+ import android.content.Context
4
+ import androidx.multidex.MultiDexApplication
5
+ import com.blankj.utilcode.util.ActivityUtils
6
+ import com.facebook.react.ReactApplication
7
+ import com.facebook.react.ReactInstanceManager
8
+ import com.facebook.react.ReactNativeHost
9
+ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
10
+ import com.facebook.soloader.SoLoader
11
+ import com.xrn.template.multibundle.XBundleInfoHook
12
+ import com.xrn.template.multibundle.XDevSupportParams
13
+ import com.xrn.template.multibundle.XRNHostParams
14
+ import com.xrn.template.navigation.MainClazzFactory
15
+ import xrn.modules.multibundle.bundle.BundleInfoManager.initWithRawFile
16
+ import xrn.modules.multibundle.bundle.RNHostManager.getMainRNHost
17
+ import xrn.modules.multibundle.bundle.RNHostManager.init
18
+ import xrn.modules.multibundle.bundle.RNHostManagerParams
19
+ import xrn.modules.multibundle.view.RNContainerActivity
20
+ import xrn.modules.navigation.Navigation.initialize
21
+ import xrn.modules.navigation.kotlin.exception.NavigationException
22
+ import java.lang.reflect.InvocationTargetException
23
+
24
+
25
+ class MainApplication : MultiDexApplication(), ReactApplication {
26
+ override fun getReactNativeHost(): ReactNativeHost {
27
+ val topActivity = ActivityUtils.getTopActivity()
28
+ if (topActivity is RNContainerActivity) {
29
+ return topActivity.getRNHost()!!
30
+ }
31
+ return getMainRNHost()!!
32
+ }
33
+
34
+ override fun onCreate() {
35
+ super.onCreate()
36
+ initMultiBundle()
37
+ initNavigation()
38
+ SoLoader.init(this, /* native exopackage */false)
39
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
40
+ // If you opted-in for the New Architecture, we load the native entry point for this app.
41
+ load()
42
+ }
43
+ initializeFlipper(this, reactNativeHost.reactInstanceManager)
44
+ }
45
+
46
+ private fun initMultiBundle() {
47
+ initWithRawFile(this, R.raw.bundle_config, XBundleInfoHook())
48
+ val params = RNHostManagerParams()
49
+ params.isProd = !BuildConfig.DEBUG
50
+ params.rnHostParams = XRNHostParams(this)
51
+ params.devSupportParams = XDevSupportParams()
52
+ params.onError = { e: Exception, map: Map<String, Any?>? ->
53
+ e.printStackTrace()
54
+ Unit
55
+ }
56
+ init(this, params, !BuildConfig.DEBUG, BuildConfig.DEBUG)
57
+ }
58
+
59
+ private fun initNavigation() {
60
+ initialize(MainClazzFactory()) { e: NavigationException ->
61
+ e.printStackTrace()
62
+ }
63
+ }
64
+
65
+ companion object {
66
+ private fun initializeFlipper(
67
+ context: Context, reactInstanceManager: ReactInstanceManager
68
+ ) {
69
+ if (BuildConfig.DEBUG) {
70
+ try {
71
+ val aClass = Class.forName("com.xrn.template.ReactNativeFlipper")
72
+ aClass
73
+ .getMethod(
74
+ "initializeFlipper",
75
+ Context::class.java,
76
+ ReactInstanceManager::class.java
77
+ )
78
+ .invoke(null, context, reactInstanceManager)
79
+ } catch (e: ClassNotFoundException) {
80
+ e.printStackTrace()
81
+ } catch (e: NoSuchMethodException) {
82
+ e.printStackTrace()
83
+ } catch (e: IllegalAccessException) {
84
+ e.printStackTrace()
85
+ } catch (e: InvocationTargetException) {
86
+ e.printStackTrace()
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,9 @@
1
+ package com.xrn.template.multibundle
2
+
3
+ import xrn.modules.multibundle.bundle.BundleInfo
4
+ import xrn.modules.multibundle.bundle.BundleInfoHook
5
+
6
+ class XBundleInfoHook: BundleInfoHook {
7
+
8
+ override val hookCodePushKey: ((info: BundleInfo) -> String)? = null
9
+ }
@@ -0,0 +1,6 @@
1
+ package com.xrn.template.multibundle
2
+
3
+ import xrn.modules.multibundle.bundle.DevSupportParams
4
+
5
+ class XDevSupportParams: DevSupportParams() {
6
+ }
@@ -0,0 +1,81 @@
1
+ package com.xrn.template.multibundle
2
+
3
+ import android.app.Application
4
+ import com.blankj.utilcode.util.LogUtils
5
+ import com.facebook.hermes.reactexecutor.HermesExecutorFactory
6
+ import com.facebook.react.PackageList
7
+ import com.facebook.react.ReactPackage
8
+ import com.facebook.react.bridge.JavaScriptExecutorFactory
9
+ import com.microsoft.codepush.react.CodePush
10
+ import com.xrn.template.BuildConfig
11
+ import com.xrn.template.R
12
+ import xrn.modules.multibundle.bundle.BundleInfo
13
+ import xrn.modules.multibundle.bundle.RNHostManager
14
+ import xrn.modules.multibundle.bundle.RNHostParams
15
+ import xrn.modules.multibundle.devsupport.XDevSupportManagerFactory
16
+
17
+ class XRNHostParams(val application: Application): RNHostParams() {
18
+
19
+ companion object {
20
+ const val COMMON_BUNDLE_NAME = "xt-app-common"
21
+ val codePushMap = mutableMapOf<String, CodePush>()
22
+ }
23
+
24
+ override val isSplitMode: ((bundleName: String) -> Boolean)? = { bundleName ->
25
+ false
26
+ }
27
+
28
+ override val getJSMainModuleName: ((info: BundleInfo, isSplitMode: Boolean) -> String)? = { info, isSplitMode ->
29
+ "index"
30
+ }
31
+
32
+ override val getJSBundleFile: ((info: BundleInfo, isSplitMode: Boolean) -> String?)? = {info, isSplitMode ->
33
+ if (isSplitMode) {
34
+ "assets://index.${COMMON_BUNDLE_NAME}.bundle"
35
+ } else {
36
+ codePushMap[info.bundleName]?.getJSBundleFile("index.${info.bundleName}.bundle")
37
+ }
38
+ }
39
+
40
+ override val getBizJSBundleFile: ((info: BundleInfo, isSplitMode: Boolean) -> String?)? = {info, isSplitMode ->
41
+ codePushMap[info.bundleName]?.getJSBundleFile("index.${info.bundleName}.bundle")
42
+ }
43
+
44
+ override val getPackage: ((info: BundleInfo) -> List<ReactPackage>?)? = { info ->
45
+ val codePush = CodePush(
46
+ info.getCodePushKey(),
47
+ application,
48
+ BuildConfig.DEBUG,
49
+ BuildConfig.CODEPUSH_URL,
50
+ R.string.codepush_public_key
51
+ )
52
+ codePush.setReactInstanceHolder {
53
+ RNHostManager.getRNHostByBundle(info.bundleName)?.reactInstanceManager
54
+ }
55
+ codePushMap[info.bundleName] = codePush
56
+ val packages: MutableList<ReactPackage> = PackageList(application).packages
57
+ packages.add(codePush)
58
+ packages
59
+ }
60
+
61
+ override val getUseDeveloperSupport: ((info: BundleInfo) -> Boolean)? = { info: BundleInfo ->
62
+ true
63
+ }
64
+
65
+ override var getDevSupportManagerFactory: ((info: BundleInfo) -> XDevSupportManagerFactory?)? = { info: BundleInfo ->
66
+ if (getUseDeveloperSupport?.invoke(info) == true) {
67
+ XDevSupportManagerFactory(info.bundleName)
68
+ } else {
69
+ null
70
+ }
71
+ }
72
+
73
+ /**
74
+ * 用于创建 JavaScriptExecutor
75
+ */
76
+ override var getJavaScriptExecutorFactory: ((info: BundleInfo) -> JavaScriptExecutorFactory?)? = { info: BundleInfo ->
77
+ LogUtils.d("enableHermes", BuildConfig.IS_HERMES_ENABLED)
78
+
79
+ if(BuildConfig.IS_HERMES_ENABLED) HermesExecutorFactory() else null
80
+ }
81
+ }
@@ -0,0 +1,14 @@
1
+ package com.xrn.template.navigation
2
+
3
+ import xrn.modules.multibundle.bundle.BundleType
4
+ import xrn.modules.navigation.kotlin.BaseRNContainerActivity
5
+ import xrn.modules.navigation.kotlin.RNContainerActivityClazzFactory
6
+
7
+ class MainClazzFactory : RNContainerActivityClazzFactory {
8
+ override fun get(type: BundleType): Class<out BaseRNContainerActivity> {
9
+ return when (type) {
10
+ BundleType.MAIN -> XMainActivity::class.java
11
+ else -> XBundleActivity::class.java
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,56 @@
1
+ package com.xrn.template.navigation
2
+
3
+ import android.os.Bundle
4
+ import android.view.Gravity
5
+ import android.widget.TextView
6
+ import com.blankj.utilcode.util.ConvertUtils
7
+ import com.blankj.utilcode.util.ToastUtils
8
+ import com.facebook.react.modules.core.DeviceEventManagerModule
9
+ import com.lzf.easyfloat.EasyFloat
10
+ import com.lzf.easyfloat.enums.ShowPattern
11
+ import com.lzf.easyfloat.enums.SidePattern
12
+ import com.xrn.template.R
13
+ import com.xrn.template.utils.DevEntryUtil
14
+ import com.xrn.template.utils.LifecycleAwareRunnable
15
+ import xrn.modules.navigation.kotlin.BaseRNContainerActivity
16
+
17
+ open class XBundleActivity:BaseRNContainerActivity() {
18
+
19
+ override fun onCreate(savedInstanceState: Bundle?) {
20
+ super.onCreate(null)
21
+ if (mBundleName.isBlank() || mModuleName.isBlank()) {
22
+ ToastUtils.showShort("RN容器初始化失败、bundleName或moduleName不允许为空")
23
+ finish()
24
+ return
25
+ }
26
+
27
+ val drawable = resources.getDrawable(R.drawable.bg_debug_entry)
28
+ val builder = EasyFloat.with(this).setLayout(R.layout.layout_rn_dev_float)
29
+ .setShowPattern(ShowPattern.CURRENT_ACTIVITY)
30
+ .setSidePattern(SidePattern.DEFAULT)
31
+ .setGravity(Gravity.RIGHT, 0, ConvertUtils.dp2px(100f))
32
+ .setTag(this@XBundleActivity.toString())
33
+ .registerCallback {
34
+ createResult { isCreated, msg, view ->
35
+ view?.setOnClickListener {
36
+ getRNHost()?.reactInstanceManager?.currentReactContext?.getJSModule(
37
+ DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)?.emit("NATIVE_FLOAT_BAR_CLICK", null)
38
+ }
39
+ view?.background = drawable
40
+ val runnable = LifecycleAwareRunnable(lifecycle) { DevEntryUtil.devEntryAttachSide(view) }
41
+ LifecycleAwareRunnable.getHandler().postDelayed(runnable, 500)
42
+ }
43
+
44
+ touchEvent { view, motionEvent ->
45
+ drawable?.state = intArrayOf(android.R.attr.state_checked)
46
+ }
47
+
48
+ dragEnd { view ->
49
+ DevEntryUtil.devEntryAttachSide(view)
50
+ drawable?.state = intArrayOf()
51
+ }
52
+
53
+ }
54
+ builder.show()
55
+ }
56
+ }
@@ -0,0 +1,4 @@
1
+ package com.xrn.template.navigation
2
+
3
+ class XMainActivity: XBundleActivity() {
4
+ }
@@ -0,0 +1,29 @@
1
+ package com.xrn.template.utils
2
+
3
+ import android.view.View
4
+ import android.view.WindowManager
5
+ import com.blankj.utilcode.util.ConvertUtils
6
+ import com.blankj.utilcode.util.ScreenUtils
7
+ import com.facebook.react.ReactActivity.WINDOW_SERVICE
8
+
9
+ object DevEntryUtil {
10
+
11
+ private const val DISTANCE_ATTACH_SIDE = 20
12
+
13
+ /**
14
+ * 调试入口贴边
15
+ */
16
+ fun devEntryAttachSide(view: View?) {
17
+ view ?: return
18
+ val layoutParams = view.layoutParams as WindowManager.LayoutParams
19
+ val originX = layoutParams.x
20
+ if (originX < DISTANCE_ATTACH_SIDE) {
21
+ layoutParams.x = originX - ConvertUtils.dp2px(25f)
22
+ } else if (originX + ConvertUtils.dp2px(50f) + DISTANCE_ATTACH_SIDE > ScreenUtils.getScreenWidth()) {
23
+ layoutParams.x = originX + ConvertUtils.dp2px(25f)
24
+ }
25
+ layoutParams.flags = layoutParams.flags or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
26
+ val windowManager = view.context.getSystemService(WINDOW_SERVICE) as WindowManager
27
+ windowManager.updateViewLayout(view, layoutParams)
28
+ }
29
+ }
@@ -0,0 +1,37 @@
1
+ package com.xrn.template.utils
2
+
3
+ import android.os.Handler
4
+ import android.os.Looper
5
+ import androidx.lifecycle.DefaultLifecycleObserver
6
+ import androidx.lifecycle.Lifecycle
7
+ import androidx.lifecycle.LifecycleOwner
8
+
9
+ /**
10
+ * 感知生命周期的 Runnable
11
+ * Runnable必须通过 {@link #getHandler} 返回的 Handler 发送 Runnable
12
+ * @see getHandler
13
+ */
14
+ class LifecycleAwareRunnable(lifecycle: Lifecycle?, private val runnable: Runnable?): DefaultLifecycleObserver, Runnable {
15
+
16
+ companion object {
17
+ private val handler = Handler(Looper.getMainLooper())
18
+
19
+ fun getHandler(): Handler {
20
+ return handler
21
+ }
22
+ }
23
+
24
+ init {
25
+ lifecycle?.addObserver(this)
26
+ }
27
+
28
+ override fun onDestroy(owner: LifecycleOwner) {
29
+ super.onDestroy(owner)
30
+ handler.removeCallbacks(this)
31
+ }
32
+
33
+ override fun run() {
34
+ runnable?.run()
35
+ }
36
+
37
+ }
@@ -0,0 +1,7 @@
1
+ cmake_minimum_required(VERSION 3.13)
2
+
3
+ # Define the library name here.
4
+ project(xrngo_appmodules)
5
+
6
+ # This file includes all the necessary to let you build your application with the New Architecture.
7
+ include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)
@@ -0,0 +1,32 @@
1
+ #include "MainApplicationModuleProvider.h"
2
+
3
+ #include <rncli.h>
4
+ #include <rncore.h>
5
+
6
+ namespace facebook {
7
+ namespace react {
8
+
9
+ std::shared_ptr<TurboModule> MainApplicationModuleProvider(
10
+ const std::string &moduleName,
11
+ const JavaTurboModule::InitParams &params) {
12
+ // Here you can provide your own module provider for TurboModules coming from
13
+ // either your application or from external libraries. The approach to follow
14
+ // is similar to the following (for a library called `samplelibrary`:
15
+ //
16
+ // auto module = samplelibrary_ModuleProvider(moduleName, params);
17
+ // if (module != nullptr) {
18
+ // return module;
19
+ // }
20
+ // return rncore_ModuleProvider(moduleName, params);
21
+
22
+ // Module providers autolinked by RN CLI
23
+ auto rncli_module = rncli_ModuleProvider(moduleName, params);
24
+ if (rncli_module != nullptr) {
25
+ return rncli_module;
26
+ }
27
+
28
+ return rncore_ModuleProvider(moduleName, params);
29
+ }
30
+
31
+ } // namespace react
32
+ } // namespace facebook
@@ -0,0 +1,16 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include <ReactCommon/JavaTurboModule.h>
7
+
8
+ namespace facebook {
9
+ namespace react {
10
+
11
+ std::shared_ptr<TurboModule> MainApplicationModuleProvider(
12
+ const std::string &moduleName,
13
+ const JavaTurboModule::InitParams &params);
14
+
15
+ } // namespace react
16
+ } // namespace facebook
@@ -0,0 +1,45 @@
1
+ #include "MainApplicationTurboModuleManagerDelegate.h"
2
+ #include "MainApplicationModuleProvider.h"
3
+
4
+ namespace facebook {
5
+ namespace react {
6
+
7
+ jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
8
+ MainApplicationTurboModuleManagerDelegate::initHybrid(
9
+ jni::alias_ref<jhybridobject>) {
10
+ return makeCxxInstance();
11
+ }
12
+
13
+ void MainApplicationTurboModuleManagerDelegate::registerNatives() {
14
+ registerHybrid({
15
+ makeNativeMethod(
16
+ "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
17
+ makeNativeMethod(
18
+ "canCreateTurboModule",
19
+ MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
20
+ });
21
+ }
22
+
23
+ std::shared_ptr<TurboModule>
24
+ MainApplicationTurboModuleManagerDelegate::getTurboModule(
25
+ const std::string &name,
26
+ const std::shared_ptr<CallInvoker> &jsInvoker) {
27
+ // Not implemented yet: provide pure-C++ NativeModules here.
28
+ return nullptr;
29
+ }
30
+
31
+ std::shared_ptr<TurboModule>
32
+ MainApplicationTurboModuleManagerDelegate::getTurboModule(
33
+ const std::string &name,
34
+ const JavaTurboModule::InitParams &params) {
35
+ return MainApplicationModuleProvider(name, params);
36
+ }
37
+
38
+ bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
39
+ const std::string &name) {
40
+ return getTurboModule(name, nullptr) != nullptr ||
41
+ getTurboModule(name, {.moduleName = name}) != nullptr;
42
+ }
43
+
44
+ } // namespace react
45
+ } // namespace facebook
@@ -0,0 +1,38 @@
1
+ #include <memory>
2
+ #include <string>
3
+
4
+ #include <ReactCommon/TurboModuleManagerDelegate.h>
5
+ #include <fbjni/fbjni.h>
6
+
7
+ namespace facebook {
8
+ namespace react {
9
+
10
+ class MainApplicationTurboModuleManagerDelegate
11
+ : public jni::HybridClass<
12
+ MainApplicationTurboModuleManagerDelegate,
13
+ TurboModuleManagerDelegate> {
14
+ public:
15
+ // Adapt it to the package you used for your Java class.
16
+ static constexpr auto kJavaDescriptor =
17
+ "Lcom/xrngo/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
18
+
19
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
20
+
21
+ static void registerNatives();
22
+
23
+ std::shared_ptr<TurboModule> getTurboModule(
24
+ const std::string &name,
25
+ const std::shared_ptr<CallInvoker> &jsInvoker) override;
26
+ std::shared_ptr<TurboModule> getTurboModule(
27
+ const std::string &name,
28
+ const JavaTurboModule::InitParams &params) override;
29
+
30
+ /**
31
+ * Test-only method. Allows user to verify whether a TurboModule can be
32
+ * created by instances of this class.
33
+ */
34
+ bool canCreateTurboModule(const std::string &name);
35
+ };
36
+
37
+ } // namespace react
38
+ } // namespace facebook
@@ -0,0 +1,65 @@
1
+ #include "MainComponentsRegistry.h"
2
+
3
+ #include <CoreComponentsRegistry.h>
4
+ #include <fbjni/fbjni.h>
5
+ #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
6
+ #include <react/renderer/components/rncore/ComponentDescriptors.h>
7
+ #include <rncli.h>
8
+
9
+ namespace facebook {
10
+ namespace react {
11
+
12
+ MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
13
+
14
+ std::shared_ptr<ComponentDescriptorProviderRegistry const>
15
+ MainComponentsRegistry::sharedProviderRegistry() {
16
+ auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
17
+
18
+ // Autolinked providers registered by RN CLI
19
+ rncli_registerProviders(providerRegistry);
20
+
21
+ // Custom Fabric Components go here. You can register custom
22
+ // components coming from your App or from 3rd party libraries here.
23
+ //
24
+ // providerRegistry->add(concreteComponentDescriptorProvider<
25
+ // AocViewerComponentDescriptor>());
26
+ return providerRegistry;
27
+ }
28
+
29
+ jni::local_ref<MainComponentsRegistry::jhybriddata>
30
+ MainComponentsRegistry::initHybrid(
31
+ jni::alias_ref<jclass>,
32
+ ComponentFactory *delegate) {
33
+ auto instance = makeCxxInstance(delegate);
34
+
35
+ auto buildRegistryFunction =
36
+ [](EventDispatcher::Weak const &eventDispatcher,
37
+ ContextContainer::Shared const &contextContainer)
38
+ -> ComponentDescriptorRegistry::Shared {
39
+ auto registry = MainComponentsRegistry::sharedProviderRegistry()
40
+ ->createComponentDescriptorRegistry(
41
+ {eventDispatcher, contextContainer});
42
+
43
+ auto mutableRegistry =
44
+ std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
45
+
46
+ mutableRegistry->setFallbackComponentDescriptor(
47
+ std::make_shared<UnimplementedNativeViewComponentDescriptor>(
48
+ ComponentDescriptorParameters{
49
+ eventDispatcher, contextContainer, nullptr}));
50
+
51
+ return registry;
52
+ };
53
+
54
+ delegate->buildRegistryFunction = buildRegistryFunction;
55
+ return instance;
56
+ }
57
+
58
+ void MainComponentsRegistry::registerNatives() {
59
+ registerHybrid({
60
+ makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
61
+ });
62
+ }
63
+
64
+ } // namespace react
65
+ } // namespace facebook
@@ -0,0 +1,32 @@
1
+ #pragma once
2
+
3
+ #include <ComponentFactory.h>
4
+ #include <fbjni/fbjni.h>
5
+ #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
6
+ #include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
7
+
8
+ namespace facebook {
9
+ namespace react {
10
+
11
+ class MainComponentsRegistry
12
+ : public facebook::jni::HybridClass<MainComponentsRegistry> {
13
+ public:
14
+ // Adapt it to the package you used for your Java class.
15
+ constexpr static auto kJavaDescriptor =
16
+ "Lcom/xrngo/newarchitecture/components/MainComponentsRegistry;";
17
+
18
+ static void registerNatives();
19
+
20
+ MainComponentsRegistry(ComponentFactory *delegate);
21
+
22
+ private:
23
+ static std::shared_ptr<ComponentDescriptorProviderRegistry const>
24
+ sharedProviderRegistry();
25
+
26
+ static jni::local_ref<jhybriddata> initHybrid(
27
+ jni::alias_ref<jclass>,
28
+ ComponentFactory *delegate);
29
+ };
30
+
31
+ } // namespace react
32
+ } // namespace facebook
@@ -0,0 +1,11 @@
1
+ #include <fbjni/fbjni.h>
2
+ #include "MainApplicationTurboModuleManagerDelegate.h"
3
+ #include "MainComponentsRegistry.h"
4
+
5
+ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
6
+ return facebook::jni::initialize(vm, [] {
7
+ facebook::react::MainApplicationTurboModuleManagerDelegate::
8
+ registerNatives();
9
+ facebook::react::MainComponentsRegistry::registerNatives();
10
+ });
11
+ }
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <selector xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <item android:state_checked="true">
4
+ <shape android:shape="rectangle">
5
+ <solid android:color="@android:color/holo_green_dark"/>
6
+ <corners android:radius="25dp"/>
7
+ </shape>
8
+ </item>
9
+ <item>
10
+ <shape android:shape="rectangle">
11
+ <solid android:color="@android:color/holo_green_light"/>
12
+ <corners android:radius="25dp"/>
13
+ </shape>
14
+ </item>
15
+ </selector>