From e4b787776390637c6b85b84184d9a4667fe2d9cd Mon Sep 17 00:00:00 2001 From: Joseph Hale Date: Thu, 4 May 2023 13:02:39 -0700 Subject: [PATCH] chore: Update to React Native 0.71.7 --- .buckconfig | 6 - .gitignore | 20 +- .ruby-version | 1 - .vscode/settings.json | 25 +- Gemfile | 4 +- android/app/_BUCK | 55 - android/app/build.gradle | 271 +- android/app/build_defs.bzl | 19 - .../com/binaryclock/ReactNativeFlipper.java | 86 +- .../java/com/binaryclock/MainActivity.java | 31 +- .../java/com/binaryclock/MainApplication.java | 100 +- .../MainApplicationReactNativeHost.java | 116 - .../components/MainComponentsRegistry.java | 36 - ...ApplicationTurboModuleManagerDelegate.java | 48 - android/app/src/main/jni/Android.mk | 49 - .../jni/MainApplicationModuleProvider.cpp | 24 - .../main/jni/MainApplicationModuleProvider.h | 16 - ...nApplicationTurboModuleManagerDelegate.cpp | 45 - ...ainApplicationTurboModuleManagerDelegate.h | 38 - .../src/main/jni/MainComponentsRegistry.cpp | 61 - .../app/src/main/jni/MainComponentsRegistry.h | 32 - android/app/src/main/jni/OnLoad.cpp | 11 - .../jhale/binaryclock/ReactNativeFlipper.java | 20 + android/build.gradle | 37 +- android/gradle.properties | 4 + android/gradle/wrapper/gradle-wrapper.jar | Bin 59536 -> 59821 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 5 - babel.config.js | 5 +- index.js => index.ts | 0 ios/.xcode.env | 11 + ios/BinaryClock.xcodeproj/project.pbxproj | 20 +- ios/BinaryClock/AppDelegate.h | 6 +- ios/BinaryClock/AppDelegate.mm | 96 +- ios/BinaryClock/Info.plist | 4 +- ios/Podfile | 44 +- ios/Podfile.lock | 603 ++- package.json | 36 +- src/pages/BinaryClockScreen.tsx | 7 +- tsconfig.json | 126 +- yarn.lock | 4529 ++++++++--------- 41 files changed, 2792 insertions(+), 3857 deletions(-) delete mode 100644 .buckconfig delete mode 100644 .ruby-version delete mode 100644 android/app/_BUCK delete mode 100644 android/app/build_defs.bzl delete mode 100644 android/app/src/main/java/com/binaryclock/newarchitecture/MainApplicationReactNativeHost.java delete mode 100644 android/app/src/main/java/com/binaryclock/newarchitecture/components/MainComponentsRegistry.java delete mode 100644 android/app/src/main/java/com/binaryclock/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java delete mode 100644 android/app/src/main/jni/Android.mk delete mode 100644 android/app/src/main/jni/MainApplicationModuleProvider.cpp delete mode 100644 android/app/src/main/jni/MainApplicationModuleProvider.h delete mode 100644 android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp delete mode 100644 android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h delete mode 100644 android/app/src/main/jni/MainComponentsRegistry.cpp delete mode 100644 android/app/src/main/jni/MainComponentsRegistry.h delete mode 100644 android/app/src/main/jni/OnLoad.cpp create mode 100644 android/app/src/release/java/dev/jhale/binaryclock/ReactNativeFlipper.java rename index.js => index.ts (100%) create mode 100644 ios/.xcode.env diff --git a/.buckconfig b/.buckconfig deleted file mode 100644 index 934256c..0000000 --- a/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/.gitignore b/.gitignore index aed7dac..8133234 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ DerivedData *.hmap *.ipa *.xcuserstate +ios/.xcode.env.local # Android/IntelliJ # @@ -33,6 +34,9 @@ build/ local.properties *.iml *.hprof +.cxx/ +*.keystore +!debug.keystore # node.js # @@ -40,12 +44,6 @@ node_modules/ npm-debug.log yarn-error.log -# BUCK -buck-out/ -\.buckd/ -*.keystore -!debug.keystore - # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the @@ -53,9 +51,10 @@ buck-out/ # For more information about the recommended setup visit: # https://docs.fastlane.tools/best-practices/source-control/ -*/fastlane/report.xml -*/fastlane/Preview.html -*/fastlane/screenshots +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output # Bundle artifact *.jsbundle @@ -63,3 +62,6 @@ buck-out/ # Ruby / CocoaPods /ios/Pods/ /vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* \ No newline at end of file diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index a4dd9db..0000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.4 diff --git a/.vscode/settings.json b/.vscode/settings.json index 144f23b..c5c0f7e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,15 @@ { - "cSpell.words": ["Pressable"], - "licenser.author": "Joseph Hale", - "licenser.license": "MPLv2", - "licenser.projectName": "Binary Clock", - "[typescript]": { - "editor.tabSize": 2 - }, - "[typescriptreact]": { - "editor.tabSize": 2 - } -} + "cSpell.words": [ + "Pressable" + ], + "licenser.author": "Joseph Hale", + "licenser.license": "MPLv2", + "licenser.projectName": "Binary Clock", + "[typescript]": { + "editor.tabSize": 2 + }, + "[typescriptreact]": { + "editor.tabSize": 2 + }, + "java.compile.nullAnalysis.mode": "automatic" +} \ No newline at end of file diff --git a/Gemfile b/Gemfile index 2c3edcf..1142b1b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '2.7.4' +ruby '>= 2.6.10' -gem 'cocoapods', '~> 1.11', '>= 1.11.2' +gem 'cocoapods', '>= 1.11.3' diff --git a/android/app/_BUCK b/android/app/_BUCK deleted file mode 100644 index 398aa55..0000000 --- a/android/app/_BUCK +++ /dev/null @@ -1,55 +0,0 @@ -# To learn about Buck see [Docs](https://buckbuild.com/). -# To run your application with Buck: -# - install Buck -# - `npm start` - to start the packager -# - `cd android` -# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` -# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck -# - `buck install -r android/app` - compile, install and run application -# - -load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") - -lib_deps = [] - -create_aar_targets(glob(["libs/*.aar"])) - -create_jar_targets(glob(["libs/*.jar"])) - -android_library( - name = "all-libs", - exported_deps = lib_deps, -) - -android_library( - name = "app-code", - srcs = glob([ - "src/main/java/**/*.java", - ]), - deps = [ - ":all-libs", - ":build_config", - ":res", - ], -) - -android_build_config( - name = "build_config", - package = "dev.jhale.binaryclock", -) - -android_resource( - name = "res", - package = "dev.jhale.binaryclock", - res = "src/main/res", -) - -android_binary( - name = "app", - keystore = "//android/keystores:debug", - manifest = "src/main/AndroidManifest.xml", - package_type = "debug", - deps = [ - ":app-code", - ], -) diff --git a/android/app/build.gradle b/android/app/build.gradle index 3242320..331f681 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,127 +1,87 @@ apply plugin: "com.android.application" +apply plugin: "com.facebook.react" import com.android.build.OutputFile /** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation. If none specified and - * // "index.android.js" exists, it will be used. Otherwise "index.js" is - * // default. Can be overridden with ENTRY_FILE environment variable. - * entryFile: "index.android.js", - * - * // https://reactnative.dev/docs/performance#enable-the-ram-format - * bundleCommand: "ram-bundle", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // whether to disable dev mode in custom build variants (by default only disabled in release) - * // for example: to disable dev mode in the staging build type (if configured) - * devDisabledInStaging: true, - * // The configuration property can be in the following formats - * // 'devDisabledIn${productFlavor}${buildType}' - * // 'devDisabledIn${buildType}' - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"], - * - * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"], - * - * // supply additional arguments to the packager - * extraPackagerArgs: [] - * ] + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. */ - -project.ext.react = [ - enableHermes: false, // clean and rebuild if changing -] - -apply from: "../../node_modules/react-native/react.gradle" +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen + // codegenDir = file("../node_modules/react-native-codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} /** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. + * Set this to true to create four separate APKs instead of one, + * one for each native architecture. This is useful if you don't + * use App Bundles (https://developer.android.com/guide/app-bundle/) + * and want to have separate APKs to upload to the Play Store. */ def enableSeparateBuildPerCPUArchitecture = false /** - * Run Proguard to shrink the Java bytecode in release builds. + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ def enableProguardInReleaseBuilds = false /** - * The preferred build flavor of JavaScriptCore. + * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that + * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' /** - * Whether to enable the Hermes VM. - * - * This should be set on project.ext.react and that value will be read here. If it is not set - * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode - * and the benefits of using Hermes will therefore be sharply reduced. - */ -def enableHermes = project.ext.react.get("enableHermes", false); - -/** - * Architectures to build native code for. + * Private function to get the list of Native Architectures you want to build. + * This reads the value from reactNativeArchitectures in your gradle.properties + * file and works together with the --active-arch-only flag of react-native run-android. */ def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") @@ -133,74 +93,13 @@ android { compileSdkVersion rootProject.ext.compileSdkVersion + namespace "dev.jhale.binaryclock" defaultConfig { applicationId "dev.jhale.binaryclock" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - ndkBuild { - arguments "APP_PLATFORM=android-21", - "APP_STL=c++_shared", - "NDK_TOOLCHAIN_VERSION=clang", - "GENERATED_SRC_DIR=$buildDir/generated/source", - "PROJECT_BUILD_DIR=$buildDir", - "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", - "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build" - cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" - cppFlags "-std=c++17" - // Make sure this target name is the same you specify inside the - // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. - targets "binaryclock_appmodules" - } - } - } - } - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - ndkBuild { - path "$projectDir/src/main/jni/Android.mk" - } - } - def reactAndroidProjectDir = project(':ReactAndroid').projectDir - def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - afterEvaluate { - // If you wish to add a custom TurboModule or component locally, - // you should uncomment this line. - // preBuild.dependsOn("generateCodegenArtifactsFromSchema") - preDebugBuild.dependsOn(packageReactNdkDebugLibs) - preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) - - // Due to a bug inside AGP, we have to explicitly set a dependency - // between configureNdkBuild* tasks and the preBuild tasks. - // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 - configureNdkBuildRelease.dependsOn(preReleaseBuild) - configureNdkBuildDebug.dependsOn(preDebugBuild) - reactNativeArchitectures().each { architecture -> - tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { - dependsOn("preDebugBuild") - } - tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { - dependsOn("preReleaseBuild") - } - } - } } splits { @@ -258,60 +157,22 @@ android { } dependencies { - implementation fileTree(dir: "libs", include: ["*.jar"]) - - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" // From node_modules + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' exclude group:'com.squareup.okhttp3', module:'okhttp' } - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - } - - if (enableHermes) { - def hermesPath = "../../node_modules/hermes-engine/android/"; - debugImplementation files(hermesPath + "hermes-debug.aar") - releaseImplementation files(hermesPath + "hermes-release.aar") + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } -if (isNewArchitectureEnabled()) { - // If new architecture is enabled, we let you build RN from source - // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. - // This will be applied to all the imported transtitive dependency. - configurations.all { - resolutionStrategy.dependencySubstitution { - substitute(module("com.facebook.react:react-native")) - .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") - } - } -} - -// Run this once to be able to run the application with BUCK -// puts all compile dependencies into folder libs for BUCK to use -task copyDownloadableDepsToLibs(type: Copy) { - from configurations.implementation - into 'libs' -} - -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) - -def isNewArchitectureEnabled() { - // To opt-in for the New Architecture, you can either: - // - Set `newArchEnabled` to true inside the `gradle.properties` file - // - Invoke gradle with `-newArchEnabled=true` - // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` - return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" -} +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) \ No newline at end of file diff --git a/android/app/build_defs.bzl b/android/app/build_defs.bzl deleted file mode 100644 index fff270f..0000000 --- a/android/app/build_defs.bzl +++ /dev/null @@ -1,19 +0,0 @@ -"""Helper definitions to glob .aar and .jar targets""" - -def create_aar_targets(aarfiles): - for aarfile in aarfiles: - name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] - lib_deps.append(":" + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -def create_jar_targets(jarfiles): - for jarfile in jarfiles: - name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] - lib_deps.append(":" + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) diff --git a/android/app/src/debug/java/com/binaryclock/ReactNativeFlipper.java b/android/app/src/debug/java/com/binaryclock/ReactNativeFlipper.java index b65effa..d9572c5 100644 --- a/android/app/src/debug/java/com/binaryclock/ReactNativeFlipper.java +++ b/android/app/src/debug/java/com/binaryclock/ReactNativeFlipper.java @@ -17,7 +17,6 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping; import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.react.ReactFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; import com.facebook.react.ReactInstanceEventListener; import com.facebook.react.ReactInstanceManager; @@ -25,49 +24,54 @@ import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.network.NetworkingModule; import okhttp3.OkHttpClient; +/** + * Class responsible of loading Flipper inside your React Native application. + * This is the debug + * flavor of it. Here you can add your own plugins and customize the Flipper + * setup. + */ public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - if (FlipperUtils.shouldEnableFlipper(context)) { - final FlipperClient client = AndroidFlipperClient.getInstance(context); - - client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new ReactFlipperPlugin()); - client.addPlugin(new DatabasesFlipperPlugin(context)); - client.addPlugin(new SharedPreferencesFlipperPlugin(context)); - client.addPlugin(CrashReporterPlugin.getInstance()); + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + if (FlipperUtils.shouldEnableFlipper(context)) { + final FlipperClient client = AndroidFlipperClient.getInstance(context); - NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); - NetworkingModule.setCustomClientBuilder( - new NetworkingModule.CustomClientBuilder() { - @Override - public void apply(OkHttpClient.Builder builder) { - builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); - } - }); - client.addPlugin(networkFlipperPlugin); - client.start(); + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); + client.addPlugin(new DatabasesFlipperPlugin(context)); + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); + client.addPlugin(CrashReporterPlugin.getInstance()); - // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized - // Hence we run if after all native modules have been initialized - ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); - if (reactContext == null) { - reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceEventListener() { - @Override - public void onReactContextInitialized(ReactContext reactContext) { - reactInstanceManager.removeReactInstanceEventListener(this); - reactContext.runOnNativeModulesQueueThread( - new Runnable() { - @Override - public void run() { - client.addPlugin(new FrescoFlipperPlugin()); - } + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); + NetworkingModule.setCustomClientBuilder( + new NetworkingModule.CustomClientBuilder() { + @Override + public void apply(OkHttpClient.Builder builder) { + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); + } }); - } - }); - } else { - client.addPlugin(new FrescoFlipperPlugin()); - } + client.addPlugin(networkFlipperPlugin); + client.start(); + + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized + // Hence we run if after all native modules have been initialized + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); + if (reactContext == null) { + reactInstanceManager.addReactInstanceEventListener( + new ReactInstanceEventListener() { + @Override + public void onReactContextInitialized(ReactContext reactContext) { + reactInstanceManager.removeReactInstanceEventListener(this); + reactContext.runOnNativeModulesQueueThread( + new Runnable() { + @Override + public void run() { + client.addPlugin(new FrescoFlipperPlugin()); + } + }); + } + }); + } else { + client.addPlugin(new FrescoFlipperPlugin()); + } + } } - } } diff --git a/android/app/src/main/java/com/binaryclock/MainActivity.java b/android/app/src/main/java/com/binaryclock/MainActivity.java index 2a6bc96..9c5750c 100644 --- a/android/app/src/main/java/com/binaryclock/MainActivity.java +++ b/android/app/src/main/java/com/binaryclock/MainActivity.java @@ -2,7 +2,8 @@ package dev.jhale.binaryclock; import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.ReactRootView; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactActivityDelegate; public class MainActivity extends ReactActivity { @@ -16,25 +17,19 @@ public class MainActivity extends ReactActivity { } /** - * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and - * you can specify the rendered you wish to use (Fabric or the older renderer). + * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link + * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React + * (aka React 18) with two boolean flags. */ @Override protected ReactActivityDelegate createReactActivityDelegate() { - return new MainActivityDelegate(this, getMainComponentName()); - } - - public static class MainActivityDelegate extends ReactActivityDelegate { - public MainActivityDelegate(ReactActivity activity, String mainComponentName) { - super(activity, mainComponentName); - } - - @Override - protected ReactRootView createRootView() { - ReactRootView reactRootView = new ReactRootView(getContext()); - // If you opted-in for the New Architecture, we enable the Fabric Renderer. - reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); - return reactRootView; - } + return new DefaultReactActivityDelegate( + this, + getMainComponentName(), + // If you opted-in for the New Architecture, we enable the Fabric Renderer. + DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled + // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). + DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled + ); } } diff --git a/android/app/src/main/java/com/binaryclock/MainApplication.java b/android/app/src/main/java/com/binaryclock/MainApplication.java index 73d0514..786867e 100644 --- a/android/app/src/main/java/com/binaryclock/MainApplication.java +++ b/android/app/src/main/java/com/binaryclock/MainApplication.java @@ -1,93 +1,63 @@ package dev.jhale.binaryclock; import android.app.Application; -import android.content.Context; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; -import com.corbt.keepawake.KCKeepAwakePackage; -import com.corbt.keepawake.KCKeepAwakePackage; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; -import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactNativeHost; import com.facebook.soloader.SoLoader; -import dev.jhale.binaryclock.newarchitecture.MainApplicationReactNativeHost; -import java.lang.reflect.InvocationTargetException; import java.util.List; public class MainApplication extends Application implements ReactApplication { - private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { + private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; + return BuildConfig.DEBUG; } @Override protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for + // example: + // packages.add(new MyReactNativePackage()); + return packages; } @Override protected String getJSMainModuleName() { - return "index"; + return "index"; } - }; - private final ReactNativeHost mNewArchitectureNativeHost = - new MainApplicationReactNativeHost(this); + @Override + protected boolean isNewArchEnabled() { + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } - @Override - public ReactNativeHost getReactNativeHost() { - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - return mNewArchitectureNativeHost; - } else { - return mReactNativeHost; - } - } + @Override + protected Boolean isHermesEnabled() { + return BuildConfig.IS_HERMES_ENABLED; + } + }; - @Override - public void onCreate() { - super.onCreate(); - // If you opted-in for the New Architecture, we enable the TurboModule system - ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - } + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { - /* - We use reflection here to pick up the class that initializes Flipper, - since Flipper library is not available in release mode - */ - Class aClass = Class.forName("dev.jhale.binaryclock.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for + // this app. + DefaultNewArchitectureEntryPoint.load(); + } + ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } - } -} +} \ No newline at end of file diff --git a/android/app/src/main/java/com/binaryclock/newarchitecture/MainApplicationReactNativeHost.java b/android/app/src/main/java/com/binaryclock/newarchitecture/MainApplicationReactNativeHost.java deleted file mode 100644 index 920f148..0000000 --- a/android/app/src/main/java/com/binaryclock/newarchitecture/MainApplicationReactNativeHost.java +++ /dev/null @@ -1,116 +0,0 @@ -package dev.jhale.binaryclock.newarchitecture; - -import android.app.Application; -import androidx.annotation.NonNull; -import com.facebook.react.PackageList; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.JSIModulePackage; -import com.facebook.react.bridge.JSIModuleProvider; -import com.facebook.react.bridge.JSIModuleSpec; -import com.facebook.react.bridge.JSIModuleType; -import com.facebook.react.bridge.JavaScriptContextHolder; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.UIManager; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.react.fabric.CoreComponentsRegistry; -import com.facebook.react.fabric.EmptyReactNativeConfig; -import com.facebook.react.fabric.FabricJSIModuleProvider; -import com.facebook.react.uimanager.ViewManagerRegistry; -import dev.jhale.binaryclock.BuildConfig; -import dev.jhale.binaryclock.newarchitecture.components.MainComponentsRegistry; -import dev.jhale.binaryclock.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; -import java.util.ArrayList; -import java.util.List; - -/** - * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both - * TurboModule delegates and the Fabric Renderer. - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationReactNativeHost extends ReactNativeHost { - public MainApplicationReactNativeHost(Application application) { - super(application); - } - - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: - // packages.add(new TurboReactPackage() { ... }); - // If you have custom Fabric Components, their ViewManagers should also be loaded here - // inside a ReactPackage. - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - - @NonNull - @Override - protected ReactPackageTurboModuleManagerDelegate.Builder - getReactPackageTurboModuleManagerDelegateBuilder() { - // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary - // for the new architecture and to use TurboModules correctly. - return new MainApplicationTurboModuleManagerDelegate.Builder(); - } - - @Override - protected JSIModulePackage getJSIModulePackage() { - return new JSIModulePackage() { - @Override - public List getJSIModules( - final ReactApplicationContext reactApplicationContext, - final JavaScriptContextHolder jsContext) { - final List specs = new ArrayList<>(); - - // Here we provide a new JSIModuleSpec that will be responsible of providing the - // custom Fabric Components. - specs.add( - new JSIModuleSpec() { - @Override - public JSIModuleType getJSIModuleType() { - return JSIModuleType.UIManager; - } - - @Override - public JSIModuleProvider getJSIModuleProvider() { - final ComponentFactory componentFactory = new ComponentFactory(); - CoreComponentsRegistry.register(componentFactory); - - // Here we register a Components Registry. - // The one that is generated with the template contains no components - // and just provides you the one from React Native core. - MainComponentsRegistry.register(componentFactory); - - final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); - - ViewManagerRegistry viewManagerRegistry = - new ViewManagerRegistry( - reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); - - return new FabricJSIModuleProvider( - reactApplicationContext, - componentFactory, - new EmptyReactNativeConfig(), - viewManagerRegistry); - } - }); - return specs; - } - }; - } -} diff --git a/android/app/src/main/java/com/binaryclock/newarchitecture/components/MainComponentsRegistry.java b/android/app/src/main/java/com/binaryclock/newarchitecture/components/MainComponentsRegistry.java deleted file mode 100644 index cf8e166..0000000 --- a/android/app/src/main/java/com/binaryclock/newarchitecture/components/MainComponentsRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -package dev.jhale.binaryclock.newarchitecture.components; - -import com.facebook.jni.HybridData; -import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.soloader.SoLoader; - -/** - * Class responsible to load the custom Fabric Components. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -@DoNotStrip -public class MainComponentsRegistry { - static { - SoLoader.loadLibrary("fabricjni"); - } - - @DoNotStrip private final HybridData mHybridData; - - @DoNotStrip - private native HybridData initHybrid(ComponentFactory componentFactory); - - @DoNotStrip - private MainComponentsRegistry(ComponentFactory componentFactory) { - mHybridData = initHybrid(componentFactory); - } - - @DoNotStrip - public static MainComponentsRegistry register(ComponentFactory componentFactory) { - return new MainComponentsRegistry(componentFactory); - } -} diff --git a/android/app/src/main/java/com/binaryclock/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/android/app/src/main/java/com/binaryclock/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java deleted file mode 100644 index b9c6015..0000000 --- a/android/app/src/main/java/com/binaryclock/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +++ /dev/null @@ -1,48 +0,0 @@ -package dev.jhale.binaryclock.newarchitecture.modules; - -import com.facebook.jni.HybridData; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.soloader.SoLoader; -import java.util.List; - -/** - * Class responsible to load the TurboModules. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationTurboModuleManagerDelegate - extends ReactPackageTurboModuleManagerDelegate { - - private static volatile boolean sIsSoLibraryLoaded; - - protected MainApplicationTurboModuleManagerDelegate( - ReactApplicationContext reactApplicationContext, List packages) { - super(reactApplicationContext, packages); - } - - protected native HybridData initHybrid(); - - native boolean canCreateTurboModule(String moduleName); - - public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { - protected MainApplicationTurboModuleManagerDelegate build( - ReactApplicationContext context, List packages) { - return new MainApplicationTurboModuleManagerDelegate(context, packages); - } - } - - @Override - protected synchronized void maybeLoadOtherSoLibraries() { - if (!sIsSoLibraryLoaded) { - // If you change the name of your application .so file in the Android.mk file, - // make sure you update the name here as well. - SoLoader.loadLibrary("binaryclock_appmodules"); - sIsSoLibraryLoaded = true; - } - } -} diff --git a/android/app/src/main/jni/Android.mk b/android/app/src/main/jni/Android.mk deleted file mode 100644 index b9e8a93..0000000 --- a/android/app/src/main/jni/Android.mk +++ /dev/null @@ -1,49 +0,0 @@ -THIS_DIR := $(call my-dir) - -include $(REACT_ANDROID_DIR)/Android-prebuilt.mk - -# If you wish to add a custom TurboModule or Fabric component in your app you -# will have to include the following autogenerated makefile. -# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk -include $(CLEAR_VARS) - -LOCAL_PATH := $(THIS_DIR) - -# You can customize the name of your application .so file here. -LOCAL_MODULE := binaryclock_appmodules - -LOCAL_C_INCLUDES := $(LOCAL_PATH) -LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) - -# If you wish to add a custom TurboModule or Fabric component in your app you -# will have to uncomment those lines to include the generated source -# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) -# -# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni -# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp) -# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni - -# Here you should add any native library you wish to depend on. -LOCAL_SHARED_LIBRARIES := \ - libfabricjni \ - libfbjni \ - libfolly_futures \ - libfolly_json \ - libglog \ - libjsi \ - libreact_codegen_rncore \ - libreact_debug \ - libreact_nativemodule_core \ - libreact_render_componentregistry \ - libreact_render_core \ - libreact_render_debug \ - libreact_render_graphics \ - librrc_view \ - libruntimeexecutor \ - libturbomodulejsijni \ - libyoga - -LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall - -include $(BUILD_SHARED_LIBRARY) diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/android/app/src/main/jni/MainApplicationModuleProvider.cpp deleted file mode 100644 index 0ac23cc..0000000 --- a/android/app/src/main/jni/MainApplicationModuleProvider.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "MainApplicationModuleProvider.h" - -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms) { - // Here you can provide your own module provider for TurboModules coming from - // either your application or from external libraries. The approach to follow - // is similar to the following (for a library called `samplelibrary`: - // - // auto module = samplelibrary_ModuleProvider(moduleName, params); - // if (module != nullptr) { - // return module; - // } - // return rncore_ModuleProvider(moduleName, params); - return rncore_ModuleProvider(moduleName, params); -} - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.h b/android/app/src/main/jni/MainApplicationModuleProvider.h deleted file mode 100644 index 0fa43fa..0000000 --- a/android/app/src/main/jni/MainApplicationModuleProvider.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include -#include - -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms); - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp deleted file mode 100644 index dbbdc3d..0000000 --- a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainApplicationModuleProvider.h" - -namespace facebook { -namespace react { - -jni::local_ref -MainApplicationTurboModuleManagerDelegate::initHybrid( - jni::alias_ref) { - return makeCxxInstance(); -} - -void MainApplicationTurboModuleManagerDelegate::registerNatives() { - registerHybrid({ - makeNativeMethod( - "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), - makeNativeMethod( - "canCreateTurboModule", - MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), - }); -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string name, - const std::shared_ptr jsInvoker) { - // Not implemented yet: provide pure-C++ NativeModules here. - return nullptr; -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string name, - const JavaTurboModule::InitParams ¶ms) { - return MainApplicationModuleProvider(name, params); -} - -bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( - std::string name) { - return getTurboModule(name, nullptr) != nullptr || - getTurboModule(name, {.moduleName = name}) != nullptr; -} - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h deleted file mode 100644 index 7d4b8c7..0000000 --- a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -#include -#include - -namespace facebook { -namespace react { - -class MainApplicationTurboModuleManagerDelegate - : public jni::HybridClass< - MainApplicationTurboModuleManagerDelegate, - TurboModuleManagerDelegate> { - public: - // Adapt it to the package you used for your Java class. - static constexpr auto kJavaDescriptor = - "Lcom/binaryclock/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; - - static jni::local_ref initHybrid(jni::alias_ref); - - static void registerNatives(); - - std::shared_ptr getTurboModule( - const std::string name, - const std::shared_ptr jsInvoker) override; - std::shared_ptr getTurboModule( - const std::string name, - const JavaTurboModule::InitParams ¶ms) override; - - /** - * Test-only method. Allows user to verify whether a TurboModule can be - * created by instances of this class. - */ - bool canCreateTurboModule(std::string name); -}; - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/MainComponentsRegistry.cpp b/android/app/src/main/jni/MainComponentsRegistry.cpp deleted file mode 100644 index 8f7edff..0000000 --- a/android/app/src/main/jni/MainComponentsRegistry.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "MainComponentsRegistry.h" - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} - -std::shared_ptr -MainComponentsRegistry::sharedProviderRegistry() { - auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - - // Custom Fabric Components go here. You can register custom - // components coming from your App or from 3rd party libraries here. - // - // providerRegistry->add(concreteComponentDescriptorProvider< - // AocViewerComponentDescriptor>()); - return providerRegistry; -} - -jni::local_ref -MainComponentsRegistry::initHybrid( - jni::alias_ref, - ComponentFactory *delegate) { - auto instance = makeCxxInstance(delegate); - - auto buildRegistryFunction = - [](EventDispatcher::Weak const &eventDispatcher, - ContextContainer::Shared const &contextContainer) - -> ComponentDescriptorRegistry::Shared { - auto registry = MainComponentsRegistry::sharedProviderRegistry() - ->createComponentDescriptorRegistry( - {eventDispatcher, contextContainer}); - - auto mutableRegistry = - std::const_pointer_cast(registry); - - mutableRegistry->setFallbackComponentDescriptor( - std::make_shared( - ComponentDescriptorParameters{ - eventDispatcher, contextContainer, nullptr})); - - return registry; - }; - - delegate->buildRegistryFunction = buildRegistryFunction; - return instance; -} - -void MainComponentsRegistry::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), - }); -} - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/MainComponentsRegistry.h b/android/app/src/main/jni/MainComponentsRegistry.h deleted file mode 100644 index 5b5c3f8..0000000 --- a/android/app/src/main/jni/MainComponentsRegistry.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -class MainComponentsRegistry - : public facebook::jni::HybridClass { - public: - // Adapt it to the package you used for your Java class. - constexpr static auto kJavaDescriptor = - "Lcom/binaryclock/newarchitecture/components/MainComponentsRegistry;"; - - static void registerNatives(); - - MainComponentsRegistry(ComponentFactory *delegate); - - private: - static std::shared_ptr - sharedProviderRegistry(); - - static jni::local_ref initHybrid( - jni::alias_ref, - ComponentFactory *delegate); -}; - -} // namespace react -} // namespace facebook diff --git a/android/app/src/main/jni/OnLoad.cpp b/android/app/src/main/jni/OnLoad.cpp deleted file mode 100644 index c569b6e..0000000 --- a/android/app/src/main/jni/OnLoad.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainComponentsRegistry.h" - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { - return facebook::jni::initialize(vm, [] { - facebook::react::MainApplicationTurboModuleManagerDelegate:: - registerNatives(); - facebook::react::MainComponentsRegistry::registerNatives(); - }); -} diff --git a/android/app/src/release/java/dev/jhale/binaryclock/ReactNativeFlipper.java b/android/app/src/release/java/dev/jhale/binaryclock/ReactNativeFlipper.java new file mode 100644 index 0000000..e5f4b2a --- /dev/null +++ b/android/app/src/release/java/dev/jhale/binaryclock/ReactNativeFlipper.java @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package dev.jhale.binaryclock; + +import android.content.Context; +import com.facebook.react.ReactInstanceManager; + +/** + * Class responsible of loading Flipper inside your React Native application. This is the release + * flavor of it so it's empty as we don't want to load Flipper. + */ +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + // Do nothing as we don't want to initialize Flipper on Release. + } +} diff --git a/android/build.gradle b/android/build.gradle index 8a1d68f..67d887b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,43 +2,20 @@ buildscript { ext { - buildToolsVersion = "31.0.0" + buildToolsVersion = "33.0.0" minSdkVersion = 21 - compileSdkVersion = 31 - targetSdkVersion = 31 - ndkVersion = "21.4.7075529" + compileSdkVersion = 33 + targetSdkVersion = 33 + + // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. + ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:7.0.4") + classpath("com.android.tools.build:gradle:7.3.1") classpath("com.facebook.react:react-native-gradle-plugin") - classpath("de.undercouch:gradle-download-task:4.1.2") - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -allprojects { - repositories { - maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url("$rootDir/../node_modules/react-native/android") - } - maven { - // Android JSC is installed from npm - url("$rootDir/../node_modules/jsc-android/dist") - } - mavenCentral { - // We don't want to fetch react-native from Maven Central as there are - // older versions over there. - content { - excludeGroup "com.facebook.react" - } - } - google() - maven { url 'https://www.jitpack.io' } } } diff --git a/android/gradle.properties b/android/gradle.properties index 3a7f04d..fe94dc1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -39,6 +39,10 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # are providing them. newArchEnabled=false +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + # These variable values are stored in a password manager. # They have to be manually copied in to create a release build # in order to prevent them from being publicly stored in the diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 7454180f2ae8848c63b8b4dea2cb829da983f2fa..41d9927a4d4fb3f96a785543079b8df6723c946b 100644 GIT binary patch delta 8958 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 delta 8722 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 +#import #import -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; +@interface AppDelegate : RCTAppDelegate @end diff --git a/ios/BinaryClock/AppDelegate.mm b/ios/BinaryClock/AppDelegate.mm index 7d2f64e..40db08b 100644 --- a/ios/BinaryClock/AppDelegate.mm +++ b/ios/BinaryClock/AppDelegate.mm @@ -1,60 +1,17 @@ #import "AppDelegate.h" -#import #import -#import - -#import - -#if RCT_NEW_ARCH_ENABLED -#import -#import -#import -#import -#import -#import - -#import - -@interface AppDelegate () { - RCTTurboModuleManager *_turboModuleManager; - RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; - std::shared_ptr _reactNativeConfig; - facebook::react::ContextContainer::Shared _contextContainer; -} -@end -#endif @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - RCTAppSetupPrepareApp(application); - - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + self.moduleName = @"BinaryClock"; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; -#if RCT_NEW_ARCH_ENABLED - _contextContainer = std::make_shared(); - _reactNativeConfig = std::make_shared(); - _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); - _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; - bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; -#endif - - UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"BinaryClock", nil); - - if (@available(iOS 13.0, *)) { - rootView.backgroundColor = [UIColor systemBackgroundColor]; - } else { - rootView.backgroundColor = [UIColor whiteColor]; - } - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; + return [super application:application didFinishLaunchingWithOptions:launchOptions]; } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge @@ -66,43 +23,14 @@ #endif } -#if RCT_NEW_ARCH_ENABLED - -#pragma mark - RCTCxxBridgeDelegate - -- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled { - _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge - delegate:self - jsInvoker:bridge.jsCallInvoker]; - return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); + return true; } -#pragma mark RCTTurboModuleManagerDelegate - -- (Class)getModuleClassFromName:(const char *)name -{ - return RCTCoreModulesClassProvider(name); -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - jsInvoker:(std::shared_ptr)jsInvoker -{ - return nullptr; -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - initParams: - (const facebook::react::ObjCTurboModule::InitParams &)params -{ - return nullptr; -} - -- (id)getModuleInstanceFromClass:(Class)moduleClass -{ - return RCTAppSetupDefaultModuleFromClass(moduleClass); -} - -#endif - @end diff --git a/ios/BinaryClock/Info.plist b/ios/BinaryClock/Info.plist index c24d0e1..0517cf1 100644 --- a/ios/BinaryClock/Info.plist +++ b/ios/BinaryClock/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS NSAppTransportSecurity diff --git a/ios/Podfile b/ios/Podfile index 4aa2842..fd0c46f 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,8 +1,25 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' -platform :ios, '11.0' -install! 'cocoapods', :deterministic_uuids => false +platform :ios, min_ios_version_supported +prepare_react_native_project! + +# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. +# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded +# +# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` +# ```js +# module.exports = { +# dependencies: { +# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), +# ``` +flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled + +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end target 'BinaryClock' do config = use_native_modules! @@ -12,27 +29,32 @@ target 'BinaryClock' do use_react_native!( :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods + # Hermes is now enabled by default. Disable by setting this flag to false. + # Upcoming versions of React Native may rely on get_default_flags(), but + # we make it explicit here to aid in the React Native upgrade process. :hermes_enabled => flags[:hermes_enabled], :fabric_enabled => flags[:fabric_enabled], + # Enables Flipper. + # + # Note that if you have use_frameworks! enabled, Flipper will not work and + # you should disable the next line. + :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) - target 'BinaryClockTests' do inherit! :complete # Pods for testing end - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable the next line. - use_flipper!() - post_install do |installer| - react_native_post_install(installer) + react_native_post_install( + installer, + # Set `mac_catalyst_enabled` to `true` in order to apply patches + # necessary for Mac Catalyst builds + :mac_catalyst_enabled => false + ) __apply_Xcode_12_5_M1_post_install_workaround(installer) end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7b92967..ece6405 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2,19 +2,19 @@ PODS: - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.68.7) - - FBReactNativeSpec (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.68.7) - - RCTTypeSafety (= 0.68.7) - - React-Core (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) + - FBLazyVector (0.71.7) + - FBReactNativeSpec (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTRequired (= 0.71.7) + - RCTTypeSafety (= 0.71.7) + - React-Core (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) - Flipper-Boost-iOSX (1.76.0.1.11) - - Flipper-DoubleConversion (3.2.0) + - Flipper-DoubleConversion (3.2.0.1) - Flipper-Fmt (7.1.7) - Flipper-Folly (2.6.10): - Flipper-Boost-iOSX @@ -23,7 +23,7 @@ PODS: - Flipper-Glog - libevent (~> 2.1.12) - OpenSSL-Universal (= 1.1.1100) - - Flipper-Glog (0.5.0.4) + - Flipper-Glog (0.5.0.5) - Flipper-PeerTalk (0.0.4) - Flipper-RSocket (1.4.3): - Flipper-Folly (~> 2.6) @@ -73,286 +73,356 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) + - hermes-engine (0.71.7): + - hermes-engine/Pre-built (= 0.71.7) + - hermes-engine/Pre-built (0.71.7) - libevent (2.1.12) - OpenSSL-Universal (1.1.1100) - - RCT-Folly (2021.06.28.00-v2): + - RCT-Folly (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2021.06.28.00-v2) - - RCT-Folly/Default (2021.06.28.00-v2): + - RCT-Folly/Default (= 2021.07.22.00) + - RCT-Folly/Default (2021.07.22.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCTRequired (0.68.7) - - RCTTypeSafety (0.68.7): - - FBLazyVector (= 0.68.7) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.68.7) - - React-Core (= 0.68.7) - - React (0.68.7): - - React-Core (= 0.68.7) - - React-Core/DevSupport (= 0.68.7) - - React-Core/RCTWebSocket (= 0.68.7) - - React-RCTActionSheet (= 0.68.7) - - React-RCTAnimation (= 0.68.7) - - React-RCTBlob (= 0.68.7) - - React-RCTImage (= 0.68.7) - - React-RCTLinking (= 0.68.7) - - React-RCTNetwork (= 0.68.7) - - React-RCTSettings (= 0.68.7) - - React-RCTText (= 0.68.7) - - React-RCTVibration (= 0.68.7) - - React-callinvoker (0.68.7) - - React-Codegen (0.68.7): - - FBReactNativeSpec (= 0.68.7) - - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.68.7) - - RCTTypeSafety (= 0.68.7) - - React-Core (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-Core (0.68.7): + - RCT-Folly/Futures (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - libevent + - RCTRequired (0.71.7) + - RCTTypeSafety (0.71.7): + - FBLazyVector (= 0.71.7) + - RCTRequired (= 0.71.7) + - React-Core (= 0.71.7) + - React (0.71.7): + - React-Core (= 0.71.7) + - React-Core/DevSupport (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-RCTActionSheet (= 0.71.7) + - React-RCTAnimation (= 0.71.7) + - React-RCTBlob (= 0.71.7) + - React-RCTImage (= 0.71.7) + - React-RCTLinking (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - React-RCTSettings (= 0.71.7) + - React-RCTText (= 0.71.7) + - React-RCTVibration (= 0.71.7) + - React-callinvoker (0.71.7) + - React-Codegen (0.71.7): + - FBReactNativeSpec + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-jsiexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.68.7) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/CoreModulesHeaders (0.68.7): + - React-Core/CoreModulesHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/Default (0.68.7): + - React-Core/Default (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/DevSupport (0.68.7): + - React-Core/DevSupport (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.68.7) - - React-Core/RCTWebSocket (= 0.68.7) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-jsinspector (= 0.68.7) - - React-perflogger (= 0.68.7) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTActionSheetHeaders (0.68.7): + - React-Core/RCTActionSheetHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTAnimationHeaders (0.68.7): + - React-Core/RCTAnimationHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTBlobHeaders (0.68.7): + - React-Core/RCTBlobHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTImageHeaders (0.68.7): + - React-Core/RCTImageHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTLinkingHeaders (0.68.7): + - React-Core/RCTLinkingHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTNetworkHeaders (0.68.7): + - React-Core/RCTNetworkHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTSettingsHeaders (0.68.7): + - React-Core/RCTSettingsHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTTextHeaders (0.68.7): + - React-Core/RCTTextHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTVibrationHeaders (0.68.7): + - React-Core/RCTVibrationHeaders (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-Core/RCTWebSocket (0.68.7): + - React-Core/RCTWebSocket (0.71.7): - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.68.7) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsiexecutor (= 0.68.7) - - React-perflogger (= 0.68.7) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Core/Default (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-hermes + - React-jsi (= 0.71.7) + - React-jsiexecutor (= 0.71.7) + - React-perflogger (= 0.71.7) - Yoga - - React-CoreModules (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.68.7) - - React-Codegen (= 0.68.7) - - React-Core/CoreModulesHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - React-RCTImage (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-cxxreact (0.68.7): + - React-CoreModules (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/CoreModulesHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - React-RCTBlob + - React-RCTImage (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-cxxreact (0.71.7): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.68.7) - - React-jsi (= 0.68.7) - - React-jsinspector (= 0.68.7) - - React-logger (= 0.68.7) - - React-perflogger (= 0.68.7) - - React-runtimeexecutor (= 0.68.7) - - React-jsi (0.68.7): - - boost (= 1.76.0) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.7) + - React-jsi (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-runtimeexecutor (= 0.71.7) + - React-hermes (0.71.7): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi/Default (= 0.68.7) - - React-jsi/Default (0.68.7): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.71.7) + - React-jsi + - React-jsiexecutor (= 0.71.7) + - React-jsinspector (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-jsi (0.71.7): - boost (= 1.76.0) - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-jsiexecutor (0.68.7): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-jsiexecutor (0.71.7): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-perflogger (= 0.68.7) - - React-jsinspector (0.68.7) - - React-logger (0.68.7): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-perflogger (= 0.71.7) + - React-jsinspector (0.71.7) + - React-logger (0.71.7): - glog - react-native-keep-awake (4.0.0): - React - - react-native-safe-area-context (3.4.1): + - react-native-safe-area-context (4.5.2): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - ReactCommon/turbomodule/core + - react-native-slider (4.4.2): - React-Core - - react-native-slider (4.4.0): + - React-perflogger (0.71.7) + - React-RCTActionSheet (0.71.7): + - React-Core/RCTActionSheetHeaders (= 0.71.7) + - React-RCTAnimation (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTAnimationHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTAppDelegate (0.71.7): + - RCT-Folly + - RCTRequired + - RCTTypeSafety - React-Core - - React-perflogger (0.68.7) - - React-RCTActionSheet (0.68.7): - - React-Core/RCTActionSheetHeaders (= 0.68.7) - - React-RCTAnimation (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.68.7) - - React-Codegen (= 0.68.7) - - React-Core/RCTAnimationHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTBlob (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - React-Codegen (= 0.68.7) - - React-Core/RCTBlobHeaders (= 0.68.7) - - React-Core/RCTWebSocket (= 0.68.7) - - React-jsi (= 0.68.7) - - React-RCTNetwork (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTImage (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.68.7) - - React-Codegen (= 0.68.7) - - React-Core/RCTImageHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - React-RCTNetwork (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTLinking (0.68.7): - - React-Codegen (= 0.68.7) - - React-Core/RCTLinkingHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTNetwork (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.68.7) - - React-Codegen (= 0.68.7) - - React-Core/RCTNetworkHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTSettings (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.68.7) - - React-Codegen (= 0.68.7) - - React-Core/RCTSettingsHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-RCTText (0.68.7): - - React-Core/RCTTextHeaders (= 0.68.7) - - React-RCTVibration (0.68.7): - - RCT-Folly (= 2021.06.28.00-v2) - - React-Codegen (= 0.68.7) - - React-Core/RCTVibrationHeaders (= 0.68.7) - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (= 0.68.7) - - React-runtimeexecutor (0.68.7): - - React-jsi (= 0.68.7) - - ReactCommon/turbomodule/core (0.68.7): + - ReactCommon/turbomodule/core + - React-RCTBlob (0.71.7): + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.7) + - React-Core/RCTBlobHeaders (= 0.71.7) + - React-Core/RCTWebSocket (= 0.71.7) + - React-jsi (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTImage (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTImageHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - React-RCTNetwork (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTLinking (0.71.7): + - React-Codegen (= 0.71.7) + - React-Core/RCTLinkingHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTNetwork (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTNetworkHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTSettings (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - RCTTypeSafety (= 0.71.7) + - React-Codegen (= 0.71.7) + - React-Core/RCTSettingsHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-RCTText (0.71.7): + - React-Core/RCTTextHeaders (= 0.71.7) + - React-RCTVibration (0.71.7): + - RCT-Folly (= 2021.07.22.00) + - React-Codegen (= 0.71.7) + - React-Core/RCTVibrationHeaders (= 0.71.7) + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/core (= 0.71.7) + - React-runtimeexecutor (0.71.7): + - React-jsi (= 0.71.7) + - ReactCommon/turbomodule/bridging (0.71.7): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.7) + - React-Core (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) + - ReactCommon/turbomodule/core (0.71.7): - DoubleConversion - glog - - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.68.7) - - React-Core (= 0.68.7) - - React-cxxreact (= 0.68.7) - - React-jsi (= 0.68.7) - - React-logger (= 0.68.7) - - React-perflogger (= 0.68.7) + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.7) + - React-Core (= 0.71.7) + - React-cxxreact (= 0.71.7) + - React-jsi (= 0.71.7) + - React-logger (= 0.71.7) + - React-perflogger (= 0.71.7) - RNDefaultPreference (1.4.4): - React-Core - RNScreens (3.20.0): @@ -370,10 +440,10 @@ DEPENDENCIES: - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - Flipper (= 0.125.0) - Flipper-Boost-iOSX (= 1.76.0.1.11) - - Flipper-DoubleConversion (= 3.2.0) + - Flipper-DoubleConversion (= 3.2.0.1) - Flipper-Fmt (= 7.1.7) - Flipper-Folly (= 2.6.10) - - Flipper-Glog (= 0.5.0.4) + - Flipper-Glog (= 0.5.0.5) - Flipper-PeerTalk (= 0.0.4) - Flipper-RSocket (= 1.4.3) - FlipperKit (= 0.125.0) @@ -390,6 +460,8 @@ DEPENDENCIES: - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - libevent (~> 2.1.12) - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) @@ -402,6 +474,7 @@ DEPENDENCIES: - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) @@ -412,6 +485,7 @@ DEPENDENCIES: - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) @@ -454,6 +528,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -472,6 +548,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: @@ -492,6 +570,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" React-RCTImage: @@ -521,55 +601,58 @@ SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 - FBLazyVector: 63b89dc85804d5817261f56dc4cfb43a9b6d57f5 - FBReactNativeSpec: 1fa200a9862d9369a53b6fddbbfcdc22bab24062 + FBLazyVector: a89a0525bc7ca174675045c2b492b5280d5a2470 + FBReactNativeSpec: 7714e6bc1e9ea23df6c4cb42f0b2fd9c6a3a559c Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c - Flipper-DoubleConversion: 3d3d04a078d4f3a1b6c6916587f159dc11f232c4 + Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 - Flipper-Glog: 87bc98ff48de90cb5b0b5114ed3da79d85ee2dd4 + Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 476ee3e89abb49e07f822b48323c51c57124b572 + hermes-engine: 4438d2b8bf8bebaba1b1ac0451160bab59e491f8 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 - RCTRequired: 530916cd48c5f7cf1fc16966ad5ea01638ca4799 - RCTTypeSafety: 5fb4cb3080efd582e5563c3e9a0e459fc51396c5 - React: 097b19fbc7aecb3bd23de54b462d2051d7ca8a38 - React-callinvoker: 4f118545cf884f0d8fce5bcd6e1847147ea9cc05 - React-Codegen: 24e59be16f8ed24b3e49e5ff0738dad91988c760 - React-Core: 0b464d0bec18dde90fa819c4be14dbcbdbf3077f - React-CoreModules: 9bb7d5d5530d474cf8514e2dc8274af82a0bcf2f - React-cxxreact: 027e192b8008ba5c200163ab6ded55d134c839d5 - React-jsi: 9019a0a0b42e9eac6c1e8c251a8dffe65055a2f1 - React-jsiexecutor: 7c0bd030a84f2ec446fb104b7735af2f5ed11eea - React-jsinspector: cab4d37ebde480f84c79ac89568abbf76b916c3e - React-logger: b75b80500ea80457b2cf169427d66de986cdcb29 + RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 + RCTRequired: 5a4a30ac20c86eeadd6844a9328f78d4168cf9b2 + RCTTypeSafety: 279fc5861a89f0f37db3a585f27f971485b4b734 + React: 88307a9be3bd0e71a6822271cf28b84a587fb97f + React-callinvoker: 35fb980c454104ebe82f0afb9826830089248e08 + React-Codegen: a8dbde3b7476d5c19437d2adb9e8ea1b426b9595 + React-Core: 385cb6fa78762c6409ff39faeb0dd9ad664b6e84 + React-CoreModules: c2b7db313b04d9b71954ffd55d0c2e46bc40e9fb + React-cxxreact: 845fefb889132e5d004ff818f7a599e32c52e7d6 + React-hermes: 86135f35e1dd2dfccfb97afe96d0c06f6a3970c4 + React-jsi: 39c116aa6c3d6f3d9874eff6998a670b47882a28 + React-jsiexecutor: eaa5f71eb8f6861cf0e57f1a0f52aeb020d9e18e + React-jsinspector: 9885f6f94d231b95a739ef7bb50536fb87ce7539 + React-logger: 3f8ebad1be1bf3299d1ab6d7f971802d7395c7ef react-native-keep-awake: afad8a51dfef9fe9655a6344771be32c8596d774 - react-native-safe-area-context: 9e40fb181dac02619414ba1294d6c2a807056ab9 - react-native-slider: d2938a12c4e439a227c70eec65d119136eb4aeb5 - React-perflogger: 44436b315d757100a53dfb1ab6b77c58cb646d7d - React-RCTActionSheet: 1888a229684762c40cc96c7ff4716f809655dc09 - React-RCTAnimation: f05da175751867521d14b02ab4d3994a7b96f131 - React-RCTBlob: 792b966e48d599383d7a0753f75e8f2ff71be1ce - React-RCTImage: 065cf66546f625295efd36bce3a1806a9b93399c - React-RCTLinking: 8246290c072bd2d1f336792038d7ec4b91f9847a - React-RCTNetwork: 6b2331c74684fae61b1ef38f4510fe5da3de3f3a - React-RCTSettings: 2898e15b249b085f8b8c7401cfab71983a2d40da - React-RCTText: bd1da1cd805e0765e3ba9089a9fd807d4860a901 - React-RCTVibration: 2a4bf853281d4981ab471509102300d3c9e6c693 - React-runtimeexecutor: 18932e685b4893be88d1efc18f5f8ca1c9cd39d8 - ReactCommon: 29bb6fad3242e30e9d049bc9d592736fa3da9e50 + react-native-safe-area-context: 1d596539b05a78f2b346e954e7c577f6f9be7544 + react-native-slider: 33b8d190b59d4f67a541061bb91775d53d617d9d + React-perflogger: 2d505bbe298e3b7bacdd9e542b15535be07220f6 + React-RCTActionSheet: 0e96e4560bd733c9b37efbf68f5b1a47615892fb + React-RCTAnimation: fd138e26f120371c87e406745a27535e2c8a04ef + React-RCTAppDelegate: 4a9fd1230a98dc3d4382f8a934dc9f50834d8335 + React-RCTBlob: 38a7185f06a0ce8153a023e63b406a28d67b955d + React-RCTImage: 92b0966e7c1cadda889e961c474397ad5180e194 + React-RCTLinking: b80f8d0c6e94c54294b0048def51f57eaa9a27af + React-RCTNetwork: 491b0c65ac22edbd6695d12d084b4943103b009b + React-RCTSettings: 97af3e8abe0023349ec015910df3bda1a0380117 + React-RCTText: 33c85753bd714d527d2ae538dc56ec24c6783d84 + React-RCTVibration: 08f132cad9896458776f37c112e71d60aef1c6ae + React-runtimeexecutor: c5c89f8f543842dd864b63ded1b0bbb9c9445328 + ReactCommon: dbfbe2f7f3c5ce4ce44f43f2fd0d5950d1eb67c5 RNDefaultPreference: 08bdb06cfa9188d5da97d4642dac745218d7fb31 RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 - Yoga: 0bc4b37c3b8a345336ff601e2cf7d9704bab7e93 + Yoga: d56980c8914db0b51692f55533409e844b66133c YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 9daab3ae6e1242feb1a60b914f36ec8bb319acdb +PODFILE CHECKSUM: 6f01b6be0178ecbd565ef988471c8ecb5276e902 COCOAPODS: 1.11.2 diff --git a/package.json b/package.json index f59a42c..0381f7e 100644 --- a/package.json +++ b/package.json @@ -22,36 +22,40 @@ "@react-native-community/slider": "^4.2.2", "@react-navigation/native": "^6.0.8", "@react-navigation/native-stack": "^6.6.2", - "react": "17.0.2", - "react-native": "^0.68.0", + "react": "18.2.0", + "react-native": "^0.71.0", "react-native-default-preference": "^1.4.4", "react-native-keep-awake": "^4.0.0", - "react-native-safe-area-context": "^3.2.0", - "react-native-screens": "^3.13.1", + "react-native-safe-area-context": "^4.4.1", + "react-native-screens": "^3.19.0", "react-native-toast-message": "^2.1.5" }, "devDependencies": { - "@babel/core": "^7.12.9", - "@babel/runtime": "^7.12.5", - "@react-native-community/eslint-config": "^2.0.0", + "@babel/core": "^7.20.0", + "@babel/preset-env": "^7.20.0", + "@babel/runtime": "^7.20.13", + "@react-native-community/eslint-config": "^3.2.0", "@rnx-kit/align-deps": "^2.2.2", "@rnx-kit/babel-preset-metro-react-native": "^1.1.4", "@rnx-kit/cli": "^0.16.8", "@rnx-kit/metro-config": "^1.3.6", "@rnx-kit/metro-resolver-symlinks": "^0.1.28", - "@types/jest": "^26.0.23", + "@tsconfig/react-native": "^2.0.2", + "@types/jest": "^29.2.1", + "@types/react": "^18.0.24", "@types/react-native": "^0.67.3", "@types/react-native-keep-awake": "^2.0.3", - "@types/react-test-renderer": "^17.0.1", + "@types/react-test-renderer": "^18.0.0", "@typescript-eslint/eslint-plugin": "^5.17.0", "@typescript-eslint/parser": "^5.17.0", - "babel-jest": "^26.6.3", - "eslint": "^7.32.0", - "jest": "^26.6.3", - "metro-react-native-babel-preset": "^0.67.0", + "babel-jest": "^29.2.1", + "eslint": "^8.19.0", + "jest": "^29.2.1", + "metro-react-native-babel-preset": "^0.73.7", + "prettier": "^2.4.1", "react-native-svg-app-icon": "^0.6.1", - "react-test-renderer": "17.0.2", - "typescript": "^4.4.4", + "react-test-renderer": "18.2.0", + "typescript": "4.8.4", "yarn-deduplicate": "^6.0.1" }, "resolutions": { @@ -88,7 +92,7 @@ }, "alignDeps": { "requirements": [ - "react-native@0.68" + "react-native@0.71" ], "capabilities": [ "babel-preset-react-native", diff --git a/src/pages/BinaryClockScreen.tsx b/src/pages/BinaryClockScreen.tsx index 76278f0..d7a3575 100644 --- a/src/pages/BinaryClockScreen.tsx +++ b/src/pages/BinaryClockScreen.tsx @@ -4,13 +4,13 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. +import {Pressable, StatusBar, View, useWindowDimensions} from 'react-native'; import React, {useEffect} from 'react'; -import {View, StatusBar, Pressable, useWindowDimensions} from 'react-native'; -import KeepAwake from 'react-native-keep-awake'; +import {useBrightness, useShowHints} from '../utils/BinaryClockSettings'; import BinaryClock from '../components/BinaryClock'; +import KeepAwake from 'react-native-keep-awake'; import Orientation from '../utils/orientation'; -import {useBrightness, useShowHints} from '../utils/BinaryClockSettings'; import Toast from 'react-native-toast-message'; const BinaryClockScreen: React.FC<{ @@ -34,6 +34,7 @@ const BinaryClockScreen: React.FC<{ onLongPress={() => navigation.navigate('BinaryClockSettingsScreen')}>