diff --git a/packages/TesterApp/.gitignore b/packages/TesterApp/.gitignore index cead506cb..1204d234c 100644 --- a/packages/TesterApp/.gitignore +++ b/packages/TesterApp/.gitignore @@ -20,6 +20,7 @@ DerivedData *.hmap *.ipa *.xcuserstate +**/.xcode.env **/.xcode.env.local # Android/IntelliJ diff --git a/packages/TesterApp/.watchmanconfig b/packages/TesterApp/.watchmanconfig deleted file mode 100644 index 9e26dfeeb..000000000 --- a/packages/TesterApp/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/packages/TesterApp/Gemfile b/packages/TesterApp/Gemfile index 1ef62e84d..a020a0e38 100644 --- a/packages/TesterApp/Gemfile +++ b/packages/TesterApp/Gemfile @@ -3,7 +3,6 @@ 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' +# Exclude problematic versions of cocoapods and activesupport that causes build failures. +gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' diff --git a/packages/TesterApp/Gemfile.lock b/packages/TesterApp/Gemfile.lock index 262e5c671..93b4ad5c6 100644 --- a/packages/TesterApp/Gemfile.lock +++ b/packages/TesterApp/Gemfile.lock @@ -1,26 +1,35 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.6) + CFPropertyList (3.0.7) + base64 + nkf rexml - activesupport (7.0.8) + activesupport (7.1.3.3) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - addressable (2.8.5) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) + base64 (0.2.0) + bigdecimal (3.1.8) claide (1.1.0) - cocoapods (1.14.2) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.14.2) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) cocoapods-trunk (>= 1.6.0, < 2.0) @@ -33,7 +42,7 @@ GEM nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.14.2) + cocoapods-core (1.15.2) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -44,7 +53,7 @@ GEM public_suffix (~> 4.0) typhoeus (~> 1.0) cocoapods-deintegrate (1.0.5) - cocoapods-downloader (2.0) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.1) @@ -53,31 +62,38 @@ GEM netrc (~> 0.11) cocoapods-try (1.2.0) colored2 (3.1.2) - concurrent-ruby (1.2.2) + concurrent-ruby (1.3.1) + connection_pool (2.4.1) + drb (2.2.1) escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.16.3) + ffi (1.17.0) + ffi (1.17.0-arm64-darwin) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) httpclient (2.8.3) - i18n (1.14.1) + i18n (1.14.5) concurrent-ruby (~> 1.0) - json (2.6.3) - minitest (5.20.0) + json (2.7.2) + minitest (5.23.1) molinillo (0.8.0) + mutex_m (0.2.0) nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) + nkf (0.2.0) public_suffix (4.0.7) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) ruby-macho (2.5.1) - typhoeus (1.4.0) + strscan (3.1.0) + typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - xcodeproj (1.23.0) + xcodeproj (1.24.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -91,8 +107,8 @@ PLATFORMS ruby DEPENDENCIES - activesupport (>= 6.1.7.5, < 7.1.0) - cocoapods (>= 1.13, < 1.15) + activesupport (>= 6.1.7.5, != 7.1.0) + cocoapods (>= 1.13, != 1.15.1, != 1.15.0) RUBY VERSION ruby 2.7.6p219 diff --git a/packages/TesterApp/android/app/build.gradle b/packages/TesterApp/android/app/build.gradle deleted file mode 100644 index a6acf6056..000000000 --- a/packages/TesterApp/android/app/build.gradle +++ /dev/null @@ -1,125 +0,0 @@ -apply plugin: "com.android.application" -apply plugin: "org.jetbrains.kotlin.android" -apply plugin: "com.facebook.react" - -apply from: file("../resolveNodePackage.gradle") - -def reactNativeRoot = resolveNodePackage('react-native', rootDir) -def reactNativeCodegenPath = resolveNodePackage('@react-native/codegen', reactNativeRoot) -def cliPlatformAndroidPath = resolveNodePackage('@react-native-community/cli-platform-android', reactNativeRoot) - -/** - * 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. - */ -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 = reactNativeCodegenPath - // 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 = "webpack-bundle" - // - // The path to the CLI configuration file. Default is empty. - // bundleConfig = file(../rn-cli.config.js) - // - // The name of the generated asset file containing your JS bundle - // bundleAssetName = "MyApplication.android.bundle" - // - // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' - // entryFile = file("../js/MyApplication.android.js") - // - // A list of extra flags to pass to the 'bundle' commands. - // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle - // extraPackagerArgs = [] - - /* Hermes Commands */ - // The hermes compiler command to run. By default it is 'hermesc' - // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" - // - // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" - // hermesFlags = ["-O", "-output-source-map"] -} - -/** - * Set this to true to Run Proguard on Release builds to minify the Java bytecode. - */ -def enableProguardInReleaseBuilds = false - -/** - * 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 - * this variant is about 6MiB larger per architecture than default. - */ -def jscFlavor = 'org.webkit:android-jsc:+' - -android { - ndkVersion rootProject.ext.ndkVersion - - buildToolsVersion rootProject.ext.buildToolsVersion - compileSdk rootProject.ext.compileSdkVersion - - namespace "com.testerapp" - defaultConfig { - applicationId "com.testerapp" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 - versionName "1.0" - } - signingConfigs { - debug { - storeFile file('debug.keystore') - storePassword 'android' - keyAlias 'androiddebugkey' - keyPassword 'android' - } - } - buildTypes { - debug { - signingConfig signingConfigs.debug - } - release { - // Caution! In production, you need to generate your own keystore file. - // see https://reactnative.dev/docs/signed-apk-android. - signingConfig signingConfigs.debug - minifyEnabled enableProguardInReleaseBuilds - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" - } - } -} - -dependencies { - // The version of react-native is set by the React Native Gradle Plugin - implementation("com.facebook.react:react-android") - - if (hermesEnabled.toBoolean()) { - implementation("com.facebook.react:hermes-android") - } else { - implementation jscFlavor - } -} - -apply from: new File(cliPlatformAndroidPath, "native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/packages/TesterApp/android/app/proguard-rules.pro b/packages/TesterApp/android/app/proguard-rules.pro deleted file mode 100644 index 3cc0f30e4..000000000 --- a/packages/TesterApp/android/app/proguard-rules.pro +++ /dev/null @@ -1,13 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - --keep class com.facebook.hermes.unicode.** { *; } --keep class com.facebook.jni.** { *; } diff --git a/packages/TesterApp/android/app/src/debug/AndroidManifest.xml b/packages/TesterApp/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 4b185bc15..000000000 --- a/packages/TesterApp/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/packages/TesterApp/android/app/src/main/AndroidManifest.xml b/packages/TesterApp/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 07d6364c9..000000000 --- a/packages/TesterApp/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/TesterApp/android/app/src/main/java/com/testerapp/MainActivity.kt b/packages/TesterApp/android/app/src/main/java/com/testerapp/MainActivity.kt deleted file mode 100644 index 7166eb7c8..000000000 --- a/packages/TesterApp/android/app/src/main/java/com/testerapp/MainActivity.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.testerapp - -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 = "TesterApp" - - /** - * 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) -} \ No newline at end of file diff --git a/packages/TesterApp/android/app/src/main/java/com/testerapp/MainApplication.kt b/packages/TesterApp/android/app/src/main/java/com/testerapp/MainApplication.kt deleted file mode 100644 index 7e575e69e..000000000 --- a/packages/TesterApp/android/app/src/main/java/com/testerapp/MainApplication.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.testerapp - -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 { - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return PackageList(this).packages - } - - 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(bridgelessEnabled = true) - } - } -} diff --git a/packages/TesterApp/android/app/src/main/res/drawable/rn_edit_text_material.xml b/packages/TesterApp/android/app/src/main/res/drawable/rn_edit_text_material.xml deleted file mode 100644 index 73b37e4d9..000000000 --- a/packages/TesterApp/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a2f590828..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 1b5239980..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index ff10afd6e..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index 115a4c768..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index dcd3cd808..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 459ca609d..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 8ca12fe02..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 8e19b410a..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index b824ebdd4..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 4c19a13c2..000000000 Binary files a/packages/TesterApp/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/packages/TesterApp/android/app/src/main/res/values/strings.xml b/packages/TesterApp/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 975e9de25..000000000 --- a/packages/TesterApp/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - TesterApp - diff --git a/packages/TesterApp/android/app/src/main/res/values/styles.xml b/packages/TesterApp/android/app/src/main/res/values/styles.xml deleted file mode 100644 index d435cfae5..000000000 --- a/packages/TesterApp/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/packages/TesterApp/android/build.gradle b/packages/TesterApp/android/build.gradle index 719023797..d8bcc3aeb 100644 --- a/packages/TesterApp/android/build.gradle +++ b/packages/TesterApp/android/build.gradle @@ -1,23 +1,43 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { - ext { - buildToolsVersion = "34.0.0" - minSdkVersion = 23 - compileSdkVersion = 34 - targetSdkVersion = 34 - ndkVersion = "26.1.10909125" - kotlinVersion = "1.9.22" - } + apply(from: { + def searchDir = rootDir.toPath() + do { + def p = searchDir.resolve("node_modules/react-native-test-app/android/dependencies.gradle") + if (p.toFile().exists()) { + return p.toRealPath().toString() + } + } while (searchDir = searchDir.getParent()) + throw new GradleException("Could not find `react-native-test-app`"); + }()) + repositories { - google() mavenCentral() + google() } + dependencies { - classpath("com.android.tools.build:gradle") - classpath("com.facebook.react:react-native-gradle-plugin") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + getReactNativeDependencies().each { dependency -> + classpath(dependency) + } } } -apply plugin: "com.facebook.react.rootproject" +allprojects { + repositories { + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url({ + def searchDir = rootDir.toPath() + do { + def p = searchDir.resolve("node_modules/react-native/android") + if (p.toFile().exists()) { + return p.toRealPath().toString() + } + } while (searchDir = searchDir.getParent()) + throw new GradleException("Could not find `react-native`"); + }()) + } + mavenCentral() + google() + } +} diff --git a/packages/TesterApp/android/app/debug.keystore b/packages/TesterApp/android/debug.keystore similarity index 100% rename from packages/TesterApp/android/app/debug.keystore rename to packages/TesterApp/android/debug.keystore diff --git a/packages/TesterApp/android/gradle.properties b/packages/TesterApp/android/gradle.properties index 99fc223ed..0c541f3a9 100644 --- a/packages/TesterApp/android/gradle.properties +++ b/packages/TesterApp/android/gradle.properties @@ -7,22 +7,23 @@ # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m -org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true +# Specifies the JVM arguments used for the Gradle Daemon. The setting is +# particularly useful for configuring JVM memory settings for build performance. +# This does not affect the JVM settings for the Gradle client VM. +# The default is `-Xmx512m -XX:MaxMetaspaceSize=256m`. +org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will fork up to org.gradle.workers.max JVMs to execute +# projects in parallel. To learn more about parallel task execution, see the +# section on Gradle build performance: +# https://docs.gradle.org/current/userguide/performance.html#parallel_execution. +# Default is `false`. +#org.gradle.parallel=true # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true # Use this property to specify which architecture you want to build. # You can also override it from the CLI using @@ -34,8 +35,15 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # your application. You should enable this flag either if you want # to write custom TurboModules/Fabric components OR use libraries that # are providing them. +# Note that this is incompatible with web debugging. newArchEnabled=true +bridgelessEnabled=true + +# Uncomment the line below to build React Native from source. +#react.buildFromSource=true + +# Version of Android NDK to build against. +#ANDROID_NDK_VERSION=26.1.10909125 -# Use this property to enable or disable the Hermes JS engine. -# If set to false, you will be using JSC instead. -hermesEnabled=true +# Version of Kotlin to build against. +#KOTLIN_VERSION=1.8.22 diff --git a/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.jar b/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.jar index 7f93135c4..d64cd4917 100644 Binary files a/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.jar and b/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.properties b/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.properties index 2ea3535dc..b82aa23a4 100644 --- a/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/TesterApp/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/packages/TesterApp/android/gradlew.bat b/packages/TesterApp/android/gradlew.bat index 25da30dbd..7101f8e46 100644 --- a/packages/TesterApp/android/gradlew.bat +++ b/packages/TesterApp/android/gradlew.bat @@ -1,92 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -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 - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -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 - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -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! -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 - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +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 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +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 + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +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! +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 + +:omega diff --git a/packages/TesterApp/android/resolveNodePackage.gradle b/packages/TesterApp/android/resolveNodePackage.gradle deleted file mode 100644 index b14515b0c..000000000 --- a/packages/TesterApp/android/resolveNodePackage.gradle +++ /dev/null @@ -1,27 +0,0 @@ -// source: https://github.com/facebook/react-native/pull/39520 -// TODO remove in the future when this lands in RN - -ext.resolveNodePackage = { String packageName, File startDir -> - def candidate - - def osName = System.getProperty("os.name").toLowerCase() - if (osName.contains("win")) { - // for Windows OS - candidate = new File(startDir, "node_modules\\$packageName") - } else { - // for Unix-likely OS (MacOS/Linux) - candidate = new File(startDir, "node_modules/$packageName") - } - - if (candidate.exists()) { - // workaround for `candidate.canonicalPath` because it doesn't resolve final path to symlink on Windows - return new File(candidate.toPath().toRealPath().toString()) - } - - def parentDir = startDir.parentFile - if (parentDir == null || startDir.canonicalPath == parentDir.canonicalPath) { - throw new GradleException("Failed to find the package '$packageName'. Ensure you have installed node_modules.") - } - - return resolveNodePackage(packageName, parentDir) -} diff --git a/packages/TesterApp/android/settings.gradle b/packages/TesterApp/android/settings.gradle index 370fbf89f..965be5285 100644 --- a/packages/TesterApp/android/settings.gradle +++ b/packages/TesterApp/android/settings.gradle @@ -1,12 +1,21 @@ -apply from: "./resolveNodePackage.gradle" +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + google() + } +} -rootProject.name = 'TesterApp' +rootProject.name = "TesterApp" -def reactNativePath = resolveNodePackage('react-native', rootDir) -def cliPlatformAndroidPath = resolveNodePackage('@react-native-community/cli-platform-android', reactNativePath) -def gradlePluginPath = resolveNodePackage("@react-native/gradle-plugin", reactNativePath) - -apply from: new File(cliPlatformAndroidPath, "native_modules.gradle"); applyNativeModulesSettingsGradle(settings) - -include ':app' -includeBuild(gradlePluginPath) +apply(from: { + def searchDir = rootDir.toPath() + do { + def p = searchDir.resolve("node_modules/react-native-test-app/test-app.gradle") + if (p.toFile().exists()) { + return p.toRealPath().toString() + } + } while (searchDir = searchDir.getParent()) + throw new GradleException("Could not find `react-native-test-app`"); +}()) +applyTestAppSettings(settings) diff --git a/packages/TesterApp/app.json b/packages/TesterApp/app.json index 15df36da4..29d848b2a 100644 --- a/packages/TesterApp/app.json +++ b/packages/TesterApp/app.json @@ -1,4 +1,39 @@ { + "$schema": "https://raw.githubusercontent.com/microsoft/react-native-test-app/trunk/schema.json", "name": "TesterApp", - "displayName": "TesterApp" -} \ No newline at end of file + "displayName": "TesterApp", + "singleApp": "tester-app", + "components": [ + { + "appKey": "TesterApp", + "displayName": "TesterApp", + "slug": "tester-app" + } + ], + "android": { + "package": "com.testerapp", + "signingConfigs": { + "debug": { + "storeFile": "android/debug.keystore" + }, + "release": { + "storeFile": "android/debug.keystore" + } + } + }, + "ios": { + "bundleIdentifier": "com.testerapp" + }, + "resources": { + "android": [ + "build/output/android/index.android.bundle", + "build/output/android/src_asyncChunks_Async_local_tsx.chunk.bundle", + "build/output/android/res" + ], + "ios": [ + "build/output/ios/main.jsbundle", + "build/output/ios/src_asyncChunks_Async_local_tsx.chunk.bundle", + "build/output/ios/assets" + ] + } +} diff --git a/packages/TesterApp/ios/Podfile b/packages/TesterApp/ios/Podfile index 898f5116b..05a2fa50d 100644 --- a/packages/TesterApp/ios/Podfile +++ b/packages/TesterApp/ios/Podfile @@ -1,41 +1,15 @@ -# 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 +ws_dir = Pathname.new(__dir__) +ws_dir = ws_dir.parent until + File.exist?("#{ws_dir}/node_modules/react-native-test-app/test_app.rb") || + ws_dir.expand_path.to_s == '/' +require "#{ws_dir}/node_modules/react-native-test-app/test_app.rb" -platform :ios, min_ios_version_supported -prepare_react_native_project! +workspace 'TesterApp.xcworkspace' -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 +options = { + :bridgeless_enabled => true, + :fabric_enabled => true, + :hermes_enabled => true, +} -target 'TesterApp' do - config = use_native_modules! - - use_react_native!( - :path => config[:reactNativePath], - - # An absolute path to your application root. - :app_path => "#{Pod::Config.instance.installation_root}/.." - ) - - target 'TesterAppTests' do - inherit! :complete - # Pods for testing - end - - post_install do |installer| - # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 - react_native_post_install( - installer, - config[:reactNativePath], - :mac_catalyst_enabled => false, - # :ccache_enabled => true - ) - end -end +use_test_app! options diff --git a/packages/TesterApp/ios/Podfile.lock b/packages/TesterApp/ios/Podfile.lock index 81a690c20..bf8c72609 100644 --- a/packages/TesterApp/ios/Podfile.lock +++ b/packages/TesterApp/ios/Podfile.lock @@ -1,6 +1,6 @@ PODS: - boost (1.83.0) - - callstack-repack (4.0.0): + - callstack-repack (4.1.1): - DoubleConversion - glog - hermes-engine @@ -1188,6 +1188,33 @@ PODS: - React-logger (= 0.74.1) - React-perflogger (= 0.74.1) - React-utils (= 0.74.1) + - ReactNativeHost (0.4.9): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTAppDelegate + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - ReactTestApp-DevSupport (3.7.4): + - React-Core + - React-jsi + - ReactTestApp-Resources (1.0.0-dev) - RNCAsyncStorage (1.23.1): - DoubleConversion - glog @@ -1209,7 +1236,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNSVG (15.2.0-rc.0): + - RNSVG (15.3.0): - DoubleConversion - glog - hermes-engine @@ -1229,9 +1256,9 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.2.0-rc.0) + - RNSVG/common (= 15.3.0) - Yoga - - RNSVG/common (15.2.0-rc.0): + - RNSVG/common (15.3.0): - DoubleConversion - glog - hermes-engine @@ -1315,6 +1342,9 @@ DEPENDENCIES: - 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`) + - "ReactNativeHost (from `../../../node_modules/.pnpm/react-native-test-app@3.7.4_react-native@0.74.1_@babel+core@7.24.0_@babel+preset-env@7.24.0_@_xo2g2bdwyxr2iccu654qlqc2hi/node_modules/@rnx-kit/react-native-host`)" + - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) + - ReactTestApp-Resources (from `..`) - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -1435,6 +1465,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/utils" ReactCommon: :path: "../node_modules/react-native/ReactCommon" + ReactNativeHost: + :path: "../../../node_modules/.pnpm/react-native-test-app@3.7.4_react-native@0.74.1_@babel+core@7.24.0_@babel+preset-env@7.24.0_@_xo2g2bdwyxr2iccu654qlqc2hi/node_modules/@rnx-kit/react-native-host" + ReactTestApp-DevSupport: + :path: "../node_modules/react-native-test-app" + ReactTestApp-Resources: + :path: ".." RNCAsyncStorage: :path: "../node_modules/@react-native-async-storage/async-storage" RNSVG: @@ -1444,7 +1480,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: d3f49c53809116a5d38da093a8aa78bf551aed09 - callstack-repack: cbf8c428d7450053e3d46c987c5929928986f5a6 + callstack-repack: 13c4bb5459eb864c64f3f00052877481da47d777 DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 FBLazyVector: 898d14d17bf19e2435cafd9ea2a1033efe445709 fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 @@ -1498,12 +1534,15 @@ SPEC CHECKSUMS: React-runtimescheduler: e2152ed146b6a35c07386fc2ac4827b27e6aad12 React-utils: 3285151c9d1e3a28a9586571fc81d521678c196d ReactCommon: f42444e384d82ab89184aed5d6f3142748b54768 + ReactNativeHost: 76f58edded6537ed8a03cfce6327e31d667bd802 + ReactTestApp-DevSupport: 21c31f059f9dfb146ae31469b50a4ccb5ff221f3 + ReactTestApp-Resources: 0fa9146ee546fb7447198c96d852a56b8e3bb94a RNCAsyncStorage: f2add1326156dc313df59d855c11f459059e4ffd - RNSVG: 5aca9d537e92d2a0282f69350b5d441f23271e62 + RNSVG: 7b44aa4df2587946e28496adf2e10a16f08c1250 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d SwiftyRSA: 8c6dd1ea7db1b8dc4fb517a202f88bb1354bc2c6 Yoga: b9a182ab00cf25926e7f79657d08c5d23c2d03b0 -PODFILE CHECKSUM: 9c707e53c2ce4ed1572c73e490ef5ab242dd35fb +PODFILE CHECKSUM: 6d7cbe03444d5e87210979fb32a0eca299d758fe -COCOAPODS: 1.14.2 +COCOAPODS: 1.15.2 diff --git a/packages/TesterApp/ios/TesterApp.xcodeproj/project.pbxproj b/packages/TesterApp/ios/TesterApp.xcodeproj/project.pbxproj deleted file mode 100644 index d0c2639e3..000000000 --- a/packages/TesterApp/ios/TesterApp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,721 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* TesterAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* TesterAppTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-TesterApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-TesterApp.a */; }; - 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 */; }; - 7699B88040F8A987B510C191 /* libPods-TesterApp-TesterAppTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-TesterApp-TesterAppTests.a */; }; - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - C67AEDD08E814A95121C8C61 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 223B0ACBAC4B47A809783144 /* PrivacyInfo.xcprivacy */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = TesterApp; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* TesterAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TesterAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* TesterAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TesterAppTests.m; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* TesterApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TesterApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = TesterApp/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = TesterApp/AppDelegate.mm; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = TesterApp/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = TesterApp/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = TesterApp/main.m; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-TesterApp-TesterAppTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TesterApp-TesterAppTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 223B0ACBAC4B47A809783144 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = TesterApp/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 3B4392A12AC88292D35C810B /* Pods-TesterApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesterApp.debug.xcconfig"; path = "Target Support Files/Pods-TesterApp/Pods-TesterApp.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-TesterApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesterApp.release.xcconfig"; path = "Target Support Files/Pods-TesterApp/Pods-TesterApp.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-TesterApp-TesterAppTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesterApp-TesterAppTests.debug.xcconfig"; path = "Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-TesterApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-TesterApp.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = TesterApp/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-TesterApp-TesterAppTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesterApp-TesterAppTests.release.xcconfig"; path = "Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests.release.xcconfig"; sourceTree = ""; }; - AA4FB0D02BD6DA6C00447184 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = TesterApp/PrivacyInfo.xcprivacy; sourceTree = ""; }; - ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7699B88040F8A987B510C191 /* libPods-TesterApp-TesterAppTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0C80B921A6F3F58F76C31292 /* libPods-TesterApp.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* TesterAppTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* TesterAppTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = TesterAppTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* TesterApp */ = { - isa = PBXGroup; - children = ( - AA4FB0D02BD6DA6C00447184 /* PrivacyInfo.xcprivacy */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.mm */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, - 13B07FB71A68108700A75B9A /* main.m */, - 223B0ACBAC4B47A809783144 /* PrivacyInfo.xcprivacy */, - ); - name = TesterApp; - sourceTree = ""; - }; - 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { - isa = PBXGroup; - children = ( - ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-TesterApp.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-TesterApp-TesterAppTests.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - ); - name = Libraries; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* TesterApp */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* TesterAppTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - 2D16E6871FA4F8E400B85C8A /* Frameworks */, - BBD78D7AC51CEA395F1C20DB /* Pods */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - usesTabs = 0; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* TesterApp.app */, - 00E356EE1AD99517003FC87E /* TesterAppTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - BBD78D7AC51CEA395F1C20DB /* Pods */ = { - isa = PBXGroup; - children = ( - 3B4392A12AC88292D35C810B /* Pods-TesterApp.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-TesterApp.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-TesterApp-TesterAppTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-TesterApp-TesterAppTests.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* TesterAppTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "TesterAppTests" */; - buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = TesterAppTests; - productName = TesterAppTests; - productReference = 00E356EE1AD99517003FC87E /* TesterAppTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* TesterApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TesterApp" */; - buildPhases = ( - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = TesterApp; - productName = TesterApp; - productReference = 13B07F961A680F5B00A75B9A /* TesterApp.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1210; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - LastSwiftMigration = 1120; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "TesterApp" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* TesterApp */, - 00E356ED1AD99517003FC87E /* TesterAppTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - C67AEDD08E814A95121C8C61 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(SRCROOT)/.xcode.env.local", - "$(SRCROOT)/.xcode.env", - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nexport BUNDLE_COMMAND=webpack-bundle\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; - }; - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A55EABD7B0C7F3A422A6CC61 /* [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-TesterApp-TesterAppTests-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; - }; - C38B50BA6285516D6DCD4F65 /* [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-TesterApp-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; - }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesterApp/Pods-TesterApp-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesterApp-TesterAppTests/Pods-TesterApp-TesterAppTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* TesterAppTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* TesterApp */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-TesterApp-TesterAppTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = TesterAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TesterApp.app/TesterApp"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-TesterApp-TesterAppTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = TesterAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TesterApp.app/TesterApp"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-TesterApp.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZK8L4ATDPD; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = TesterApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = TesterApp; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-TesterApp.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ZK8L4ATDPD; - INFOPLIST_FILE = TesterApp/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = TesterApp; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++20"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - 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=iphonesimulator*]" = i386; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - 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)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "$(inherited)", - "-DRN_FABRIC_ENABLED", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - "-DRN_FABRIC_ENABLED", - "-DFOLLY_HAVE_CLOCK_GETTIME=1", - ); - OTHER_LDFLAGS = "$(inherited)"; - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; - SDKROOT = iphoneos; - USE_HERMES = true; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++20"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - 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=iphonesimulator*]" = i386; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - 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)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = ( - "$(inherited)", - "-DRN_FABRIC_ENABLED", - ); - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - "-DRN_FABRIC_ENABLED", - "-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; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "TesterAppTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "TesterApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "TesterApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/packages/TesterApp/ios/TesterApp.xcodeproj/xcshareddata/xcschemes/TesterApp.xcscheme b/packages/TesterApp/ios/TesterApp.xcodeproj/xcshareddata/xcschemes/TesterApp.xcscheme deleted file mode 100644 index ea8a1aaeb..000000000 --- a/packages/TesterApp/ios/TesterApp.xcodeproj/xcshareddata/xcschemes/TesterApp.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/TesterApp/ios/TesterApp.xcworkspace/contents.xcworkspacedata b/packages/TesterApp/ios/TesterApp.xcworkspace/contents.xcworkspacedata index cfd25c8ab..57f64952a 100644 --- a/packages/TesterApp/ios/TesterApp.xcworkspace/contents.xcworkspacedata +++ b/packages/TesterApp/ios/TesterApp.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:../node_modules/.generated/ios/ReactTestApp.xcodeproj"> diff --git a/packages/TesterApp/ios/TesterApp/AppDelegate.h b/packages/TesterApp/ios/TesterApp/AppDelegate.h deleted file mode 100644 index 5d2808256..000000000 --- a/packages/TesterApp/ios/TesterApp/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/packages/TesterApp/ios/TesterApp/AppDelegate.mm b/packages/TesterApp/ios/TesterApp/AppDelegate.mm deleted file mode 100644 index 01b1f4bf0..000000000 --- a/packages/TesterApp/ios/TesterApp/AppDelegate.mm +++ /dev/null @@ -1,30 +0,0 @@ -#import "AppDelegate.h" - -#import - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.moduleName = @"TesterApp"; - // 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/packages/TesterApp/ios/TesterApp/Images.xcassets/AppIcon.appiconset/Contents.json b/packages/TesterApp/ios/TesterApp/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 81213230d..000000000 --- a/packages/TesterApp/ios/TesterApp/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/packages/TesterApp/ios/TesterApp/Images.xcassets/Contents.json b/packages/TesterApp/ios/TesterApp/Images.xcassets/Contents.json deleted file mode 100644 index 2d92bd53f..000000000 --- a/packages/TesterApp/ios/TesterApp/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/packages/TesterApp/ios/TesterApp/Info.plist b/packages/TesterApp/ios/TesterApp/Info.plist deleted file mode 100644 index 6311672e1..000000000 --- a/packages/TesterApp/ios/TesterApp/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - TesterApp - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSAllowsLocalNetworking - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - arm64 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIUserInterfaceStyle - Light - UIViewControllerBasedStatusBarAppearance - - - diff --git a/packages/TesterApp/ios/TesterApp/LaunchScreen.storyboard b/packages/TesterApp/ios/TesterApp/LaunchScreen.storyboard deleted file mode 100644 index fbcf0b83f..000000000 --- a/packages/TesterApp/ios/TesterApp/LaunchScreen.storyboard +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/TesterApp/ios/TesterApp/PrivacyInfo.xcprivacy b/packages/TesterApp/ios/TesterApp/PrivacyInfo.xcprivacy deleted file mode 100644 index 41b8317f0..000000000 --- a/packages/TesterApp/ios/TesterApp/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,37 +0,0 @@ - - - - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp - NSPrivacyAccessedAPITypeReasons - - C617.1 - - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategorySystemBootTime - NSPrivacyAccessedAPITypeReasons - - 35F9.1 - - - - NSPrivacyCollectedDataTypes - - NSPrivacyTracking - - - diff --git a/packages/TesterApp/ios/TesterApp/main.m b/packages/TesterApp/ios/TesterApp/main.m deleted file mode 100644 index d645c7246..000000000 --- a/packages/TesterApp/ios/TesterApp/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/packages/TesterApp/ios/TesterAppTests/Info.plist b/packages/TesterApp/ios/TesterAppTests/Info.plist deleted file mode 100644 index ba72822e8..000000000 --- a/packages/TesterApp/ios/TesterAppTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/packages/TesterApp/ios/TesterAppTests/TesterAppTests.m b/packages/TesterApp/ios/TesterAppTests/TesterAppTests.m deleted file mode 100644 index 1db3d0d53..000000000 --- a/packages/TesterApp/ios/TesterAppTests/TesterAppTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface TesterAppTests : XCTestCase - -@end - -@implementation TesterAppTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - 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; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - -@end diff --git a/packages/TesterApp/package.json b/packages/TesterApp/package.json index 90a6afefc..f57c70942 100644 --- a/packages/TesterApp/package.json +++ b/packages/TesterApp/package.json @@ -4,10 +4,12 @@ "private": true, "scripts": { "android": "react-native run-android", + "android:release": "node ./scripts/release.js android", "ios": "react-native run-ios", + "ios:release": "node ./scripts/release.js ios", "start": "react-native webpack-start", - "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev=false --bundle-output build/output/android/index.android.bundle", - "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev=false --bundle-output build/output/ios/main.jsbundle", + "bundle:android": "react-native webpack-bundle --platform android --entry-file index.js --dev=false --bundle-output build/output/android/index.android.bundle --assets-dest build/output/android/res", + "bundle:ios": "react-native webpack-bundle --platform ios --entry-file index.js --dev=false --bundle-output build/output/ios/main.jsbundle --assets-dest build/output/ios", "webpack": "webpack -c webpack.config.js --env platform=android --env mode=production", "test": "vitest run", "serve-remote-assets:android": "adb reverse tcp:9999 tcp:9999 && pnpm http-server -p 9999 build/output/android/remote", @@ -17,7 +19,7 @@ "@react-native-async-storage/async-storage": "^1.23.1", "react": "18.2.0", "react-native": "0.74.1", - "react-native-svg": "15.2.0-rc.0" + "react-native-svg": "15.3.0" }, "devDependencies": { "@babel/core": "^7.23.9", @@ -34,6 +36,7 @@ "get-port": "^6.1.2", "globby": "^13.1.2", "http-server": "^14.1.1", + "react-native-test-app": "^3.7.4", "prettier": "^3.2.4", "react-native-event-source": "^1.1.0", "terser-webpack-plugin": "^5.3.3", diff --git a/packages/TesterApp/react-native.config.js b/packages/TesterApp/react-native.config.js index d4f5f41c7..2f7653e16 100644 --- a/packages/TesterApp/react-native.config.js +++ b/packages/TesterApp/react-native.config.js @@ -1,3 +1,13 @@ +const { configureProjects } = require('react-native-test-app'); + module.exports = { + project: configureProjects({ + android: { + sourceDir: 'android', + }, + ios: { + sourceDir: 'ios', + }, + }), commands: require('@callstack/repack/commands'), }; diff --git a/packages/TesterApp/scripts/release.js b/packages/TesterApp/scripts/release.js new file mode 100644 index 000000000..329b46786 --- /dev/null +++ b/packages/TesterApp/scripts/release.js @@ -0,0 +1,46 @@ +const { execSync } = require('child_process'); +const { rm, existsSync } = require('fs'); + +function runCommand(command) { + try { + execSync(command, { stdio: 'inherit' }); + } catch (error) { + console.error(`Error executing command: ${command}`, error); + process.exit(1); + } +} + +function buildIOS() { + runCommand('pnpm bundle:ios'); + process.chdir('./ios'); + runCommand('bundle exec pod install'); + runCommand('npx react-native run-ios --mode "Release"'); +} + +function buildAndroid() { + runCommand('pnpm bundle:android'); + runCommand( + 'npx react-native run-android --tasks assembleRelease,installRelease' + ); +} + +const buildDir = 'build/generated'; + +if (existsSync(buildDir)) { + rm(buildDir, { recursive: true }, (err) => { + if (err) { + console.error('Error removing build directory:', err); + process.exit(1); + } + }); +} + +const platform = process.argv[2] || ''; +if (platform === 'ios') { + buildIOS(); +} else if (platform === 'android') { + buildAndroid(); +} else { + console.error('Please specify either "ios" or "android" as an argument.'); + process.exit(1); +} diff --git a/packages/TesterApp/webpack.config.mjs b/packages/TesterApp/webpack.config.mjs index 3ae15bc5a..abc94a496 100644 --- a/packages/TesterApp/webpack.config.mjs +++ b/packages/TesterApp/webpack.config.mjs @@ -57,17 +57,20 @@ export default (env) => { */ devtool: false, context, - // commented out for now, lazy comp needs specific port to be reversed - // experiments: { - // lazyCompilation: devServer && { - // imports: true, - // entries: false, - // }, - // }, - cache: { - type: 'filesystem', - name: `${platform}-${mode}`, - }, + experiments: process.env.LAZY_COMPILATION + ? { + lazyCompilation: devServer && { + imports: true, + entries: false, + }, + } + : undefined, + cache: process.env.NO_CACHE + ? undefined + : { + type: 'filesystem', + name: `${platform}-${mode}`, + }, /** * `getInitializationEntries` will return necessary entries with setup and initialization code. * If you don't want to use Hot Module Replacement, set `hmr` option to `false`. By default, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 894475c61..c3ecbb715 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -135,8 +135,8 @@ importers: specifier: 0.74.1 version: 0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0) react-native-svg: - specifier: 15.2.0-rc.0 - version: 15.2.0-rc.0(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0) + specifier: 15.3.0 + version: 15.3.0(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0) devDependencies: '@babel/core': specifier: ^7.23.9 @@ -186,6 +186,9 @@ importers: react-native-event-source: specifier: ^1.1.0 version: 1.1.0 + react-native-test-app: + specifier: ^3.7.4 + version: 3.7.4(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0) terser-webpack-plugin: specifier: ^5.3.3 version: 5.3.10(webpack@5.91.0) @@ -1778,6 +1781,11 @@ packages: resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} engines: {node: '>=14.15'} + '@rnx-kit/react-native-host@0.4.9': + resolution: {integrity: sha512-S8cp6sOLDsrW5bYk6LEoxU90UEms/eC2J2inF4UJ2p/AT2ibzU9ftO+oSAfoRQIizpAqAf823fuAsSXdfdQA5w==} + peerDependencies: + react-native: '>=0.66' + '@rsbuild/core@0.6.13': resolution: {integrity: sha512-oC3qMwKaSan2pjiYpbRcsnIS7TroJ9izuIspwnks2zXfFjSlGPo7OsBaFaY9Wg1j3KC1jXbqa2kyeYs7GaAGdQ==} engines: {node: '>=16.0.0'} @@ -5789,12 +5797,33 @@ packages: react-native-event-source@1.1.0: resolution: {integrity: sha512-CAs76IW8kTrdy0okfV2KPopm7E9TL0uNAR+SRrN7iZ/ii0zBeHWuhD4Q2F8gRKvmkrEtCZ6uwnfYL2TFmK0QZg==} - react-native-svg@15.2.0-rc.0: - resolution: {integrity: sha512-rA2milxKXUW+VDzd2y/kWRCS8EJLUAAaU5PwQ/xB2TnzwoW1ivU8hkgwqbBhmGmr8LEa9HJoPUnxD7H7yAVPdA==} + react-native-svg@15.3.0: + resolution: {integrity: sha512-mBHu/fdlzUbpGX8SZFxgbKvK/sgqLfDLP8uh8G7Us+zJgdjO8OSEeqHQs+kPRdQmdLJQiqPJX2WXgCl7ToTWqw==} peerDependencies: react: '*' react-native: '*' + react-native-test-app@3.7.4: + resolution: {integrity: sha512-I8Qts5QXVnzu5S70KD+DUn5CJ35KRJO7Sk5rdc2dkNVU5ZQeB9csl2VUBUDxYiyekvKKLJg4XCOJbjfHsxYfiA==} + engines: {node: '>=16.17'} + hasBin: true + peerDependencies: + '@callstack/react-native-visionos': 0.73 - 0.74 + '@expo/config-plugins': '>=5.0' + react: 17.0.1 - 18.2 + react-native: 0.66 - 0.74 || >=0.75.0-0 <0.75.0 + react-native-macos: ^0.0.0-0 || 0.66 || 0.68 || 0.71 - 0.73 + react-native-windows: ^0.0.0-0 || 0.66 - 0.74 + peerDependenciesMeta: + '@callstack/react-native-visionos': + optional: true + '@expo/config-plugins': + optional: true + react-native-macos: + optional: true + react-native-windows: + optional: true + react-native@0.74.1: resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} engines: {node: '>=18'} @@ -6771,6 +6800,10 @@ packages: resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -9093,6 +9126,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@rnx-kit/react-native-host@0.4.9(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))': + dependencies: + react-native: 0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0) + '@rsbuild/core@0.6.13': dependencies: '@rsbuild/shared': 0.6.13(@swc/helpers@0.5.3) @@ -14140,13 +14177,25 @@ snapshots: react-native-event-source@1.1.0: {} - react-native-svg@15.2.0-rc.0(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0): + react-native-svg@15.3.0(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0): dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 18.2.0 react-native: 0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0) + react-native-test-app@3.7.4(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0))(react@18.2.0): + dependencies: + '@rnx-kit/react-native-host': 0.4.9(react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0)) + ajv: 8.12.0 + cliui: 8.0.1 + fast-xml-parser: 4.3.2 + prompts: 2.4.2 + react: 18.2.0 + react-native: 0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0) + semver: 7.5.4 + uuid: 9.0.1 + react-native@0.74.1(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(@types/react@18.2.74)(react@18.2.0): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -15293,6 +15342,8 @@ snapshots: uuid@7.0.3: {} + uuid@9.0.1: {} + uvu@0.5.6: dependencies: dequal: 2.0.3