diff --git a/.github/workflows/tv-os-build-test.yml b/.github/workflows/tv-os-build-test.yml index e598de968..f6aee66ac 100644 --- a/.github/workflows/tv-os-build-test.yml +++ b/.github/workflows/tv-os-build-test.yml @@ -16,7 +16,7 @@ on: workflow_dispatch: jobs: build: - runs-on: macos-12 + runs-on: macos-14 timeout-minutes: 60 env: WORKING_DIRECTORY: TVOSExample @@ -40,4 +40,4 @@ jobs: run: pod install - name: Build app working-directory: ${{ env.WORKING_DIRECTORY }} - run: yarn tv-os + run: npx react-native run-ios --scheme="TVOSExample-tvOS" --simulator="Apple TV" diff --git a/TVOSExample/.buckconfig b/TVOSExample/.buckconfig deleted file mode 100644 index 934256cb2..000000000 --- a/TVOSExample/.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/TVOSExample/.bundle/config b/TVOSExample/.bundle/config new file mode 100644 index 000000000..848943bb5 --- /dev/null +++ b/TVOSExample/.bundle/config @@ -0,0 +1,2 @@ +BUNDLE_PATH: "vendor/bundle" +BUNDLE_FORCE_RUBY_PLATFORM: 1 diff --git a/TVOSExample/.editorconfig b/TVOSExample/.editorconfig deleted file mode 100644 index 7c286132f..000000000 --- a/TVOSExample/.editorconfig +++ /dev/null @@ -1,3 +0,0 @@ -# Windows files -[*.bat] -end_of_line = crlf diff --git a/TVOSExample/.eslintrc.js b/TVOSExample/.eslintrc.js index 40c6dcd05..187894b6a 100644 --- a/TVOSExample/.eslintrc.js +++ b/TVOSExample/.eslintrc.js @@ -1,4 +1,4 @@ module.exports = { root: true, - extends: '@react-native-community', + extends: '@react-native', }; diff --git a/TVOSExample/.flowconfig b/TVOSExample/.flowconfig deleted file mode 100644 index 315f2747b..000000000 --- a/TVOSExample/.flowconfig +++ /dev/null @@ -1,66 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore polyfills -node_modules/react-native/Libraries/polyfills/.* - -; Flow doesn't support platforms -.*/Libraries/Utilities/LoadingView.js - -[untyped] -.*/node_modules/@react-native-community/cli/.*/.* - -[include] - -[libs] -node_modules/react-native/interface.js -node_modules/react-native/flow/ - -[options] -emoji=true - -esproposal.optional_chaining=enable -esproposal.nullish_coalescing=enable - -exact_by_default=true - -module.file_ext=.js -module.file_ext=.json -module.file_ext=.ios.js - -munge_underscores=true - -module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' -module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -[lints] -sketchy-null-number=warn -sketchy-null-mixed=warn -sketchy-number=warn -untyped-type-import=warn -nonstrict-import=warn -deprecated-type=warn -unsafe-getters-setters=warn -unnecessary-invariant=warn -signature-verification-failure=warn - -[strict] -deprecated-type -nonstrict-import -sketchy-null -unclear-type -unsafe-getters-setters -untyped-import -untyped-type-import - -[version] -^0.137.0 diff --git a/TVOSExample/.gitattributes b/TVOSExample/.gitattributes deleted file mode 100644 index 45a3dcb2a..000000000 --- a/TVOSExample/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -# Windows files should use crlf line endings -# https://help.github.com/articles/dealing-with-line-endings/ -*.bat text eol=crlf diff --git a/TVOSExample/.gitignore b/TVOSExample/.gitignore index ad572e632..13843f2cd 100644 --- a/TVOSExample/.gitignore +++ b/TVOSExample/.gitignore @@ -20,6 +20,7 @@ DerivedData *.hmap *.ipa *.xcuserstate +**/.xcode.env.local # Android/IntelliJ # @@ -28,6 +29,10 @@ build/ .gradle local.properties *.iml +*.hprof +.cxx/ +*.keystore +!debug.keystore # node.js # @@ -35,12 +40,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 @@ -48,12 +47,31 @@ 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 -# CocoaPods -/ios/Pods/ +# Ruby / CocoaPods +**/Pods/ +/vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* + +# Expo +.expo + +# testing +/coverage + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/TVOSExample/.prettierrc.js b/TVOSExample/.prettierrc.js index 84196d95f..50bff15e6 100644 --- a/TVOSExample/.prettierrc.js +++ b/TVOSExample/.prettierrc.js @@ -1,7 +1,6 @@ module.exports = { - bracketSpacing: false, - jsxBracketSameLine: true, - singleQuote: true, - trailingComma: 'all', arrowParens: 'avoid', + bracketSameLine: true, + singleQuote: true, + jsxBracketSameLine: true, }; diff --git a/TVOSExample/.watchmanconfig b/TVOSExample/.watchmanconfig index 9e26dfeeb..311847daa 100644 --- a/TVOSExample/.watchmanconfig +++ b/TVOSExample/.watchmanconfig @@ -1 +1,2 @@ -{} \ No newline at end of file +{} + diff --git a/TVOSExample/App.tsx b/TVOSExample/App.tsx index 5a819c255..f408f2e79 100644 --- a/TVOSExample/App.tsx +++ b/TVOSExample/App.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import 'react-native/tvos-types.d'; -import {NavigationContainer} from '@react-navigation/native'; -import {createNativeStackNavigator} from '@react-navigation/native-stack'; +import { NavigationContainer } from '@react-navigation/native'; +import { createNativeStackNavigator } from '@react-navigation/native-stack'; import HomeScreen from './src/HomeScreen'; import BottomTabsExample from './src/BottomTabsExample'; import ModalsExample from './src/ModalsExample'; @@ -16,7 +15,7 @@ export default function App() { diff --git a/TVOSExample/Gemfile b/TVOSExample/Gemfile new file mode 100644 index 000000000..8d72c37a8 --- /dev/null +++ b/TVOSExample/Gemfile @@ -0,0 +1,9 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Cocoapods 1.15 introduced a bug which break the build. We will remove the upper +# bound in the template on Cocoapods with next React Native release. +gem 'cocoapods', '>= 1.13', '< 1.15' +gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' diff --git a/TVOSExample/__tests__/App-test.js b/TVOSExample/__tests__/App.test.tsx similarity index 73% rename from TVOSExample/__tests__/App-test.js rename to TVOSExample/__tests__/App.test.tsx index 178476699..9eac6fbc8 100644 --- a/TVOSExample/__tests__/App-test.js +++ b/TVOSExample/__tests__/App.test.tsx @@ -6,6 +6,9 @@ import 'react-native'; import React from 'react'; import App from '../App'; +// Note: import explicitly to use the types shipped with jest. +import {it} from '@jest/globals'; + // Note: test renderer must be required after react-native. import renderer from 'react-test-renderer'; diff --git a/TVOSExample/android/app/BUCK b/TVOSExample/android/app/BUCK deleted file mode 100644 index ebc3118a9..000000000 --- a/TVOSExample/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 = "com.tvosexample", -) - -android_resource( - name = "res", - package = "com.tvosexample", - 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/TVOSExample/android/app/build.gradle b/TVOSExample/android/app/build.gradle index 6c62e7cb7..5971245d5 100644 --- a/TVOSExample/android/app/build.gradle +++ b/TVOSExample/android/app/build.gradle @@ -1,135 +1,80 @@ apply plugin: "com.android.application" - -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: [] - * ] - */ - -project.ext.react = [ - enableHermes: false, // clean and rebuild if changing -] - -apply from: "../../node_modules/react-native/react.gradle" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" /** - * 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. + * 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. */ -def enableSeparateBuildPerCPUArchitecture = false +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"] +} /** - * 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 mirrored 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); - android { ndkVersion rootProject.ext.ndkVersion + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion - compileSdkVersion rootProject.ext.compileSdkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - + namespace "com.tvosexample" defaultConfig { applicationId "com.tvosexample" minSdkVersion rootProject.ext.minSdkVersion @@ -137,14 +82,6 @@ android { versionCode 1 versionName "1.0" } - splits { - abi { - reset() - enable enableSeparateBuildPerCPUArchitecture - universalApk false // If true, also generate a universal APK - include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" - } - } signingConfigs { debug { storeFile file('debug.keystore') @@ -165,58 +102,20 @@ android { proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } - - // applicationVariants are e.g. debug, release - applicationVariants.all { variant -> - variant.outputs.each { output -> - // For each separate APK per architecture, set a unique version code as described here: - // https://developer.android.com/studio/build/configure-apk-splits.html - // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. - def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] - def abi = output.getFilter(OutputFile.ABI) - if (abi != null) { // null for the universal-debug, universal-release variants - output.versionCodeOverride = - defaultConfig.versionCode * 1000 + versionCodes.get(abi) - } - - } - } } dependencies { - implementation fileTree(dir: "libs", include: ["*.jar"]) - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" // From node_modules - - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } + // The version of react-native is set by the React Native Gradle Plugin + // For the TV repo, + // we use the io.github.react-native-tvos group for the react-android and hermes-android dependencies - 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' - } + implementation("io.github.react-native-tvos:react-android") - if (enableHermes) { - def hermesPath = "../../node_modules/hermes-engine/android/"; - debugImplementation files(hermesPath + "hermes-debug.aar") - releaseImplementation files(hermesPath + "hermes-release.aar") + if (hermesEnabled.toBoolean()) { + implementation("io.github.react-native-tvos:hermes-android") } else { implementation jscFlavor } } -// 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.compile - into 'libs' -} - apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/TVOSExample/android/app/build_defs.bzl b/TVOSExample/android/app/build_defs.bzl deleted file mode 100644 index fff270f8d..000000000 --- a/TVOSExample/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/TVOSExample/android/app/src/debug/AndroidManifest.xml b/TVOSExample/android/app/src/debug/AndroidManifest.xml index b2f3ad9fc..eb98c01af 100644 --- a/TVOSExample/android/app/src/debug/AndroidManifest.xml +++ b/TVOSExample/android/app/src/debug/AndroidManifest.xml @@ -2,12 +2,8 @@ - - - - + tools:ignore="GoogleAppIndexingWarning"/> diff --git a/TVOSExample/android/app/src/debug/java/com/tvosexample/ReactNativeFlipper.java b/TVOSExample/android/app/src/debug/java/com/tvosexample/ReactNativeFlipper.java deleted file mode 100644 index 97f67ebfa..000000000 --- a/TVOSExample/android/app/src/debug/java/com/tvosexample/ReactNativeFlipper.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - *

