@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,24 @@
1
+ //
2
+ // XTPluginManage.h
3
+ // XRNTemplate
4
+ //
5
+ // Created by xtgq on 2024/5/7.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ @interface XTPluginManage : NSObject
14
+
15
+ + (instancetype)shareInstance;
16
+
17
+ - (void)addSuspendBallToWindow;
18
+ - (void)pushJSErrorTipPanel:(NSString *)bundleName;
19
+
20
+ - (NSString *)getLocalHost;
21
+ - (NSString *)getLocalCodePushKey:(NSString *)bundleName;
22
+ @end
23
+
24
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,93 @@
1
+ //
2
+ // XTPluginManage.m
3
+ // XRNTemplate
4
+ //
5
+ // Created by xtgq on 2024/5/7.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import "XTPluginManage.h"
10
+ #import "XTSuspendBall.h"
11
+ #import "BundleNavigation.h"
12
+ #import "RCTBridge+XTExtension.h"
13
+ #import "XTJSBundleTool.h"
14
+ #import "JSONUtils.h"
15
+ #import "XRNToastView.h"
16
+ #import "RNCConfig.h"
17
+ #import <React/RCTUtils.h>
18
+ #import "XRNTemplate-Swift.h"
19
+
20
+ @interface XTPluginManage ()<SuspendViewDelegate>
21
+
22
+ @property (nonatomic, strong) NSMutableArray <NSMutableData *>*testDataArray;
23
+ @end
24
+
25
+ @implementation XTPluginManage
26
+
27
+ + (instancetype)shareInstance {
28
+ static XTPluginManage *_sharedInstance = nil;
29
+ static dispatch_once_t onceToken;
30
+ dispatch_once(&onceToken, ^{
31
+ _sharedInstance = [[XTPluginManage alloc] init];
32
+ _sharedInstance.testDataArray = [NSMutableArray array];
33
+ });
34
+ return _sharedInstance;
35
+ }
36
+
37
+ - (void)addSuspendBallToWindow {
38
+ XTSuspendBall *debugButton = [[XTSuspendBall alloc] init];
39
+ debugButton.delegate = self;
40
+ UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
41
+ [mainWindow addSubview:debugButton];
42
+ [mainWindow bringSubviewToFront:debugButton];
43
+ }
44
+
45
+ - (void)suspendViewButtonClick:(nonnull UIButton *)sender {
46
+ dispatch_async(dispatch_get_main_queue(), ^{
47
+ RCTBridge *currentBridge = [[XTJSBundleTool shared] fetchCurrentBridge];
48
+ if (currentBridge == nil) {
49
+ return;
50
+ }
51
+
52
+ BundleNavigation *module = [currentBridge moduleForClass:[BundleNavigation class]];
53
+ NSString *paramsStr = [JSONUtils dictionaryToJsonString:@{@"where":@"NATIVE"}];
54
+ [module publishSingleBundleEvent:@"NATIVE_FLOAT_BAR_CLICK" params:paramsStr];
55
+ });
56
+ }
57
+
58
+ - (void)pushJSErrorTipPanel:(NSString *)bundleName {
59
+ NSString *localBundleDebug = [[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@-debug", bundleName]];
60
+ if (!localBundleDebug) return;
61
+
62
+ dispatch_async(dispatch_get_main_queue(), ^{
63
+ XTLoadJSErrorTipPanel *vc = [[XTLoadJSErrorTipPanel alloc] init];
64
+ vc.bundleName = bundleName;
65
+ UIViewController *rootViewController = RCTPresentedViewController();
66
+ [rootViewController presentViewController:vc animated:YES completion:nil];
67
+ });
68
+ }
69
+
70
+ - (NSString *)getLocalHost {
71
+ NSString *host = [[NSUserDefaults standardUserDefaults] stringForKey:@"RCT_jsLocation"];
72
+ if (host.length > 0) {
73
+ NSInteger index = [host rangeOfString:@":"].location;
74
+ if (index != NSNotFound) {
75
+ host = [host substringToIndex:index];
76
+ }
77
+ }
78
+
79
+ #if TARGET_OS_SIMULATOR
80
+ host = @"localhost";
81
+ #else
82
+ host = host ?: @"";
83
+ #endif
84
+ return host;
85
+ }
86
+
87
+ - (NSString *)getLocalCodePushKey:(NSString *)bundleName {
88
+ NSString *key = [NSString stringWithFormat:@"%@-codepush-key", bundleName];
89
+ NSString *localCodePsuhKey = [[NSUserDefaults standardUserDefaults] objectForKey:key];
90
+ return localCodePsuhKey;
91
+ }
92
+
93
+ @end
@@ -0,0 +1,231 @@
1
+ //
2
+ // XTLoadJSErrorTipPanel.swift
3
+ // XRNTemplate
4
+ //
5
+ // Created by xtgq on 2025/3/4.
6
+ // Copyright © 2025 Facebook. All rights reserved.
7
+ //
8
+
9
+ import UIKit
10
+ import SnapKit
11
+
12
+ @objc final class XTLoadJSErrorTipPanel: UIViewController {
13
+
14
+ @objc var bundleName: String = ""
15
+
16
+ override func viewDidLoad() {
17
+ super.viewDidLoad()
18
+ view.backgroundColor = .white
19
+ setupUI()
20
+
21
+ subDesc.text = "\(bundleName) bundle已开启动态调试,但本地服务连接异常,可能是以下原因:"
22
+ ipTip.text = "3:ip不正确(当前绑定IP是:\(XTPluginManage.shareInstance().getLocalHost()), 如果IP不正确,直接重新扫码绑定ip即可)"
23
+
24
+ cancleBtn.addTarget(self, action: #selector(cancleClick), for: .touchUpInside)
25
+ scanBtn.addTarget(self, action: #selector(scanClick), for: .touchUpInside)
26
+ exitApp.addTarget(self, action: #selector(exitClick), for: .touchUpInside)
27
+ resetBundle.addTarget(self, action: #selector(resetBundleClick), for: .touchUpInside)
28
+ resetBundle.setTitle("关闭\(bundleName)调试", for: .normal)
29
+ }
30
+
31
+ deinit {
32
+ print("XTLoadJSErrorTipPanel deinit!")
33
+ }
34
+
35
+ private func setupUI() {
36
+ view.addSubview(titleLabel)
37
+ view.addSubview(cancleBtn)
38
+ view.addSubview(subDesc)
39
+ view.addSubview(serverTip)
40
+ view.addSubview(wifiTip)
41
+ view.addSubview(ipTip)
42
+ view.addSubview(scanBtn)
43
+ view.addSubview(jsErr)
44
+
45
+ // view.addSubview(exitApp)
46
+ view.addSubview(resetBundle)
47
+
48
+ titleLabel.snp.makeConstraints { make in
49
+ make.top.equalTo(20)
50
+ make.centerX.equalToSuperview()
51
+ }
52
+
53
+ cancleBtn.snp.makeConstraints { make in
54
+ make.centerY.equalTo(titleLabel)
55
+ make.right.equalTo(-20)
56
+ make.width.equalTo(40)
57
+ make.height.equalTo(40)
58
+ }
59
+
60
+ subDesc.snp.makeConstraints { make in
61
+ make.top.equalTo(titleLabel.snp.bottom).offset(50)
62
+ make.left.equalTo(20)
63
+ make.right.equalTo(-20)
64
+ }
65
+
66
+ serverTip.snp.makeConstraints { make in
67
+ make.top.equalTo(subDesc.snp.bottom).offset(50)
68
+ make.left.equalTo(20)
69
+ make.right.equalTo(-20)
70
+ }
71
+
72
+ wifiTip.snp.makeConstraints { make in
73
+ make.top.equalTo(serverTip.snp.bottom).offset(30)
74
+ make.left.equalTo(20)
75
+ make.right.equalTo(-20)
76
+ }
77
+
78
+ ipTip.snp.makeConstraints { make in
79
+ make.top.equalTo(wifiTip.snp.bottom).offset(30)
80
+ make.left.equalTo(20)
81
+ make.right.equalTo(-20)
82
+ }
83
+
84
+ scanBtn.snp.makeConstraints { make in
85
+ make.top.equalTo(ipTip.snp.bottom).offset(30)
86
+ make.centerX.equalToSuperview()
87
+ make.width.equalTo(300)
88
+ make.height.equalTo(45)
89
+ }
90
+
91
+ jsErr.snp.makeConstraints { make in
92
+ make.top.equalTo(scanBtn.snp.bottom).offset(30)
93
+ make.left.equalTo(20)
94
+ make.right.equalTo(-20)
95
+ }
96
+
97
+ // exitApp.snp.makeConstraints { make in
98
+ // make.left.equalToSuperview().offset(20)
99
+ // make.bottom.equalTo(-60)
100
+ // make.width.equalTo(140)
101
+ // make.height.equalTo(45)
102
+ // }
103
+
104
+ resetBundle.snp.makeConstraints { make in
105
+ make.left.equalToSuperview().offset(20)
106
+ make.right.equalToSuperview().offset(-20)
107
+ make.height.equalTo(45)
108
+ make.bottom.equalTo(-60)
109
+ }
110
+
111
+ }
112
+
113
+ @objc private func cancleClick() {
114
+ self.dismiss(animated: true, completion: nil)
115
+ }
116
+
117
+ @objc private func exitClick() {
118
+ exitAppFun()
119
+ }
120
+
121
+ @objc private func resetBundleClick() {
122
+ UserDefaults.standard.removeObject(forKey: "\(bundleName)-debug")
123
+ UserDefaults.standard.synchronize()
124
+ exitAppFun()
125
+ }
126
+
127
+ @objc private func scanClick() {
128
+ #if DEBUG
129
+ XTScanQRPlugin.shared.startScan()
130
+ #endif
131
+ }
132
+
133
+ private func exitAppFun() {
134
+ // let mainBridge = XTMultiBundleManager.shared().pool?.fetchJSBridge(withJSBundleName: "xt-app-main") as? RCTBridge
135
+ // if let bridge = mainBridge, let module = bridge.module(forName: "XRNAppUtilsModule") as? NSObject {
136
+ // module.perform(Selector(("exitApp")))
137
+ // }
138
+ exit(0)
139
+ }
140
+
141
+ private lazy var titleLabel: UILabel = {
142
+ let label = UILabel()
143
+ label.text = "本地服务异常"
144
+ label.textColor = .black
145
+ label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
146
+ label.numberOfLines = 0
147
+ return label
148
+ }()
149
+
150
+ private lazy var cancleBtn: UIButton = {
151
+ let cancle = UIButton(type: .custom)
152
+ cancle.setTitle("取消", for: .normal)
153
+ cancle.setTitleColor(.black, for: .normal)
154
+ cancle.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold)
155
+ return cancle
156
+ }()
157
+
158
+ private lazy var subDesc: UILabel = {
159
+ let label = UILabel()
160
+ label.text = ""
161
+ label.textColor = .black
162
+ label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
163
+ label.numberOfLines = 0
164
+ return label
165
+ }()
166
+
167
+ private lazy var serverTip: UILabel = {
168
+ let label = UILabel()
169
+ label.text = "1:本地服务未开启(yarn start 启动本地服务)"
170
+ label.textColor = .black
171
+ label.font = UIFont.systemFont(ofSize: 16)
172
+ label.numberOfLines = 0
173
+ return label
174
+ }()
175
+
176
+ private lazy var wifiTip: UILabel = {
177
+ let label = UILabel()
178
+ label.text = "2:网络异常(检查手机WiFi连接是否正常,手机WiFi是否与电脑WiFi一致,手机WiFi是否设置了代理)"
179
+ label.textColor = .black
180
+ label.font = UIFont.systemFont(ofSize: 16)
181
+ label.numberOfLines = 0
182
+ return label
183
+ }()
184
+
185
+ private lazy var ipTip: UILabel = {
186
+ let label = UILabel()
187
+ label.text = ""
188
+ label.textColor = .black
189
+ label.font = UIFont.systemFont(ofSize: 16)
190
+ label.numberOfLines = 0
191
+ return label
192
+ }()
193
+
194
+ private lazy var scanBtn: UIButton = {
195
+ let button = UIButton(type: .custom)
196
+ button.setTitle(" 扫码绑定IP", for: .normal)
197
+ button.setImage(UIImage(named: "doraemon_scan"), for: .normal)
198
+ button.setTitleColor(.white, for: .normal)
199
+ button.backgroundColor = .orange
200
+ button.layer.cornerRadius = 22
201
+ return button
202
+ }()
203
+
204
+ private lazy var jsErr: UILabel = {
205
+ let label = UILabel()
206
+ label.text = "4:JS 执行报错(在终端检查是否有JS Error)"
207
+ label.textColor = .black
208
+ label.font = UIFont.systemFont(ofSize: 16)
209
+ label.numberOfLines = 0
210
+ return label
211
+ }()
212
+
213
+ private lazy var exitApp: UIButton = {
214
+ let button = UIButton(type: .custom)
215
+ button.setTitle("重启App", for: .normal)
216
+ button.setTitleColor(.white, for: .normal)
217
+ button.backgroundColor = .orange
218
+ button.layer.cornerRadius = 22
219
+ return button
220
+ }()
221
+
222
+ private lazy var resetBundle: UIButton = {
223
+ let button = UIButton(type: .custom)
224
+ button.setTitle("关闭调试", for: .normal)
225
+ button.setTitleColor(.white, for: .normal)
226
+ button.backgroundColor = .orange
227
+ button.layer.cornerRadius = 22
228
+ return button
229
+ }()
230
+
231
+ }
@@ -0,0 +1,122 @@
1
+ //
2
+ // XTScanQRPlugin.swift
3
+ // XRNTemplate
4
+ //
5
+ // Created by xtgq on 2024/10/8.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+
11
+ #if DEBUG
12
+ import swiftScan
13
+ #endif
14
+
15
+ @objcMembers
16
+ public class XTScanQRPlugin: NSObject {
17
+
18
+ public static let shared = XTScanQRPlugin()
19
+
20
+ #if DEBUG
21
+ @objc func startScan() {
22
+ var style = LBXScanViewStyle()
23
+ style.centerUpOffset = 44
24
+ style.photoframeAngleStyle = LBXScanViewPhotoframeAngleStyle.Inner
25
+ style.photoframeLineW = 2
26
+ style.photoframeAngleW = 18
27
+ style.photoframeAngleH = 18
28
+ style.isNeedShowRetangle = false
29
+ style.anmiationStyle = LBXScanViewAnimationStyle.LineMove
30
+ style.colorAngle = UIColor(red: 0.0/255, green: 200.0/255.0, blue: 20.0/255.0, alpha: 1.0)
31
+ style.animationImage = UIImage(named: "CodeScan.bundle/qrcode_Scan_weixin_Line")
32
+
33
+ let vc = LBXScanViewController()
34
+ vc.scanStyle = style
35
+ vc.scanResultDelegate = self
36
+ if let presentedVC = RCTPresentedViewController() {
37
+ presentedVC.present(vc, animated: true, completion: nil)
38
+ }
39
+ }
40
+ #endif
41
+
42
+ }
43
+
44
+ #if DEBUG
45
+ extension XTScanQRPlugin: LBXScanViewControllerDelegate {
46
+ public func scanFinished(scanResult: swiftScan.LBXScanResult, error: String?) {
47
+ guard let scanContent = scanResult.strScanned else {
48
+ return
49
+ }
50
+
51
+ if let scanContent = jsonStringToDictionary(scanContent), scanContent["action"] as? String == "action_set_bundle_host" {
52
+ guard let urlString = scanContent["content"] as? String else {
53
+ return
54
+ }
55
+ if let ipAddress = parseIP(from: urlString), let port = parsePort(from: urlString) {
56
+ UserDefaults.standard.setValue(ipAddress, forKey: "RCT_jsLocation")
57
+ UserDefaults.standard.synchronize()
58
+
59
+ let bundles = XTJSBundleTool.shared().getAllBundleInfo()
60
+ var bundleName = ""
61
+ for bundle in bundles {
62
+ if let bundleDict = bundle as? [String: Any] {
63
+ if let portNum = bundleDict["port"] as? String {
64
+ if portNum == port {
65
+ bundleName = bundleDict["bundleName"] as? String ?? ""
66
+ break
67
+ }
68
+ }
69
+ }
70
+ }
71
+ if !bundleName.isEmpty {
72
+ UserDefaults.standard.set("1", forKey: "\(bundleName)-debug")
73
+ UserDefaults.standard.synchronize()
74
+ }
75
+
76
+ XRNToastView.shared().showToast("ip地址绑定成功,重启APP生效!", duration: 3)
77
+ DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
78
+ exit(0)
79
+ }
80
+ } else {
81
+ XRNToastView.shared().showToast("ip地址解析失败!", duration: 3)
82
+ if let presentedVC = RCTPresentedViewController() {
83
+ presentedVC.dismiss(animated: true, completion: nil)
84
+ }
85
+ }
86
+ } else {
87
+ XRNToastView.shared().showToast("ip地址解析失败!", duration: 3)
88
+ if let presentedVC = RCTPresentedViewController() {
89
+ presentedVC.dismiss(animated: true, completion: nil)
90
+ }
91
+ }
92
+ }
93
+ }
94
+ #endif
95
+
96
+ func parseIP(from urlString: String) -> String? {
97
+ if let url = URL(string: urlString) {
98
+ return url.host
99
+ }
100
+ return nil
101
+ }
102
+
103
+ func parsePort(from urlString: String) -> String? {
104
+ if let url = URL(string: urlString), let port = url.port {
105
+ return String(port)
106
+ }
107
+ return nil
108
+ }
109
+
110
+ func jsonStringToDictionary(_ jsonString: String) -> [String: Any]? {
111
+ guard let jsonData = jsonString.data(using: .utf8) else {
112
+ print("Error converting string to Data")
113
+ return nil
114
+ }
115
+ do {
116
+ let jsonDictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any]
117
+ return jsonDictionary
118
+ } catch {
119
+ print("Error converting string to dictionary: \(error.localizedDescription)")
120
+ return nil
121
+ }
122
+ }
@@ -0,0 +1,34 @@
1
+ //
2
+ // XTSuspendBall.h
3
+ // XRNTemplate
4
+ //
5
+ // Created by xtgq on 2024/4/23.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
13
+ @protocol SuspendViewDelegate <NSObject>
14
+
15
+ - (void)suspendViewButtonClick:(UIButton *)sender;
16
+ @end
17
+
18
+ @interface XTSuspendBall : UIView {
19
+ CGPoint lastPoint;
20
+ BOOL isChangePosition;
21
+ CGFloat changeHig;
22
+ CGFloat changeWid;
23
+ }
24
+
25
+ @property (nonatomic, retain) UIButton *btn;
26
+ @property (nonatomic, strong) NSTimer *_Nullable timer;
27
+ @property (nonatomic, assign) UIInterfaceOrientation orientation;
28
+ @property (nonatomic, weak) id<SuspendViewDelegate> delegate;
29
+
30
+ - (void)showSuspendView;
31
+ - (void)dismissSuspendView;
32
+ @end
33
+
34
+ NS_ASSUME_NONNULL_END