@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.
- package/$package.json +51 -0
- package/.env +6 -0
- package/.env.prod +6 -0
- package/LICENSE +202 -0
- package/android/app/build.gradle +176 -0
- package/android/app/build_defs.bzl +19 -0
- package/android/app/debug.keystore +0 -0
- package/android/app/proguard-rules.pro +10 -0
- package/android/app/src/debug/AndroidManifest.xml +13 -0
- package/android/app/src/debug/java/com/xrn/template/ReactNativeFlipper.java +73 -0
- package/android/app/src/main/AndroidManifest.xml +46 -0
- package/android/app/src/main/assets/index.main-bundle.bundle +178940 -0
- package/android/app/src/main/assets/index.sub-bundle.bundle +178928 -0
- package/android/app/src/main/assets/xrn-manifest.json +1 -0
- package/android/app/src/main/java/com/xrn/template/MainActivity.kt +52 -0
- package/android/app/src/main/java/com/xrn/template/MainApplication.kt +91 -0
- package/android/app/src/main/java/com/xrn/template/multibundle/XBundleInfoHook.kt +9 -0
- package/android/app/src/main/java/com/xrn/template/multibundle/XDevSupportParams.kt +6 -0
- package/android/app/src/main/java/com/xrn/template/multibundle/XRNHostParams.kt +81 -0
- package/android/app/src/main/java/com/xrn/template/navigation/MainClazzFactory.kt +14 -0
- package/android/app/src/main/java/com/xrn/template/navigation/XBundleActivity.kt +56 -0
- package/android/app/src/main/java/com/xrn/template/navigation/XMainActivity.kt +4 -0
- package/android/app/src/main/java/com/xrn/template/utils/DevEntryUtil.kt +29 -0
- package/android/app/src/main/java/com/xrn/template/utils/LifecycleAwareRunnable.kt +37 -0
- package/android/app/src/main/jni/CMakeLists.txt +7 -0
- package/android/app/src/main/jni/MainApplicationModuleProvider.cpp +32 -0
- package/android/app/src/main/jni/MainApplicationModuleProvider.h +16 -0
- package/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +45 -0
- package/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +38 -0
- package/android/app/src/main/jni/MainComponentsRegistry.cpp +65 -0
- package/android/app/src/main/jni/MainComponentsRegistry.h +32 -0
- package/android/app/src/main/jni/OnLoad.cpp +11 -0
- package/android/app/src/main/res/drawable/bg_debug_entry.xml +15 -0
- package/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
- package/android/app/src/main/res/drawable-hdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_alerttriangle.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronleft.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_chevronright.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_close.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnative_libraries_logbox_ui_logboximages_loader.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_src_assets_backiconmask.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_images_fail_icon.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_images_success_icon.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_close.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_filter.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_more.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_search.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_devtools_assets_network_share.png +0 -0
- package/android/app/src/main/res/drawable-mdpi/node_modules_xrn_navigation_assets_backicon.png +0 -0
- package/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_copy_icon.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_app_info.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_app_start_time.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_file.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_fps.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_h5.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_health.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_kadun.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_net.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_qingchu.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_scan.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_self.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_setting.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_view_check.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_view_level.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_doraemon_viewmetrics.png +0 -0
- package/android/app/src/main/res/drawable-xxhdpi/node_modules_xrn_devtools_assets_images_rebackwhiteicon.png +0 -0
- package/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_src_assets_backicon.png +0 -0
- package/android/app/src/main/res/layout/activity_splash.xml +16 -0
- package/android/app/src/main/res/layout/layout_rn_dev_float.xml +18 -0
- package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/raw/bundle_config.json +23 -0
- package/android/app/src/main/res/raw/launch_screen.json +1 -0
- package/android/app/src/main/res/values/strings.xml +3 -0
- package/android/app/src/main/res/values/styles.xml +9 -0
- package/android/build.gradle +83 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradle.properties +63 -0
- package/android/gradlew +234 -0
- package/android/gradlew.bat +89 -0
- package/android/settings.gradle +18 -0
- package/harmony/.clang-format +64 -0
- package/harmony/.clang-tidy +1 -0
- package/harmony/.clangd +13 -0
- package/harmony/AppScope/app.json5 +10 -0
- package/harmony/AppScope/resources/base/element/string.json +8 -0
- package/harmony/AppScope/resources/base/media/app_icon.png +0 -0
- package/harmony/XRNTemplate-dev.cer +52 -0
- package/harmony/XRNTemplate-devDebug.p7b +0 -0
- package/harmony/XRNTemplate.p12 +0 -0
- package/harmony/build-profile.json5 +91 -0
- package/harmony/code-linter.json5 +20 -0
- package/harmony/entry/build-profile.json5 +33 -0
- package/harmony/entry/hvigorfile.ts +6 -0
- package/harmony/entry/obfuscation-rules.txt +23 -0
- package/harmony/entry/oh-package-lock.json5 +486 -0
- package/harmony/entry/oh-package.json5 +59 -0
- package/harmony/entry/src/main/cpp/CMakeLists.txt +72 -0
- package/harmony/entry/src/main/cpp/PackageProvider.cpp +51 -0
- package/harmony/entry/src/main/cpp/generated/BundleNavigation.cpp +25 -0
- package/harmony/entry/src/main/cpp/generated/BundleNavigation.h +21 -0
- package/harmony/entry/src/main/cpp/generated/ConfigNativeModule.cpp +21 -0
- package/harmony/entry/src/main/cpp/generated/ConfigNativeModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/GetRandomValuesNativeModule.cpp +21 -0
- package/harmony/entry/src/main/cpp/generated/GetRandomValuesNativeModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/ImageResizer.cpp +21 -0
- package/harmony/entry/src/main/cpp/generated/ImageResizer.h +21 -0
- package/harmony/entry/src/main/cpp/generated/NativeHarmonyTouchId.cpp +22 -0
- package/harmony/entry/src/main/cpp/generated/NativeHarmonyTouchId.h +21 -0
- package/harmony/entry/src/main/cpp/generated/OreitationLockerNativeModule.cpp +31 -0
- package/harmony/entry/src/main/cpp/generated/OreitationLockerNativeModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNCCameraRoll.cpp +28 -0
- package/harmony/entry/src/main/cpp/generated/RNCCameraRoll.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNCCameraRollPermission.cpp +26 -0
- package/harmony/entry/src/main/cpp/generated/RNCCameraRollPermission.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNCWebViewComponentDescriptor.h +43 -0
- package/harmony/entry/src/main/cpp/generated/RNCWebViewJSIBinder.h +120 -0
- package/harmony/entry/src/main/cpp/generated/RNCWebViewModule.cpp +22 -0
- package/harmony/entry/src/main/cpp/generated/RNCWebViewModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNDeviceInfo.cpp +137 -0
- package/harmony/entry/src/main/cpp/generated/RNDeviceInfo.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNDocumentPicker.cpp +24 -0
- package/harmony/entry/src/main/cpp/generated/RNDocumentPicker.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerButtonComponentDescriptor.h +43 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerButtonJSIBinder.h +38 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerModule.cpp +28 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerRootViewComponentDescriptor.h +43 -0
- package/harmony/entry/src/main/cpp/generated/RNGestureHandlerRootViewJSIBinder.h +31 -0
- package/harmony/entry/src/main/cpp/generated/RNLocalize.cpp +31 -0
- package/harmony/entry/src/main/cpp/generated/RNLocalize.h +21 -0
- package/harmony/entry/src/main/cpp/generated/RNOHGeneratedPackage.h +191 -0
- package/harmony/entry/src/main/cpp/generated/RTNCodePush.cpp +48 -0
- package/harmony/entry/src/main/cpp/generated/RTNCodePush.h +21 -0
- package/harmony/entry/src/main/cpp/generated/ReactNativeBlobUtil.cpp +51 -0
- package/harmony/entry/src/main/cpp/generated/ReactNativeBlobUtil.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNAppUtilsModule.cpp +29 -0
- package/harmony/entry/src/main/cpp/generated/XRNAppUtilsModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNAssetLoaderModule.cpp +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNAssetLoaderModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNBundleModule.cpp +27 -0
- package/harmony/entry/src/main/cpp/generated/XRNBundleModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNDebugToolsModule.cpp +32 -0
- package/harmony/entry/src/main/cpp/generated/XRNDebugToolsModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNFileModule.cpp +22 -0
- package/harmony/entry/src/main/cpp/generated/XRNFileModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNLoadingModule.cpp +25 -0
- package/harmony/entry/src/main/cpp/generated/XRNLoadingModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNMultiBundleModule.cpp +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNMultiBundleModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNNativeStorageModule.cpp +26 -0
- package/harmony/entry/src/main/cpp/generated/XRNNativeStorageModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNNavigation.cpp +23 -0
- package/harmony/entry/src/main/cpp/generated/XRNNavigation.h +21 -0
- package/harmony/entry/src/main/cpp/generated/XRNToastModule.cpp +22 -0
- package/harmony/entry/src/main/cpp/generated/XRNToastModule.h +21 -0
- package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/BaseReactNativeOhTplAsyncStoragePackage.h +68 -0
- package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/turbo_modules/RNCAsyncStorage.cpp +26 -0
- package/harmony/entry/src/main/cpp/generated/_react_native_oh_tpl_async_storage/RNOH/generated/turbo_modules/RNCAsyncStorage.h +21 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/harmony/entry/src/main/ets/BundleHelper.ets +198 -0
- package/harmony/entry/src/main/ets/Constants.ets +2 -0
- package/harmony/entry/src/main/ets/MainAbilityStage.ets +60 -0
- package/harmony/entry/src/main/ets/entryability/EntryAbility.ets +57 -0
- package/harmony/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets +12 -0
- package/harmony/entry/src/main/ets/lottie/launch_screen.json +1 -0
- package/harmony/entry/src/main/ets/module/devtools/components/FloatBall.ets +359 -0
- package/harmony/entry/src/main/ets/navDestination/BizModuleContainer.ets +8 -0
- package/harmony/entry/src/main/ets/navDestination/MainModuleContainer.ets +8 -0
- package/harmony/entry/src/main/ets/navDestination/Splash.ets +79 -0
- package/harmony/entry/src/main/ets/pages/Index.ets +66 -0
- package/harmony/entry/src/main/module.json5 +68 -0
- package/harmony/entry/src/main/resources/base/element/color.json +12 -0
- package/harmony/entry/src/main/resources/base/element/string.json +19 -0
- package/harmony/entry/src/main/resources/base/media/background.png +0 -0
- package/harmony/entry/src/main/resources/base/media/foreground.png +0 -0
- package/harmony/entry/src/main/resources/base/media/ic_back.png +0 -0
- package/harmony/entry/src/main/resources/base/media/layered_image.json +7 -0
- package/harmony/entry/src/main/resources/base/media/startIcon.png +0 -0
- package/harmony/entry/src/main/resources/base/profile/backup_config.json +3 -0
- package/harmony/entry/src/main/resources/base/profile/main_pages.json +5 -0
- package/harmony/entry/src/main/resources/en_US/element/string.json +16 -0
- package/harmony/entry/src/main/resources/rawfile/bundle_config.json5 +23 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/AntDesign.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Entypo.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/EvilIcons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Feather.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Brands.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Regular.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome5_Solid.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Brands.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Regular.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/FontAwesome6_Solid.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Fontisto.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Foundation.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Ionicons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/MaterialCommunityIcons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/MaterialIcons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Octicons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/SimpleLineIcons.ttf +0 -0
- package/harmony/entry/src/main/resources/rawfile/fonts/Zocial.ttf +0 -0
- package/harmony/entry/src/main/resources/zh_CN/element/string.json +16 -0
- package/harmony/entry/src/mock/mock-config.json5 +2 -0
- package/harmony/entry/src/ohosTest/ets/test/Ability.test.ets +35 -0
- package/harmony/entry/src/ohosTest/ets/test/List.test.ets +5 -0
- package/harmony/entry/src/ohosTest/module.json5 +13 -0
- package/harmony/entry/src/test/List.test.ets +5 -0
- package/harmony/entry/src/test/LocalUnit.test.ets +33 -0
- package/harmony/hvigor/hvigor-config.json5 +22 -0
- package/harmony/hvigorfile.ts +6 -0
- package/harmony/material/ac/6a282c38039b44b2949441a85986c35d +1 -0
- package/harmony/material/ce/b2a765b7b925475797f45ae55c8d3ad3 +0 -0
- package/harmony/material/fd/0/9cbed212f275489b874de30a02692f59 +1 -0
- package/harmony/material/fd/1/dc8ea45ef44142d09bca7eeacdc5ecac +1 -0
- package/harmony/material/fd/2/d34888210a5846829d745f65295f90b7 +1 -0
- package/harmony/oh-package-lock.json5 +27 -0
- package/harmony/oh-package.json5 +17 -0
- package/ios/.xcode.env +11 -0
- package/ios/BundleEventCenter/XTBundleProvider.h +17 -0
- package/ios/BundleEventCenter/XTBundleProvider.m +129 -0
- package/ios/BundleEventCenter/XTBundleViewControllerFactory.h +18 -0
- package/ios/BundleEventCenter/XTBundleViewControllerFactory.m +39 -0
- package/ios/BundleEventCenter/bundleController/XTBundleViewController.h +16 -0
- package/ios/BundleEventCenter/bundleController/XTBundleViewController.m +35 -0
- package/ios/BundleEventCenter/bundleController/XTMainBundleViewController.h +16 -0
- package/ios/BundleEventCenter/bundleController/XTMainBundleViewController.m +41 -0
- package/ios/BundleEventCenter/bundleController/xtBundles.plist +14 -0
- package/ios/Podfile +221 -0
- package/ios/Podfile.lock +955 -0
- package/ios/RNDebug/DebugPlugin/XTPluginManage.h +24 -0
- package/ios/RNDebug/DebugPlugin/XTPluginManage.m +93 -0
- package/ios/RNDebug/Views/XTLoadJSErrorTipPanel.swift +231 -0
- package/ios/RNDebug/Views/XTScanQRPlugin.swift +122 -0
- package/ios/RNDebug/Views/XTSuspendBall.h +34 -0
- package/ios/RNDebug/Views/XTSuspendBall.m +357 -0
- package/ios/XRNTemplate/AppDelegate.h +8 -0
- package/ios/XRNTemplate/AppDelegate.mm +168 -0
- package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/Contents.json +55 -0
- package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/icon120_120@2x.png +0 -0
- package/ios/XRNTemplate/Images.xcassets/AppIcon.appiconset/icon180_180@3x.png +0 -0
- package/ios/XRNTemplate/Images.xcassets/Contents.json +6 -0
- package/ios/XRNTemplate/Images.xcassets/launch_icon.imageset/Contents.json +21 -0
- package/ios/XRNTemplate/Images.xcassets/launch_icon.imageset/launch_icon@2x.png +0 -0
- package/ios/XRNTemplate/Info.plist +82 -0
- package/ios/XRNTemplate/LaunchScreen.storyboard +43 -0
- package/ios/XRNTemplate/main.m +10 -0
- package/ios/XRNTemplate-Bridging-Header.h +29 -0
- package/ios/XRNTemplate.xcodeproj/project.pbxproj +1022 -0
- package/ios/XRNTemplate.xcodeproj/xcshareddata/xcschemes/XRNTemplate.xcscheme +88 -0
- package/ios/XRNTemplate.xcworkspace/contents.xcworkspacedata +10 -0
- package/ios/XRNTemplate.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/XRNTemplateTests/Info.plist +24 -0
- package/ios/XRNTemplateTests/XRNTemplateTests.m +66 -0
- package/main-bundle/App.tsx +29 -0
- package/main-bundle/app.json +15 -0
- package/main-bundle/babel.config.js +4 -0
- package/main-bundle/index.ts +3 -0
- package/main-bundle/metro.config.js +21 -0
- package/main-bundle/package.json +35 -0
- package/main-bundle/router.ts +18 -0
- package/main-bundle/tsconfig.json +26 -0
- package/main-bundle/xrn.config.ts +13 -0
- package/main-bundle/yarn.lock +13622 -0
- package/package.json +16 -0
- package/react-native.config.js +36 -0
- package/sub-bundle/App.tsx +23 -0
- package/sub-bundle/app.json +15 -0
- package/sub-bundle/babel.config.js +4 -0
- package/sub-bundle/index.ts +3 -0
- package/sub-bundle/metro.config.js +21 -0
- package/sub-bundle/package.json +36 -0
- package/sub-bundle/router.ts +18 -0
- package/sub-bundle/tsconfig.json +26 -0
- package/sub-bundle/xrn.config.ts +13 -0
- package/sub-bundle/yarn.lock +13652 -0
- package/xrn-react-native-xcode.sh +172 -0
- 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,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,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 ¶ms) {
|
|
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 ¶ms);
|
|
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 ¶ms) {
|
|
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 ¶ms) 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>
|