This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - */ -package com.tvosexample; - -import android.content.Context; -import com.facebook.flipper.android.AndroidFlipperClient; -import com.facebook.flipper.android.utils.FlipperUtils; -import com.facebook.flipper.core.FlipperClient; -import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; -import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; -import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; -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.ReactInstanceManager; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.modules.network.NetworkingModule; -import okhttp3.OkHttpClient; - -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()); - - 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(); - - // 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 ReactInstanceManager.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/TVOSExample/android/app/src/main/AndroidManifest.xml b/TVOSExample/android/app/src/main/AndroidManifest.xml index 2097e9abe..712561cbb 100644 --- a/TVOSExample/android/app/src/main/AndroidManifest.xml +++ b/TVOSExample/android/app/src/main/AndroidManifest.xml @@ -1,11 +1,15 @@ - + + + android:windowSoftInputMode="adjustResize" + android:exported="true"> + + diff --git a/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.java b/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.java deleted file mode 100644 index 70b6d4ccd..000000000 --- a/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.tvosexample; - -import com.facebook.react.ReactActivity; - -public class MainActivity extends ReactActivity { - - /** - * Returns the name of the main component registered from JavaScript. This is used to schedule - * rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "TVOSExample"; - } -} diff --git a/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.kt b/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.kt new file mode 100644 index 000000000..600f5b499 --- /dev/null +++ b/TVOSExample/android/app/src/main/java/com/tvosexample/MainActivity.kt @@ -0,0 +1,22 @@ +package com.tvosexample + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "TVOSExample" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) +} diff --git a/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.java b/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.java deleted file mode 100644 index 311e21318..000000000 --- a/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.tvosexample; - -import android.app.Application; -import android.content.Context; -import com.facebook.react.PackageList; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.soloader.SoLoader; -import java.lang.reflect.InvocationTargetException; -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - 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; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } - - @Override - public void onCreate() { - super.onCreate(null); - SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - } - - /** - * 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("com.tvosexample.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(); - } - } - } -} diff --git a/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.kt b/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.kt new file mode 100644 index 000000000..627e02003 --- /dev/null +++ b/TVOSExample/android/app/src/main/java/com/tvosexample/MainApplication.kt @@ -0,0 +1,43 @@ +package com.tvosexample + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.soloader.SoLoader + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = + object : DefaultReactNativeHost(this) { + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } + + override fun getJSMainModuleName(): String = "index" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + + override val reactHost: ReactHost + get() = getDefaultReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, false) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + } +} diff --git a/TVOSExample/android/app/src/main/res/drawable/rn_edit_text_material.xml b/TVOSExample/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 000000000..5c25e728e --- /dev/null +++ b/TVOSExample/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/TVOSExample/android/app/src/main/res/drawable/tv_banner.png b/TVOSExample/android/app/src/main/res/drawable/tv_banner.png new file mode 100644 index 000000000..35080c180 Binary files /dev/null and b/TVOSExample/android/app/src/main/res/drawable/tv_banner.png differ diff --git a/TVOSExample/android/app/src/main/res/values/styles.xml b/TVOSExample/android/app/src/main/res/values/styles.xml index 9fab0be74..7ba83a2ad 100644 --- a/TVOSExample/android/app/src/main/res/values/styles.xml +++ b/TVOSExample/android/app/src/main/res/values/styles.xml @@ -3,7 +3,7 @@ diff --git a/TVOSExample/android/build.gradle b/TVOSExample/android/build.gradle index c7dedb647..f536a7920 100644 --- a/TVOSExample/android/build.gradle +++ b/TVOSExample/android/build.gradle @@ -1,40 +1,21 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { ext { - buildToolsVersion = "29.0.3" - minSdkVersion = 21 - compileSdkVersion = 29 - targetSdkVersion = 29 - ndkVersion = "20.1.5948944" + buildToolsVersion = "34.0.0" + minSdkVersion = 23 + compileSdkVersion = 34 + targetSdkVersion = 34 + ndkVersion = "26.1.10909125" + kotlinVersion = "1.9.22" } repositories { google() - jcenter() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:4.1.0") - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") } } -allprojects { - repositories { - mavenLocal() - 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") - } - - google() - jcenter() - mavenCentral() - maven { url 'https://www.jitpack.io' } - } -} +apply plugin: "com.facebook.react.rootproject" diff --git a/TVOSExample/android/gradle.properties b/TVOSExample/android/gradle.properties index 2b0e2126c..0d70f5169 100644 --- a/TVOSExample/android/gradle.properties +++ b/TVOSExample/android/gradle.properties @@ -9,8 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx10248m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit @@ -24,7 +24,20 @@ android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true -# Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.75.1 +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# 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 isScreensExampleApp=true diff --git a/TVOSExample/android/gradle/wrapper/gradle-wrapper.jar b/TVOSExample/android/gradle/wrapper/gradle-wrapper.jar index e708b1c02..7f93135c4 100644 Binary files a/TVOSExample/android/gradle/wrapper/gradle-wrapper.jar and b/TVOSExample/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/TVOSExample/android/gradle/wrapper/gradle-wrapper.properties b/TVOSExample/android/gradle/wrapper/gradle-wrapper.properties index 14e30f741..2ea3535dc 100644 --- a/TVOSExample/android/gradle/wrapper/gradle-wrapper.properties +++ b/TVOSExample/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/TVOSExample/android/gradlew b/TVOSExample/android/gradlew index 4f906e0c8..1aa94a426 100755 --- a/TVOSExample/android/gradlew +++ b/TVOSExample/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,99 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +119,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,88 +130,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/TVOSExample/android/gradlew.bat b/TVOSExample/android/gradlew.bat index 107acd32c..25da30dbd 100644 --- a/TVOSExample/android/gradlew.bat +++ b/TVOSExample/android/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +41,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/TVOSExample/android/settings.gradle b/TVOSExample/android/settings.gradle index e06eb9b0d..58f697282 100644 --- a/TVOSExample/android/settings.gradle +++ b/TVOSExample/android/settings.gradle @@ -1,7 +1,4 @@ rootProject.name = 'TVOSExample' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) - -include ':react-native-screens' -project(':react-native-screens').projectDir = new File(rootProject.projectDir, '../../android') - -include ':app' \ No newline at end of file +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/TVOSExample/app.json b/TVOSExample/app.json index 56888e827..dc0085024 100644 --- a/TVOSExample/app.json +++ b/TVOSExample/app.json @@ -1,4 +1,4 @@ { "name": "TVOSExample", "displayName": "TVOSExample" -} \ No newline at end of file +} diff --git a/TVOSExample/babel.config.js b/TVOSExample/babel.config.js index 5fe62b3c5..f7b3da3b3 100644 --- a/TVOSExample/babel.config.js +++ b/TVOSExample/babel.config.js @@ -1,4 +1,3 @@ module.exports = { - presets: ['module:metro-react-native-babel-preset'], - plugins: [], + presets: ['module:@react-native/babel-preset'], }; diff --git a/TVOSExample/ios/.xcode.env b/TVOSExample/ios/.xcode.env new file mode 100644 index 000000000..3d5782c71 --- /dev/null +++ b/TVOSExample/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/TVOSExample/ios/Podfile b/TVOSExample/ios/Podfile index 58c5d673a..52aa74929 100644 --- a/TVOSExample/ios/Podfile +++ b/TVOSExample/ios/Podfile @@ -1,40 +1,47 @@ -require_relative '../node_modules/react-native/scripts/react_native_pods' -require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' - source 'https://github.com/react-native-tvos/react-native-tvos-podspecs.git' source 'https://cdn.cocoapods.org/' -target 'TVOSExample' do - - platform :ios, '12.0' +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip - config = use_native_modules! - - use_react_native!( - :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods - :hermes_enabled => false - ) - - # pod 'RNScreens', :path => '../../' - - target 'TVOSExampleTests' do - inherit! :complete - # Pods for testing - end +prepare_react_native_project! +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 'TVOSExample-tvOS' do - - platform :tvos, '12.0' +# target 'TVOSExample' do +# config = use_native_modules! +# platform :ios, min_ios_version_supported +# +# use_react_native!( +# :path => config[:reactNativePath], +# # An absolute path to your application root. +# :app_path => "#{Pod::Config.instance.installation_root}/.." +# ) +# +# target 'TVOSExampleTests' do +# inherit! :complete +# # Pods for testing +# end +# +# end +target 'TVOSExample-tvOS' do config = use_native_modules! + platform :tvos, min_ios_version_supported - # Hermes not yet available on tvOS - use_react_native!(:path => config["reactNativePath"]) - - # pod 'RNScreens', :path => '../../' + use_react_native!( + :path => config[:reactNativePath], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) target 'TVOSExample-tvOSTests' do inherit! :complete @@ -44,5 +51,11 @@ target 'TVOSExample-tvOS' do end post_install do |installer| - flipper_post_install(installer) + # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 + config = use_native_modules! + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false + ) end diff --git a/TVOSExample/ios/Podfile.lock b/TVOSExample/ios/Podfile.lock index e7257cfdc..cdd6ba08f 100644 --- a/TVOSExample/ios/Podfile.lock +++ b/TVOSExample/ios/Podfile.lock @@ -1,372 +1,1366 @@ PODS: - - boost-for-react-native (1.63.0) + - boost (1.83.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.64.2-2) - - FBReactNativeSpec (0.64.2-2): - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.2-2) - - RCTTypeSafety (= 0.64.2-2) - - React-Core (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) + - FBLazyVector (0.74.1-0) + - fmt (9.1.0) - glog (0.3.5) - - RCT-Folly (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog - - RCT-Folly/Default (= 2020.01.13.00) - - RCT-Folly/Default (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog - - RCTRequired (0.64.2-2) - - RCTTypeSafety (0.64.2-2): - - FBLazyVector (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.2-2) - - React-Core (= 0.64.2-2) - - React (0.64.2-2): - - React-Core (= 0.64.2-2) - - React-Core/DevSupport (= 0.64.2-2) - - React-Core/RCTWebSocket (= 0.64.2-2) - - React-RCTAnimation (= 0.64.2-2) - - React-RCTBlob (= 0.64.2-2) - - React-RCTImage (= 0.64.2-2) - - React-RCTLinking (= 0.64.2-2) - - React-RCTNetwork (= 0.64.2-2) - - React-RCTSettings (= 0.64.2-2) - - React-RCTText (= 0.64.2-2) - - React-callinvoker (0.64.2-2) - - React-Core (0.64.2-2): - - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.2-2) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - hermes-engine (0.74.1-0): + - hermes-engine/Pre-built (= 0.74.1-0) + - hermes-engine/Pre-built (0.74.1-0) + - RCT-Folly (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCTDeprecation (0.74.1-0) + - RCTRequired (0.74.1-0) + - RCTTypeSafety (0.74.1-0): + - FBLazyVector (= 0.74.1-0) + - RCTRequired (= 0.74.1-0) + - React-Core (= 0.74.1-0) + - React (0.74.1-0): + - React-Core (= 0.74.1-0) + - React-Core/DevSupport (= 0.74.1-0) + - React-Core/RCTWebSocket (= 0.74.1-0) + - React-RCTActionSheet (= 0.74.1-0) + - React-RCTAnimation (= 0.74.1-0) + - React-RCTBlob (= 0.74.1-0) + - React-RCTImage (= 0.74.1-0) + - React-RCTLinking (= 0.74.1-0) + - React-RCTNetwork (= 0.74.1-0) + - React-RCTSettings (= 0.74.1-0) + - React-RCTText (= 0.74.1-0) + - React-callinvoker (0.74.1-0) + - React-Codegen (0.74.1-0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.1-0) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/CoreModulesHeaders (0.64.2-2): + - React-Core/CoreModulesHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/Default (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/Default (0.64.2-2): + - React-Core/DevSupport (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.1-0) + - React-Core/RCTWebSocket (= 0.74.1-0) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/DevSupport (0.64.2-2): - - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.2-2) - - React-Core/RCTWebSocket (= 0.64.2-2) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-jsinspector (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-Core/RCTActionSheetHeaders (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTAnimationHeaders (0.64.2-2): + - React-Core/RCTAnimationHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTBlobHeaders (0.64.2-2): + - React-Core/RCTBlobHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTImageHeaders (0.64.2-2): + - React-Core/RCTImageHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTLinkingHeaders (0.64.2-2): + - React-Core/RCTLinkingHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTNetworkHeaders (0.64.2-2): + - React-Core/RCTNetworkHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTSettingsHeaders (0.64.2-2): + - React-Core/RCTSettingsHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTTextHeaders (0.64.2-2): + - React-Core/RCTTextHeaders (0.74.1-0): - glog - - RCT-Folly (= 2020.01.13.00) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation - React-Core/Default - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-Core/RCTWebSocket (0.64.2-2): - - glog - - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.2-2) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsiexecutor (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) + - React-Core/RCTWebSocket (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.1-0) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) - Yoga - - React-CoreModules (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.2-2) - - React-Core/CoreModulesHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-RCTImage (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-cxxreact (0.64.2-2): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-jsinspector (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) - - React-runtimeexecutor (= 0.64.2-2) - - React-jsi (0.64.2-2): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsi/Default (= 0.64.2-2) - - React-jsi/Default (0.64.2-2): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - glog - - RCT-Folly (= 2020.01.13.00) - - React-jsiexecutor (0.64.2-2): - - DoubleConversion - - glog - - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) - - React-jsinspector (0.64.2-2) - - react-native-appearance (0.3.4): - - React - - react-native-safe-area-context (4.5.0): - - RCT-Folly + - React-CoreModules (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.74.1-0) + - React-Codegen + - React-Core/CoreModulesHeaders (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-jsinspector + - React-NativeModulesApple + - React-RCTBlob + - React-RCTImage (= 0.74.1-0) + - ReactCommon + - SocketRocket (= 0.7.0) + - React-cxxreact (0.74.1-0): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.1-0) + - React-debug (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-jsinspector + - React-logger (= 0.74.1-0) + - React-perflogger (= 0.74.1-0) + - React-runtimeexecutor (= 0.74.1-0) + - React-debug (0.74.1-0) + - React-Fabric (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.74.1-0) + - React-Fabric/attributedstring (= 0.74.1-0) + - React-Fabric/componentregistry (= 0.74.1-0) + - React-Fabric/componentregistrynative (= 0.74.1-0) + - React-Fabric/components (= 0.74.1-0) + - React-Fabric/core (= 0.74.1-0) + - React-Fabric/imagemanager (= 0.74.1-0) + - React-Fabric/leakchecker (= 0.74.1-0) + - React-Fabric/mounting (= 0.74.1-0) + - React-Fabric/scheduler (= 0.74.1-0) + - React-Fabric/telemetry (= 0.74.1-0) + - React-Fabric/templateprocessor (= 0.74.1-0) + - React-Fabric/textlayoutmanager (= 0.74.1-0) + - React-Fabric/uimanager (= 0.74.1-0) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils - ReactCommon/turbomodule/core - - react-native-webview (11.26.1): - - React-Core - - React-perflogger (0.64.2-2) - - React-RCTAnimation (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.2-2) - - React-Core/RCTAnimationHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTBlob (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.64.2-2) - - React-Core/RCTWebSocket (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-RCTNetwork (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTImage (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.2-2) - - React-Core/RCTImageHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-RCTNetwork (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTLinking (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - React-Core/RCTLinkingHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTNetwork (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.2-2) - - React-Core/RCTNetworkHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTSettings (0.64.2-2): - - FBReactNativeSpec (= 0.64.2-2) - - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.2-2) - - React-Core/RCTSettingsHeaders (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (= 0.64.2-2) - - React-RCTText (0.64.2-2): - - React-Core/RCTTextHeaders (= 0.64.2-2) - - React-runtimeexecutor (0.64.2-2): - - React-jsi (= 0.64.2-2) - - ReactCommon/turbomodule/core (0.64.2-2): - - DoubleConversion - - glog - - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.2-2) - - React-Core (= 0.64.2-2) - - React-cxxreact (= 0.64.2-2) - - React-jsi (= 0.64.2-2) - - React-perflogger (= 0.64.2-2) - - RNCMaskedView (0.1.11): - - React - - RNGestureHandler (1.10.3): - - React-Core - - RNReanimated (2.14.4): - - DoubleConversion - - FBLazyVector - - FBReactNativeSpec + - React-Fabric/animations (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) - glog - - RCT-Folly + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/inputaccessory (= 0.74.1-0) + - React-Fabric/components/legacyviewmanagerinterop (= 0.74.1-0) + - React-Fabric/components/modal (= 0.74.1-0) + - React-Fabric/components/rncore (= 0.74.1-0) + - React-Fabric/components/root (= 0.74.1-0) + - React-Fabric/components/safeareaview (= 0.74.1-0) + - React-Fabric/components/scrollview (= 0.74.1-0) + - React-Fabric/components/text (= 0.74.1-0) + - React-Fabric/components/textinput (= 0.74.1-0) + - React-Fabric/components/unimplementedview (= 0.74.1-0) + - React-Fabric/components/view (= 0.74.1-0) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/inputaccessory (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/modal (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/rncore (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/safeareaview (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/text (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/textinput (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/unimplementedview (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/core (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/textlayoutmanager (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricImage (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.74.1-0) + - RCTTypeSafety (= 0.74.1-0) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.74.1-0) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.74.1-0) + - React-graphics (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core/Default (= 0.74.1-0) + - React-utils + - React-hermes (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.1-0) + - React-jsi + - React-jsiexecutor (= 0.74.1-0) + - React-jsinspector + - React-perflogger (= 0.74.1-0) + - React-runtimeexecutor + - React-ImageManager (0.74.1-0): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.74.1-0): + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-debug + - React-jsi + - React-Mapbuffer + - React-jsi (0.74.1-0): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-jsinspector + - React-perflogger (= 0.74.1-0) + - React-jsinspector (0.74.1-0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.74.1-0) + - React-jsitracing (0.74.1-0): + - React-jsi + - React-logger (0.74.1-0): + - glog + - React-Mapbuffer (0.74.1-0): + - glog + - React-debug + - react-native-restart (0.0.27): + - React-Core + - react-native-safe-area-context (4.10.1): + - React-Core + - React-nativeconfig (0.74.1-0) + - React-NativeModulesApple (0.74.1-0): + - glog + - hermes-engine - React-callinvoker - React-Core - - React-Core/DevSupport + - React-cxxreact + - React-jsi + - React-jsinspector + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-perflogger (0.74.1-0) + - React-RCTActionSheet (0.74.1-0): + - React-Core/RCTActionSheetHeaders (= 0.74.1-0) + - React-RCTAnimation (0.74.1-0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTAppDelegate (0.74.1-0): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-CoreModules + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-nativeconfig + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - ReactCommon + - React-RCTBlob (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-Codegen + - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsinspector + - React-nativeconfig + - React-RCTImage + - React-RCTText + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTImage (0.74.1-0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.74.1-0): + - React-Codegen + - React-Core/RCTLinkingHeaders (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-NativeModulesApple + - ReactCommon + - ReactCommon/turbomodule/core (= 0.74.1-0) + - React-RCTNetwork (0.74.1-0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTSettings (0.74.1-0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTText (0.74.1-0): + - React-Core/RCTTextHeaders (= 0.74.1-0) + - Yoga + - React-rendererdebug (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-rncore (0.74.1-0) + - React-RuntimeApple (0.74.1-0): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-callinvoker + - React-Core/Default - React-CoreModules - React-cxxreact + - React-jserrorhandler - React-jsi - React-jsiexecutor - React-jsinspector - - React-RCTAnimation - - React-RCTBlob + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-utils + - React-RuntimeCore (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - React-runtimeexecutor (0.74.1-0): + - React-jsi (= 0.74.1-0) + - React-RuntimeHermes (0.74.1-0): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsitracing + - React-nativeconfig + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - React-rendererdebug + - React-runtimeexecutor + - React-utils + - React-utils (0.74.1-0): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-jsi (= 0.74.1-0) + - ReactCommon (0.74.1-0): + - ReactCommon/turbomodule (= 0.74.1-0) + - ReactCommon/turbomodule (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.1-0) + - React-cxxreact (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-logger (= 0.74.1-0) + - React-perflogger (= 0.74.1-0) + - ReactCommon/turbomodule/bridging (= 0.74.1-0) + - ReactCommon/turbomodule/core (= 0.74.1-0) + - ReactCommon/turbomodule/bridging (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.1-0) + - React-cxxreact (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-logger (= 0.74.1-0) + - React-perflogger (= 0.74.1-0) + - ReactCommon/turbomodule/core (0.74.1-0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.1-0) + - React-cxxreact (= 0.74.1-0) + - React-debug (= 0.74.1-0) + - React-jsi (= 0.74.1-0) + - React-logger (= 0.74.1-0) + - React-perflogger (= 0.74.1-0) + - React-utils (= 0.74.1-0) + - RNGestureHandler (2.16.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated (3.11.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.31.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric - React-RCTImage - - React-RCTLinking - - React-RCTNetwork - - React-RCTSettings - - React-RCTText + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNVectorIcons (7.1.0): - - React - - Yoga (1.14.0) + - RNVectorIcons (8.1.0): + - React-Core + - SocketRocket (0.7.0) + - Yoga (0.0.0) DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - - React-Core/DevSupport (from `../node_modules/react-native/`) - 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-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - 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`) - - react-native-appearance (from `../node_modules/react-native-appearance`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - react-native-restart (from `../node_modules/react-native-restart`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - react-native-webview (from `../node_modules/react-native-webview`) + - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) + - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - 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-RCTFabric (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) + - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: - - boost-for-react-native + - SocketRocket EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2024-05-04-RNv0.74.1-8a6d0a654e022aaf283ef33b08b9ea113ee29695 RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../node_modules/react-native/Libraries/Required" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-debug: + :path: "../node_modules/react-native/ReactCommon/react/debug" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" - react-native-appearance: - :path: "../node_modules/react-native-appearance" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + react-native-restart: + :path: "../node_modules/react-native-restart" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" - react-native-webview: - :path: "../node_modules/react-native-webview" + React-nativeconfig: + :path: "../node_modules/react-native/ReactCommon" + React-NativeModulesApple: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :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-RCTFabric: + :path: "../node_modules/react-native/React" React-RCTImage: :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: @@ -377,57 +1371,97 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Settings" React-RCTText: :path: "../node_modules/react-native/Libraries/Text" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" + React-rncore: + :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimeexecutor: :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimescheduler: + :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-utils: + :path: "../node_modules/react-native/ReactCommon/react/utils" ReactCommon: :path: "../node_modules/react-native/ReactCommon" - RNCMaskedView: - :path: "../node_modules/@react-native-community/masked-view" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" RNReanimated: :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 7fd7485ebdd1572a8faf2a24509ed2c37f8db77f - FBReactNativeSpec: d249a47a226f312f1ac6752a644c0f6a8fd0325f - glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c - RCTRequired: 587385d66e6bbb5632ade820568adf71edb60545 - RCTTypeSafety: 6500c28dcf018ee73a49d64e97c68e4ba2444abc - React: 5955ef5604d8e0f9b718cfe784a7cbdd584fb46d - React-callinvoker: 5eb1965c9c77e746019a3b4a3222c94c85cc5fa3 - React-Core: 47ae61d071eecad4a92a4e702758668174188f9b - React-CoreModules: 2dfa6119229f8aa21680261ed33dcf720a313936 - React-cxxreact: 7de85b2a79a8ba684aefef59bc0baed66e889c92 - React-jsi: a9cfd61ea63646230601c893424090a442bd2c25 - React-jsiexecutor: 74dd9b564b4f87f7835ebe729f23bb97d281bee1 - React-jsinspector: f49fa9d09ea327d0f0bdd268fd0925db58d19951 - react-native-appearance: 0f0e5fc2fcef70e03d48c8fe6b00b9158c2ba8aa - react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc - react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1 - React-perflogger: 2f5ca2592cb8c2dce248f171c9193abad44ad08d - React-RCTAnimation: fcecb04903a27253a40c5df81b142f2a82c37380 - React-RCTBlob: 2af9d951f742821632f53964c77a8d98f0a2be37 - React-RCTImage: a2ab40a8a666fa6079e04220dd5bd02bb6e3c8b0 - React-RCTLinking: 9dc74a85428942d2904c956c3c1d8fc774ddd8e6 - React-RCTNetwork: dc3f691a5fdf2fcc718647e526d60c4148dacded - React-RCTSettings: e28e0b1133401f239edc98ff4df01ba3bf7391b5 - React-RCTText: aa98f3eb2a43c9b0fd7ea00c5d97409f8493636c - React-runtimeexecutor: c609425af7a4fd1da7d549e81614487f702e5025 - ReactCommon: fe50c49bc90e5d242845cb534f88164868cba242 - RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 - RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211 - RNReanimated: cbf6cd8d041023173a364a846b195c862635bcb5 - RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 - Yoga: e6fb09105c0264e3ad22605d6b6fa2776e169518 + boost: 88202336c3ba1e7a264a83c0c888784b0f360c28 + DoubleConversion: 00143ab27d470b28035933623e1a3ea37e68889c + FBLazyVector: f13c7f203117288def36bfc9a195216ff4fea859 + fmt: 1568fa7b2f242362c45c42d4a15e9dd4b2e621b3 + glog: f0ddebfc00a905e9213e37801095a0a705d2e5f6 + hermes-engine: 075dd41a8f260f99d7c5c77ad79b0b9632ee920d + RCT-Folly: b54b39c7532acfa0216d988bdeb706883e71416e + RCTDeprecation: a6e6151fa6cb426065ec2997b746fe76e079db8d + RCTRequired: e4a02f7444e9dc52a0e6c3e7ff68030041a4fa32 + RCTTypeSafety: 45656489f33eee07ab7c05455e15a864f48835f8 + React: 9136dea8f43db67215ce2fb0de90b6c29308885a + React-callinvoker: c04ba32d03d110d0801ef285ab3c345614078527 + React-Codegen: 974b5b0a5f7bac31aac9a6982731116b673c3c11 + React-Core: a96e0ed6e3374d0df45b71370ca961c839081b1e + React-CoreModules: 80faef6ac837172ecf231a89b556062abd10972c + React-cxxreact: 511391fb09ba822f6bb958557c411dc1e49e8cd0 + React-debug: 1b29ede5900a2c7f6e445460928d7dc23184fafc + React-Fabric: 8450f48556a78e38bc827fbe1c2cc8b34eabac00 + React-FabricImage: 850c964686bcabeb3c419f49016b799baf6a9e63 + React-featureflags: 725a94b5b16d507c5e33fbca765a701137809072 + React-graphics: d5b66c52fb237dcf241d70d05aabebcb80acbcdf + React-hermes: 9626b48d83e7ccce234e4806f9de9a8e251c4b3d + React-ImageManager: f0de4ff2b707eb3a9fff12b689d360698be270c7 + React-jserrorhandler: 7618a158451b2156fd94bb16c8064d8ed5ca40f0 + React-jsi: 01cd28f115ab73fd56340ed174ed7d428089d9f3 + React-jsiexecutor: c846f582b3af418d7b0c210dd89d495b4221889e + React-jsinspector: bf0ef78460426420800162193610a613134ba295 + React-jsitracing: 82c700d394f5d553e43699a165b9585046e8e041 + React-logger: c89175f47ac5dee3b345dd931b812e633783d3fa + React-Mapbuffer: e1da272870606f17a64520bf78d85e1b73bb0778 + react-native-restart: 7595693413fe3ca15893702f2c8306c62a708162 + react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d + React-nativeconfig: 0e309fafbbfbb8eac2f1999d0756732624ac5b39 + React-NativeModulesApple: a53141b07c57c53cdc1f2043e5acf3b9318bc340 + React-perflogger: e4f171200bc71bb8cf0686a0ad41a242f53b6b36 + React-RCTActionSheet: b61504d6a325a41fa455544abe4546e629e06a53 + React-RCTAnimation: 5a5931a441421c2ecfb6e8fa245ad3733dca423e + React-RCTAppDelegate: 229abcbfe530a674c97ee5b86ebe777e5887b176 + React-RCTBlob: d1592768832d576f78a76fd4d6d9dbde099bac68 + React-RCTFabric: e3be5fbfa450a4f8a3d425a81baf8a0d6924c4b2 + React-RCTImage: a205d3b7d27c87c271f3d26364d2130db2978489 + React-RCTLinking: 47bed2e6d675756e52f30c4980988c810940199b + React-RCTNetwork: 31570dbd82a3d528f27ea1e0a88c74ed86eb62e7 + React-RCTSettings: f83fc8962f1e38f6006fbabef8a8c696e00aad68 + React-RCTText: 3b21f6d4a31e2fc99cc9fd2bd7c6e6aebb9af098 + React-rendererdebug: 6d36ffe66ee79c59e26c3a70332513e3f4014275 + React-rncore: dfd5f3acfdf7a0aa0b94b2206129d4ddfe159699 + React-RuntimeApple: 4e0a2123505f7790ff0df446be3a65ef873b5862 + React-RuntimeCore: d4a35a051d63c3d60a14a54197e18d9ed7252d61 + React-runtimeexecutor: ae40566964e63548a0490bba40889e6c607f3274 + React-RuntimeHermes: fe5880f7a57e015b6cd4c4777642ce76d0f74468 + React-runtimescheduler: 4780cdba710de22aae5ea6769266cec9a89b2bba + React-utils: 45e9ba5a0ec387d31de5d24043bdcf7915b9658b + ReactCommon: 678c6fdb479e7533859f29000d899af37d3a6c7a + RNGestureHandler: 2282cfbcf86c360d29f44ace393203afd5c6cff7 + RNReanimated: 7ad0f08a845cb60955ee5d461d2156d7b9707118 + RNScreens: 83bd0cc27e5d22a58e1bdd560d0e1318e1583b41 + RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4 + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Yoga: d84d1e521e3f8fa3cdd139d617ddf6514d061c78 -PODFILE CHECKSUM: d098c61a0e75dc352cbd20347be3fc694e4ed9d7 +PODFILE CHECKSUM: 557cfa02082876e8bee3963b92f1465e55e6b01c COCOAPODS: 1.15.2 diff --git a/TVOSExample/ios/TVOSExample-tvOS/Info.plist b/TVOSExample/ios/TVOSExample-tvOS/Info.plist index a360b5e13..4adc6a422 100644 --- a/TVOSExample/ios/TVOSExample-tvOS/Info.plist +++ b/TVOSExample/ios/TVOSExample-tvOS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion @@ -39,7 +39,7 @@ LaunchScreen UIRequiredDeviceCapabilities - armv7 + arm64 UISupportedInterfaceOrientations @@ -50,4 +50,4 @@ UIViewControllerBasedStatusBarAppearance - \ No newline at end of file + diff --git a/TVOSExample/ios/TVOSExample.xcodeproj/project.pbxproj b/TVOSExample/ios/TVOSExample.xcodeproj/project.pbxproj index bbdacb540..069e3cfeb 100644 --- a/TVOSExample/ios/TVOSExample.xcodeproj/project.pbxproj +++ b/TVOSExample/ios/TVOSExample.xcodeproj/project.pbxproj @@ -3,22 +3,22 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* TVOSExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* TVOSExampleTests.m */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 269984920579226908D49904 /* libPods-TVOSExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2855AB2CCC04BED0978AE /* libPods-TVOSExample.a */; }; - 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* TVOSExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* TVOSExampleTests.m */; }; - 41BF5F3596F87FEE707DDD11 /* libPods-TVOSExample-TVOSExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F21F13455730034D850CD1C /* libPods-TVOSExample-TVOSExampleTests.a */; }; 47EB63F3390701B2260096C6 /* libPods-TVOSExample-tvOS-TVOSExample-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A0216F1136BF7C90703C880F /* libPods-TVOSExample-tvOS-TVOSExample-tvOSTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 95753F99A64A331B65C2D5F7 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 57625D2E564BE6AD65F97A2D /* PrivacyInfo.xcprivacy */; }; + A1835ADD406AE113B7DC851A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 938AF8F6F0941A35C4E05D91 /* PrivacyInfo.xcprivacy */; }; EE57DEA5314790D63C074D03 /* libPods-TVOSExample-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EA54FCF2086BA3B4678F8237 /* libPods-TVOSExample-tvOS.a */; }; /* End PBXBuildFile section */ @@ -44,23 +44,19 @@ 00E356EE1AD99517003FC87E /* TVOSExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TVOSExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* TVOSExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TVOSExampleTests.m; sourceTree = ""; }; - 015BA46D04C1496C29E63456 /* Pods-TVOSExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample.debug.xcconfig"; path = "Target Support Files/Pods-TVOSExample/Pods-TVOSExample.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* TVOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TVOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = TVOSExample/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = TVOSExample/AppDelegate.m; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.mm; path = TVOSExample/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = TVOSExample/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = TVOSExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = TVOSExample/main.m; sourceTree = ""; }; - 224D5D4AEB9A0A36B75746AA /* Pods-TVOSExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample.release.xcconfig"; path = "Target Support Files/Pods-TVOSExample/Pods-TVOSExample.release.xcconfig"; sourceTree = ""; }; - 2C329346E04FD437DBF160C6 /* Pods-TVOSExample-TVOSExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-TVOSExampleTests.release.xcconfig"; path = "Target Support Files/Pods-TVOSExample-TVOSExampleTests/Pods-TVOSExample-TVOSExampleTests.release.xcconfig"; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* TVOSExample-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "TVOSExample-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* TVOSExample-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "TVOSExample-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 36771B2C8C43AC6099096637 /* Pods-TVOSExample-TVOSExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-TVOSExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-TVOSExample-TVOSExampleTests/Pods-TVOSExample-TVOSExampleTests.debug.xcconfig"; sourceTree = ""; }; 388308430DF4BE056B0CEF13 /* Pods-TVOSExample-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-tvOS.release.xcconfig"; path = "Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS.release.xcconfig"; sourceTree = ""; }; 3BDF8C4CCF278F944E8C6CBF /* Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.release.xcconfig"; sourceTree = ""; }; - 4F21F13455730034D850CD1C /* libPods-TVOSExample-TVOSExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TVOSExample-TVOSExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 57625D2E564BE6AD65F97A2D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = TVOSExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = TVOSExample/LaunchScreen.storyboard; sourceTree = ""; }; - 8DC2855AB2CCC04BED0978AE /* libPods-TVOSExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TVOSExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 938AF8F6F0941A35C4E05D91 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = TVOSExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; A0216F1136BF7C90703C880F /* libPods-TVOSExample-tvOS-TVOSExample-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TVOSExample-tvOS-TVOSExample-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; CCE9A90FED9D09047497AB6D /* Pods-TVOSExample-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS.debug.xcconfig"; sourceTree = ""; }; E8891750AE2DFBD87A5BDB74 /* Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.debug.xcconfig"; sourceTree = ""; }; @@ -74,7 +70,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 41BF5F3596F87FEE707DDD11 /* libPods-TVOSExample-TVOSExampleTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,7 +77,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 269984920579226908D49904 /* libPods-TVOSExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -127,11 +121,12 @@ children = ( 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB71A68108700A75B9A /* main.m */, + 57625D2E564BE6AD65F97A2D /* PrivacyInfo.xcprivacy */, ); name = TVOSExample; sourceTree = ""; @@ -141,8 +136,6 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 8DC2855AB2CCC04BED0978AE /* libPods-TVOSExample.a */, - 4F21F13455730034D850CD1C /* libPods-TVOSExample-TVOSExampleTests.a */, EA54FCF2086BA3B4678F8237 /* libPods-TVOSExample-tvOS.a */, A0216F1136BF7C90703C880F /* libPods-TVOSExample-tvOS-TVOSExample-tvOSTests.a */, ); @@ -165,6 +158,7 @@ 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, 9B1644CBAE2FABCCC6E29A69 /* Pods */, + 938AF8F6F0941A35C4E05D91 /* PrivacyInfo.xcprivacy */, ); indentWidth = 2; sourceTree = ""; @@ -185,10 +179,6 @@ 9B1644CBAE2FABCCC6E29A69 /* Pods */ = { isa = PBXGroup; children = ( - 015BA46D04C1496C29E63456 /* Pods-TVOSExample.debug.xcconfig */, - 224D5D4AEB9A0A36B75746AA /* Pods-TVOSExample.release.xcconfig */, - 36771B2C8C43AC6099096637 /* Pods-TVOSExample-TVOSExampleTests.debug.xcconfig */, - 2C329346E04FD437DBF160C6 /* Pods-TVOSExample-TVOSExampleTests.release.xcconfig */, CCE9A90FED9D09047497AB6D /* Pods-TVOSExample-tvOS.debug.xcconfig */, 388308430DF4BE056B0CEF13 /* Pods-TVOSExample-tvOS.release.xcconfig */, E8891750AE2DFBD87A5BDB74 /* Pods-TVOSExample-tvOS-TVOSExample-tvOSTests.debug.xcconfig */, @@ -204,11 +194,9 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "TVOSExampleTests" */; buildPhases = ( - BC8CB606DF6125BE2BCE6F48 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - D9B6B751E2AEDF3F7AB29F2D /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -224,13 +212,11 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TVOSExample" */; buildPhases = ( - 5227897DA0E4608219DEAFFA /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 0D7507D506130F6246FD97BE /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -252,6 +238,7 @@ 2D02E4791E0B4A5D006451C7 /* Resources */, 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, 42686649B799B0EA1ADB4648 /* [CP] Copy Pods Resources */, + 1D628A144AB903441126BE7D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -271,6 +258,7 @@ 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 2D02E48E1E0B4A5D006451C7 /* Resources */, 84F93B44286727BF8D357577 /* [CP] Copy Pods Resources */, + 1B09D78B63D400B062C57686 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -309,7 +297,7 @@ }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "TVOSExample" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -343,6 +331,7 @@ files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 95753F99A64A331B65C2D5F7 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -351,6 +340,7 @@ buildActionMask = 2147483647; files = ( 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, + A1835ADD406AE113B7DC851A /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -370,148 +360,79 @@ files = ( ); inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", ); name = "Bundle React Native code and images"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 0D7507D506130F6246FD97BE /* [CP] Copy Pods Resources */ = { + 1B09D78B63D400B062C57686 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TVOSExample/Pods-TVOSExample-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/AccessibilityResources.bundle", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample/Pods-TVOSExample-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { + 1D628A144AB903441126BE7D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Bundle React Native Code And Images"; - outputPaths = ( + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 42686649B799B0EA1ADB4648 /* [CP] Copy Pods Resources */ = { + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/AccessibilityResources.bundle", ); - name = "[CP] Copy Pods Resources"; + name = "Bundle React Native Code And Images"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 5227897DA0E4608219DEAFFA /* [CP] Check Pods Manifest.lock */ = { + 42686649B799B0EA1ADB4648 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TVOSExample-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS/Pods-TVOSExample-tvOS-resources.sh\"\n"; showEnvVarsInLog = 0; }; 84F93B44286727BF8D357577 /* [CP] Copy Pods Resources */ = { @@ -519,45 +440,12 @@ buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-tvOS/AccessibilityResources.bundle", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests/Pods-TVOSExample-tvOS-TVOSExample-tvOSTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -586,28 +474,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - BC8CB606DF6125BE2BCE6F48 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-TVOSExample-TVOSExampleTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; C021C441AB5F12C78313DC25 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -630,56 +496,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - D9B6B751E2AEDF3F7AB29F2D /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TVOSExample-TVOSExampleTests/Pods-TVOSExample-TVOSExampleTests-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-iOS/AccessibilityResources.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TVOSExample-TVOSExampleTests/Pods-TVOSExample-TVOSExampleTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -733,7 +549,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -743,7 +559,7 @@ buildActionMask = 2147483647; files = ( 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, - 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -773,7 +589,6 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36771B2C8C43AC6099096637 /* Pods-TVOSExample-TVOSExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -781,8 +596,12 @@ "$(inherited)", ); INFOPLIST_FILE = TVOSExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", @@ -796,13 +615,16 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2C329346E04FD437DBF160C6 /* Pods-TVOSExample-TVOSExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; INFOPLIST_FILE = TVOSExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", @@ -816,7 +638,6 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 015BA46D04C1496C29E63456 /* Pods-TVOSExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -827,8 +648,12 @@ "COCOAPODS=1", ); INFOPLIST_FILE = TVOSExample/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -844,14 +669,17 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 224D5D4AEB9A0A36B75746AA /* Pods-TVOSExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; INFOPLIST_FILE = TVOSExample/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -879,7 +707,12 @@ ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "TVOSExample-tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -888,8 +721,10 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.TVOSExample-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 12.4; }; name = Debug; }; @@ -905,10 +740,15 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_BITCODE = YES; + ENABLE_BITCODE = NO; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "TVOSExample-tvOS/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -917,8 +757,9 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.TVOSExample-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 12.4; }; name = Release; }; @@ -935,7 +776,11 @@ ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "TVOSExample-tvOSTests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -945,7 +790,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TVOSExample-tvOS.app/TVOSExample-tvOS"; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 12.4; }; name = Debug; }; @@ -962,7 +807,11 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_NO_COMMON_BLOCKS = YES; INFOPLIST_FILE = "TVOSExample-tvOSTests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -972,7 +821,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TVOSExample-tvOS.app/TVOSExample-tvOS"; - TVOS_DEPLOYMENT_TARGET = 11.0; + TVOS_DEPLOYMENT_TARGET = 12.4; }; name = Release; }; @@ -980,8 +829,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1006,8 +856,11 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=appletvsimulator*]" = i386; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -1023,16 +876,36 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = "$(inherited)"; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + USE_HERMES = true; }; name = Debug; }; @@ -1040,8 +913,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1066,8 +940,11 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; + CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=appletvsimulator*]" = i386; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -1076,15 +953,35 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + IPHONEOS_DEPLOYMENT_TARGET = 12.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", "\"$(inherited)\"", ); MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = "$(inherited)"; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + USE_HERMES = true; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/TVOSExample/ios/TVOSExample/AppDelegate.h b/TVOSExample/ios/TVOSExample/AppDelegate.h index ef1de86a2..5d2808256 100644 --- a/TVOSExample/ios/TVOSExample/AppDelegate.h +++ b/TVOSExample/ios/TVOSExample/AppDelegate.h @@ -1,8 +1,6 @@ -#import +#import #import -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; +@interface AppDelegate : RCTAppDelegate @end diff --git a/TVOSExample/ios/TVOSExample/AppDelegate.m b/TVOSExample/ios/TVOSExample/AppDelegate.m deleted file mode 100644 index 5766714f1..000000000 --- a/TVOSExample/ios/TVOSExample/AppDelegate.m +++ /dev/null @@ -1,66 +0,0 @@ -#import "AppDelegate.h" - -#import -#import -#import - -#ifdef FB_SONARKIT_ENABLED -#import -#import -#import -#import -#import -#import - -static void InitializeFlipper(UIApplication *application) { - FlipperClient *client = [FlipperClient sharedClient]; - SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; - [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; - [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; - [client addPlugin:[FlipperKitReactPlugin new]]; - [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; - [client start]; -} -#endif - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ -#ifdef FB_SONARKIT_ENABLED - InitializeFlipper(application); -#endif - - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge - moduleName:@"TVOSExample" - initialProperties:nil]; - -#if TARGET_OS_TV - rootView.backgroundColor = [UIColor whiteColor]; -#else - if (@available(iOS 13.0, *)) { - rootView.backgroundColor = [UIColor systemBackgroundColor]; - } else { - rootView.backgroundColor = [UIColor whiteColor]; - } -#endif - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - return YES; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -@end diff --git a/TVOSExample/ios/TVOSExample/AppDelegate.mm b/TVOSExample/ios/TVOSExample/AppDelegate.mm new file mode 100644 index 000000000..c50389316 --- /dev/null +++ b/TVOSExample/ios/TVOSExample/AppDelegate.mm @@ -0,0 +1,31 @@ +#import "AppDelegate.h" + +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.moduleName = @"TVOSExample"; + // 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 = @{}; + + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +@end diff --git a/TVOSExample/ios/TVOSExample/Images.xcassets/AppIcon.appiconset/Contents.json b/TVOSExample/ios/TVOSExample/Images.xcassets/AppIcon.appiconset/Contents.json index 118c98f74..81213230d 100644 --- a/TVOSExample/ios/TVOSExample/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/TVOSExample/ios/TVOSExample/Images.xcassets/AppIcon.appiconset/Contents.json @@ -2,37 +2,52 @@ "images" : [ { "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" + "scale" : "3x", + "size" : "29x29" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/TVOSExample/ios/TVOSExample/Info.plist b/TVOSExample/ios/TVOSExample/Info.plist index f2a2a148f..07ad8125d 100644 --- a/TVOSExample/ios/TVOSExample/Info.plist +++ b/TVOSExample/ios/TVOSExample/Info.plist @@ -17,23 +17,20 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS NSAppTransportSecurity - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + NSLocationWhenInUseUsageDescription @@ -41,7 +38,7 @@ LaunchScreen UIRequiredDeviceCapabilities - armv7 + arm64 UISupportedInterfaceOrientations diff --git a/TVOSExample/ios/TVOSExample/PrivacyInfo.xcprivacy b/TVOSExample/ios/TVOSExample/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..41b8317f0 --- /dev/null +++ b/TVOSExample/ios/TVOSExample/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/TVOSExample/ios/TVOSExample/main.m b/TVOSExample/ios/TVOSExample/main.m index b1df44b95..d645c7246 100644 --- a/TVOSExample/ios/TVOSExample/main.m +++ b/TVOSExample/ios/TVOSExample/main.m @@ -2,7 +2,8 @@ #import "AppDelegate.h" -int main(int argc, char * argv[]) { +int main(int argc, char *argv[]) +{ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } diff --git a/TVOSExample/ios/TVOSExampleTests/TVOSExampleTests.m b/TVOSExample/ios/TVOSExampleTests/TVOSExampleTests.m index 7746ff8f1..5a2466ad5 100644 --- a/TVOSExample/ios/TVOSExampleTests/TVOSExampleTests.m +++ b/TVOSExample/ios/TVOSExampleTests/TVOSExampleTests.m @@ -13,7 +13,7 @@ @interface TVOSExampleTests : XCTestCase @implementation TVOSExampleTests -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test { if (test(view)) { return YES; @@ -34,23 +34,25 @@ - (void)testRendersWelcomeScreen __block NSString *redboxError = nil; #ifdef DEBUG - RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); + RCTSetLogFunction( + ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); #endif while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; + foundElement = [self findSubviewInView:vc.view + matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; } #ifdef DEBUG @@ -61,5 +63,4 @@ - (void)testRendersWelcomeScreen XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); } - @end diff --git a/TVOSExample/jest.config.js b/TVOSExample/jest.config.js new file mode 100644 index 000000000..8eb675e9b --- /dev/null +++ b/TVOSExample/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: 'react-native', +}; diff --git a/TVOSExample/metro.config.js b/TVOSExample/metro.config.js index 821bfe8a0..c5db00211 100644 --- a/TVOSExample/metro.config.js +++ b/TVOSExample/metro.config.js @@ -1,4 +1,4 @@ -const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); +const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const fs = require('fs'); const path = require('path'); @@ -13,10 +13,10 @@ const rnsRoot = path.resolve(__dirname, '..'); const modules = [ '@react-navigation/native', - '@react-navigation/stack', 'react-native-reanimated', 'react-native-safe-area-context', 'react-native-gesture-handler', + 'react-native-reanimated', ...Object.keys(pack.peerDependencies), ]; @@ -29,11 +29,12 @@ const config = { // We need to make sure that only one version is loaded for peerDependencies // So we exclude them at the root, and alias them to the versions in example's node_modules resolver: { + sourceExts: ['ts', 'tsx', 'js', 'jsx', 'json'], blockList: exclusionList( modules.map( m => - new RegExp(`^${escape(path.join(rnsRoot, 'node_modules', m))}\\/.*$`), - ), + new RegExp(`^${escape(path.join(rnsRoot, 'node_modules', m))}\\/.*$`) + ) ), extraNodeModules: modules.reduce((acc, name) => { @@ -49,6 +50,12 @@ const config = { // to various errors. To mitigate this we define below custom request resolver, hijacking requests to conflicting modules and manually // resolving appropriate files. **Most likely** this can be achieved by proper usage of blockList but I found this method working ¯\_(ツ)_/¯ resolveRequest: (context, moduleName, platform) => { + if (moduleName.startsWith('@react-navigation')) { + // For some reason, react-navigation packages don't want to resolve from + // the project's node_modules, so we need to use standard Metro resolver. + return context.resolveRequest(context, moduleName, platform); + } + if (moduleName === 'react-native-screens') { return { filePath: path.join(rnsRoot, 'src', 'index.tsx'), @@ -62,7 +69,7 @@ const config = { __dirname, 'node_modules', moduleName, - `index${ext}`, + `index${ext}` ); const possibleSrcPath = path.join( @@ -70,7 +77,7 @@ const config = { 'node_modules', moduleName, 'src', - `index${ext}`, + `index${ext}` ); if (fs.existsSync(possiblePath)) { diff --git a/TVOSExample/package.json b/TVOSExample/package.json index ab6064738..825bfaaf4 100644 --- a/TVOSExample/package.json +++ b/TVOSExample/package.json @@ -3,52 +3,59 @@ "version": "0.0.1", "private": true, "scripts": { + "android": "expo run:android", + "ios": "expo run:ios", + "web": "expo start --web", + "start": "expo start", "postinstall": "patch-package", - "android": "npx react-native run-android", - "ios": "npx react-native run-ios", - "tv-os": "npx react-native run-ios --scheme=\"TVOSExample-tvOS\" --simulator=\"Apple TV\"", - "start": "npx react-native start", - "test": "jest", - "lint": "eslint ." + "clean-ios": "rm -rf ios/build ios/Pods ios/Podfile.lock", + "setup-ios": "RCT_NEW_ARCH_ENABLED=1 npx pod-install", + "tvos": "expo run:ios --scheme TVOSExample-tvOS --device \"Apple TV\"", + "lint": "eslint .", + "test": "jest" }, "dependencies": { - "@react-native-community/masked-view": "^0.1.10", "@react-navigation/bottom-tabs": "link:../react-navigation/packages/bottom-tabs/", "@react-navigation/core": "link:../react-navigation/packages/core/", "@react-navigation/drawer": "link:../react-navigation/packages/drawer/", "@react-navigation/elements": "link:../react-navigation/packages/elements/", - "@react-navigation/material-bottom-tabs": "^5.3.9", - "@react-navigation/material-top-tabs": "link:../react-navigation/packages/material-top-tabs/", "@react-navigation/native": "link:../react-navigation/packages/native/", "@react-navigation/native-stack": "link:../react-navigation/packages/native-stack/", "@react-navigation/routers": "link:../react-navigation/packages/routers/", "@react-navigation/stack": "link:../react-navigation/packages/stack/", - "patch-package": "^6.2.2", - "postinstall-postinstall": "^2.1.0", - "react": "17.0.1", - "react-native": "npm:react-native-tvos@0.64.2-2", - "react-native-appearance": "^0.3.4", - "react-native-gesture-handler": "^1.10.3", - "react-native-paper": "^4.3.1", - "react-native-reanimated": "^2.1.0", - "react-native-redash": "^15.11.1", - "react-native-safe-area-context": "^4.0.1-rc.5", + "expo": "^50.0.14", + "react": "18.2.0", + "react-native": "npm:react-native-tvos@0.74.1-0", + "react-native-gesture-handler": "^2.16.2", + "react-native-reanimated": "3.11.0", + "react-native-restart": "^0.0.27", + "react-native-safe-area-context": "^4.10.1", "react-native-screens": "link:../", - "react-native-vector-icons": "^7.1.0", - "react-native-webview": "^11.0.0" + "react-native-vector-icons": "^8.0.0" + }, + "resolutions": { + "@react-navigation/core": "link:../react-navigation/packages/core/" }, "devDependencies": { - "@babel/core": "^7.15.0", - "@babel/runtime": "^7.15.3", - "@react-native-community/eslint-config": "^3.0.0", - "babel-jest": "^27.0.6", - "eslint": "^7.32.0", - "glob-to-regexp": "^0.4.1", - "jest": "^27.0.6", - "metro-react-native-babel-preset": "^0.66.2", - "react-test-renderer": "17.0.1" + "@babel/core": "^7.20.0", + "@babel/preset-env": "^7.20.0", + "@babel/runtime": "^7.20.0", + "@react-native/babel-preset": "0.74.77", + "@react-native/eslint-config": "0.74.77", + "@react-native/metro-config": "0.74.77", + "@react-native/typescript-config": "0.74.77", + "@types/react": "^18.2.6", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "patch-package": "^8.0.0", + "postinstall-postinstall": "^2.1.0", + "prettier": "2.8.8", + "react-test-renderer": "18.2.0", + "typescript": "5.0.4" }, - "jest": { - "preset": "react-native" + "engines": { + "node": ">=18" } } diff --git a/TVOSExample/react-native.config.js b/TVOSExample/react-native.config.js new file mode 100644 index 000000000..20117ec38 --- /dev/null +++ b/TVOSExample/react-native.config.js @@ -0,0 +1,12 @@ +module.exports = { + dependencies: { + // Required for Expo CLI to be used with platforms (such as Apple TV) that are not supported in Expo SDK + expo: { + platforms: { + android: null, + ios: null, + macos: null, + }, + }, + }, +}; diff --git a/TVOSExample/src/BottomTabsExample.tsx b/TVOSExample/src/BottomTabsExample.tsx index d8b28782d..c306c7a1d 100644 --- a/TVOSExample/src/BottomTabsExample.tsx +++ b/TVOSExample/src/BottomTabsExample.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import 'react-native/tvos-types.d'; -import {View, Text} from 'react-native'; -import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; -import {STYLES} from './styles'; +import { View, Text } from 'react-native'; +import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; +import { STYLES } from './styles'; function Tab1() { return ( diff --git a/TVOSExample/src/HomeScreen.tsx b/TVOSExample/src/HomeScreen.tsx index 633b44474..20bb53db2 100644 --- a/TVOSExample/src/HomeScreen.tsx +++ b/TVOSExample/src/HomeScreen.tsx @@ -1,10 +1,9 @@ import React from 'react'; -import 'react-native/tvos-types.d'; -import {View, Text, Button} from 'react-native'; -import {EXAMPLES} from './examples'; -import {STYLES} from './styles'; +import { View, Text, Button } from 'react-native'; +import { EXAMPLES } from './examples'; +import { STYLES } from './styles'; -export default function HomeScreen({navigation}) { +export default function HomeScreen({ navigation }) { return ( diff --git a/TVOSExample/src/ModalsExample.tsx b/TVOSExample/src/ModalsExample.tsx index 1238a0f0e..4da9ef2f5 100644 --- a/TVOSExample/src/ModalsExample.tsx +++ b/TVOSExample/src/ModalsExample.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import {View, I18nManager, Button} from 'react-native'; +import { View, Button } from 'react-native'; import { createNativeStackNavigator, NativeStackNavigationProp, } from '@react-navigation/native-stack'; -import {STYLES} from './styles'; +import { STYLES } from './styles'; type StackParamList = { Main: undefined; @@ -17,8 +17,8 @@ interface MainScreenProps { navigation: NativeStackNavigationProp; } -const MainScreen = ({navigation}: MainScreenProps): JSX.Element => ( - +const MainScreen = ({ navigation }: MainScreenProps): JSX.Element => ( +