diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..6cd30c73e --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,76 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +React Native CodePush is a native module that enables over-the-air updates for React Native apps. It consists of native implementations for iOS (Objective-C), Android (Java), and Windows (C++), unified through a JavaScript bridge layer. + +## Development Commands + +### Testing +- `npm test` - Run all tests with TypeScript compilation +- `npm run test:android` - Run Android-specific tests +- `npm run test:ios` - Run iOS-specific tests +- `npm run test:setup-android` - Set up Android emulator for testing +- `npm run test:setup-ios` - Set up iOS simulator for testing + +### Build +- `npm run build` - Build TypeScript tests to bin/ directory +- `npm run tsc` - TypeScript compilation + +### Platform Testing +- Tests run on actual emulators/simulators with real React Native apps +- Test apps are created dynamically in `test/` directory +- Both old and new React Native architecture testing supported + +## Architecture + +### Core Components +- **JavaScript Bridge** (`CodePush.js`): Main API layer exposing update methods +- **Native Modules**: Platform-specific implementations handling file operations, bundle management +- **Update Manager**: Handles download, installation, and rollback logic +- **Acquisition SDK**: Manages server communication and update metadata + +### Platform Structure +- **iOS**: `ios/` - Objective-C implementation with CocoaPods integration +- **Android**: `android/` - Java implementation with Gradle plugin +- **Windows**: `windows/` - C++ implementation for Windows React Native +- **JavaScript**: Root level - TypeScript definitions and bridge code + +### Key Patterns +- **Higher-Order Component**: `codePush()` wrapper for automatic update management +- **Promise-based Native Bridge**: All native operations return promises +- **Platform Abstraction**: Unified JavaScript API with platform-specific implementations +- **Error Handling**: Automatic rollback on failed updates with telemetry + +### Testing Framework +- **Custom Test Runner**: TypeScript-based test framework in `test/` +- **Emulator Management**: Automated setup and teardown of test environments +- **Real App Testing**: Creates actual React Native apps for integration testing +- **Scenario Testing**: Update, rollback, and error scenarios + +### Build Integration +- **Android Gradle Plugin**: Automatically generates bundle hashes and processes assets +- **iOS CocoaPods**: Manages native dependencies and build configuration +- **Bundle Processing**: Automated zip creation and hash calculation for OTA updates + +## Development Workflow + +1. **Making Changes**: Edit native code or JavaScript bridge +2. **Testing**: Run platform-specific tests with real emulators +3. **Integration**: Test with actual React Native apps via test framework +4. **Validation**: Ensure compatibility with both RN architectures + +## Key Files +- `CodePush.js` - Main JavaScript API +- `test/TestRunner.ts` - Test framework entry point +- `android/build.gradle` - Android build configuration +- `ios/CodePush.podspec` - iOS CocoaPods specification +- `plugin.xml` - Cordova plugin configuration + +## Special Considerations +- Native module requires platform-specific knowledge (iOS/Android/Windows) +- Testing requires emulator setup and can be time-intensive +- Updates must be backward compatible with existing app installations +- Bundle hash calculation is critical for update integrity \ No newline at end of file diff --git a/Examples/CodePushDemoAppNewArch/.bundle/config b/Examples/CodePushDemo/.bundle/config similarity index 100% rename from Examples/CodePushDemoAppNewArch/.bundle/config rename to Examples/CodePushDemo/.bundle/config diff --git a/Examples/CodePushDemoAppNewArch/.eslintrc.js b/Examples/CodePushDemo/.eslintrc.js similarity index 100% rename from Examples/CodePushDemoAppNewArch/.eslintrc.js rename to Examples/CodePushDemo/.eslintrc.js diff --git a/Examples/CodePushDemoSwiftNewArch/.gitignore b/Examples/CodePushDemo/.gitignore similarity index 99% rename from Examples/CodePushDemoSwiftNewArch/.gitignore rename to Examples/CodePushDemo/.gitignore index d5ae45669..de9995595 100644 --- a/Examples/CodePushDemoSwiftNewArch/.gitignore +++ b/Examples/CodePushDemo/.gitignore @@ -33,6 +33,7 @@ local.properties .cxx/ *.keystore !debug.keystore +.kotlin/ # node.js # diff --git a/Examples/CodePushDemoSwiftNewArch/.prettierrc.js b/Examples/CodePushDemo/.prettierrc.js similarity index 64% rename from Examples/CodePushDemoSwiftNewArch/.prettierrc.js rename to Examples/CodePushDemo/.prettierrc.js index 2b540746a..06860c8d1 100644 --- a/Examples/CodePushDemoSwiftNewArch/.prettierrc.js +++ b/Examples/CodePushDemo/.prettierrc.js @@ -1,7 +1,5 @@ module.exports = { arrowParens: 'avoid', - bracketSameLine: true, - bracketSpacing: false, singleQuote: true, trailingComma: 'all', }; diff --git a/Examples/CodePushDemoAppNewArch/.watchmanconfig b/Examples/CodePushDemo/.watchmanconfig similarity index 100% rename from Examples/CodePushDemoAppNewArch/.watchmanconfig rename to Examples/CodePushDemo/.watchmanconfig diff --git a/Examples/CodePushDemo/App.tsx b/Examples/CodePushDemo/App.tsx new file mode 100644 index 000000000..5e963b129 --- /dev/null +++ b/Examples/CodePushDemo/App.tsx @@ -0,0 +1,45 @@ +/** + * Sample React Native App + * https://github.com/facebook/react-native + * + * @format + */ + +import { NewAppScreen } from '@react-native/new-app-screen'; +import { StatusBar, StyleSheet, useColorScheme, View } from 'react-native'; +import { + SafeAreaProvider, + useSafeAreaInsets, +} from 'react-native-safe-area-context'; + +function App() { + const isDarkMode = useColorScheme() === 'dark'; + + return ( + + + + + ); +} + +function AppContent() { + const safeAreaInsets = useSafeAreaInsets(); + + return ( + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + }, +}); + +export default App; diff --git a/Examples/CodePushDemoSwiftNewArch/Gemfile b/Examples/CodePushDemo/Gemfile similarity index 74% rename from Examples/CodePushDemoSwiftNewArch/Gemfile rename to Examples/CodePushDemo/Gemfile index 03278dd5e..6a4c5f171 100644 --- a/Examples/CodePushDemoSwiftNewArch/Gemfile +++ b/Examples/CodePushDemo/Gemfile @@ -8,3 +8,9 @@ gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' gem 'xcodeproj', '< 1.26.0' gem 'concurrent-ruby', '< 1.3.4' + +# Ruby 3.4.0 has removed some libraries from the standard library. +gem 'bigdecimal' +gem 'logger' +gem 'benchmark' +gem 'mutex_m' diff --git a/Examples/CodePushDemoSwiftNewArch/Gemfile.lock b/Examples/CodePushDemo/Gemfile.lock similarity index 87% rename from Examples/CodePushDemoSwiftNewArch/Gemfile.lock rename to Examples/CodePushDemo/Gemfile.lock index f123b222c..040b35d84 100644 --- a/Examples/CodePushDemoSwiftNewArch/Gemfile.lock +++ b/Examples/CodePushDemo/Gemfile.lock @@ -5,7 +5,7 @@ GEM base64 nkf rexml - activesupport (7.2.2.1) + activesupport (7.2.2.2) base64 benchmark (>= 0.3) bigdecimal @@ -23,9 +23,9 @@ GEM httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) - base64 (0.2.0) - benchmark (0.4.0) - bigdecimal (3.1.9) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (3.3.1) claide (1.1.0) cocoapods (1.15.2) addressable (~> 2.8) @@ -66,12 +66,12 @@ GEM cocoapods-try (1.2.0) colored2 (3.1.2) concurrent-ruby (1.3.3) - connection_pool (2.5.0) - drb (2.2.1) + connection_pool (2.5.4) + drb (2.2.3) escape (0.0.4) - ethon (0.16.0) + ethon (0.15.0) ffi (>= 1.15.0) - ffi (1.17.1) + ffi (1.17.2) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) @@ -79,9 +79,9 @@ GEM mutex_m i18n (1.14.7) concurrent-ruby (~> 1.0) - json (2.10.1) - logger (1.6.6) - minitest (5.25.4) + json (2.15.2) + logger (1.7.0) + minitest (5.26.0) molinillo (0.8.0) mutex_m (0.3.0) nanaimo (0.3.0) @@ -89,11 +89,11 @@ GEM netrc (0.11.0) nkf (0.2.0) public_suffix (4.0.7) - rexml (3.4.1) + rexml (3.4.4) ruby-macho (2.5.1) securerandom (0.4.1) - typhoeus (1.4.1) - ethon (>= 0.9.0) + typhoeus (1.5.0) + ethon (>= 0.9.0, < 0.16.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) xcodeproj (1.25.1) @@ -109,12 +109,16 @@ PLATFORMS DEPENDENCIES activesupport (>= 6.1.7.5, != 7.1.0) + benchmark + bigdecimal cocoapods (>= 1.13, != 1.15.1, != 1.15.0) concurrent-ruby (< 1.3.4) + logger + mutex_m xcodeproj (< 1.26.0) RUBY VERSION - ruby 3.3.6p108 + ruby 3.1.6p260 BUNDLED WITH - 2.6.2 + 2.5.9 diff --git a/Examples/CodePushDemoSwiftNewArch/README.md b/Examples/CodePushDemo/README.md similarity index 100% rename from Examples/CodePushDemoSwiftNewArch/README.md rename to Examples/CodePushDemo/README.md diff --git a/Examples/CodePushDemoSwiftNewArch/__tests__/App.test.tsx b/Examples/CodePushDemo/__tests__/App.test.tsx similarity index 100% rename from Examples/CodePushDemoSwiftNewArch/__tests__/App.test.tsx rename to Examples/CodePushDemo/__tests__/App.test.tsx diff --git a/Examples/CodePushDemoSwiftNewArch/android/app/build.gradle b/Examples/CodePushDemo/android/app/build.gradle similarity index 95% rename from Examples/CodePushDemoSwiftNewArch/android/app/build.gradle rename to Examples/CodePushDemo/android/app/build.gradle index e961e490d..9950c6533 100644 --- a/Examples/CodePushDemoSwiftNewArch/android/app/build.gradle +++ b/Examples/CodePushDemo/android/app/build.gradle @@ -63,23 +63,23 @@ 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:+'` + * `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+` * * 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:+' +def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+' android { ndkVersion rootProject.ext.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion compileSdk rootProject.ext.compileSdkVersion - namespace "com.codepushdemoswiftnewarch" + namespace "com.codepushdemo" defaultConfig { - applicationId "com.codepushdemoswiftnewarch" + applicationId "com.codepushdemo" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 diff --git a/Examples/CodePushDemoApp/android/app/debug.keystore b/Examples/CodePushDemo/android/app/debug.keystore similarity index 100% rename from Examples/CodePushDemoApp/android/app/debug.keystore rename to Examples/CodePushDemo/android/app/debug.keystore diff --git a/Examples/CodePushDemoApp/android/app/proguard-rules.pro b/Examples/CodePushDemo/android/app/proguard-rules.pro similarity index 100% rename from Examples/CodePushDemoApp/android/app/proguard-rules.pro rename to Examples/CodePushDemo/android/app/proguard-rules.pro diff --git a/Examples/CodePushDemoAppNewArch/android/app/src/main/AndroidManifest.xml b/Examples/CodePushDemo/android/app/src/main/AndroidManifest.xml similarity index 94% rename from Examples/CodePushDemoAppNewArch/android/app/src/main/AndroidManifest.xml rename to Examples/CodePushDemo/android/app/src/main/AndroidManifest.xml index e1892528b..fb78f3974 100644 --- a/Examples/CodePushDemoAppNewArch/android/app/src/main/AndroidManifest.xml +++ b/Examples/CodePushDemo/android/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme" + android:usesCleartextTraffic="${usesCleartextTraffic}" android:supportsRtl="true"> + CodePushDemo + CodePushDeploymentKey + diff --git a/Examples/CodePushDemoAppNewArch/android/app/src/main/res/values/styles.xml b/Examples/CodePushDemo/android/app/src/main/res/values/styles.xml similarity index 100% rename from Examples/CodePushDemoAppNewArch/android/app/src/main/res/values/styles.xml rename to Examples/CodePushDemo/android/app/src/main/res/values/styles.xml diff --git a/Examples/CodePushDemoSwiftNewArch/android/build.gradle b/Examples/CodePushDemo/android/build.gradle similarity index 76% rename from Examples/CodePushDemoSwiftNewArch/android/build.gradle rename to Examples/CodePushDemo/android/build.gradle index a62d6daa4..dad99b022 100644 --- a/Examples/CodePushDemoSwiftNewArch/android/build.gradle +++ b/Examples/CodePushDemo/android/build.gradle @@ -1,11 +1,11 @@ buildscript { ext { - buildToolsVersion = "35.0.0" + buildToolsVersion = "36.0.0" minSdkVersion = 24 - compileSdkVersion = 35 - targetSdkVersion = 34 + compileSdkVersion = 36 + targetSdkVersion = 36 ndkVersion = "27.1.12297006" - kotlinVersion = "2.0.21" + kotlinVersion = "2.1.20" } repositories { google() diff --git a/Examples/CodePushDemoAppNewArch/android/gradle.properties b/Examples/CodePushDemo/android/gradle.properties similarity index 87% rename from Examples/CodePushDemoAppNewArch/android/gradle.properties rename to Examples/CodePushDemo/android/gradle.properties index 5e24e3aa8..9afe61598 100644 --- a/Examples/CodePushDemoAppNewArch/android/gradle.properties +++ b/Examples/CodePushDemo/android/gradle.properties @@ -37,3 +37,8 @@ newArchEnabled=true # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. hermesEnabled=true + +# Use this property to enable edge-to-edge display support. +# This allows your app to draw behind system bars for an immersive UI. +# Note: Only works with ReactActivity and should not be used with custom Activity. +edgeToEdgeEnabled=false diff --git a/Examples/CodePushDemo/android/gradle/wrapper/gradle-wrapper.jar b/Examples/CodePushDemo/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 000000000..8bdaf60c7 Binary files /dev/null and b/Examples/CodePushDemo/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Examples/CodePushDemoAppNewArch/android/gradle/wrapper/gradle-wrapper.properties b/Examples/CodePushDemo/android/gradle/wrapper/gradle-wrapper.properties similarity index 93% rename from Examples/CodePushDemoAppNewArch/android/gradle/wrapper/gradle-wrapper.properties rename to Examples/CodePushDemo/android/gradle/wrapper/gradle-wrapper.properties index 79eb9d003..2a84e188b 100644 --- a/Examples/CodePushDemoAppNewArch/android/gradle/wrapper/gradle-wrapper.properties +++ b/Examples/CodePushDemo/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.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/Examples/CodePushDemoAppNewArch/android/gradlew b/Examples/CodePushDemo/android/gradlew similarity index 96% rename from Examples/CodePushDemoAppNewArch/android/gradlew rename to Examples/CodePushDemo/android/gradlew index f5feea6d6..ef07e0162 100755 --- a/Examples/CodePushDemoAppNewArch/android/gradlew +++ b/Examples/CodePushDemo/android/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 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. @@ -86,8 +86,7 @@ done # 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 -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -206,7 +205,7 @@ fi 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, +# * DEFAULT_JVM_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. @@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/Examples/CodePushDemoAppNewArch/android/gradlew.bat b/Examples/CodePushDemo/android/gradlew.bat similarity index 86% rename from Examples/CodePushDemoAppNewArch/android/gradlew.bat rename to Examples/CodePushDemo/android/gradlew.bat index 9b42019c7..11bf18292 100644 --- a/Examples/CodePushDemoAppNewArch/android/gradlew.bat +++ b/Examples/CodePushDemo/android/gradlew.bat @@ -1,3 +1,8 @@ +@REM Copyright (c) Meta Platforms, Inc. and affiliates. +@REM +@REM This source code is licensed under the MIT license found in the +@REM LICENSE file in the root directory of this source tree. + @rem @rem Copyright 2015 the original author or authors. @rem @@ -70,11 +75,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/Examples/CodePushDemoAppNewArch/android/settings.gradle b/Examples/CodePushDemo/android/settings.gradle similarity index 87% rename from Examples/CodePushDemoAppNewArch/android/settings.gradle rename to Examples/CodePushDemo/android/settings.gradle index 9ea964767..3fc13acd6 100644 --- a/Examples/CodePushDemoAppNewArch/android/settings.gradle +++ b/Examples/CodePushDemo/android/settings.gradle @@ -1,6 +1,6 @@ pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } plugins { id("com.facebook.react.settings") } extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } -rootProject.name = 'CodePushDemoAppNewArch' +rootProject.name = 'CodePushDemo' include ':app' includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/Examples/CodePushDemo/app.json b/Examples/CodePushDemo/app.json new file mode 100644 index 000000000..05cc023ee --- /dev/null +++ b/Examples/CodePushDemo/app.json @@ -0,0 +1,4 @@ +{ + "name": "CodePushDemo", + "displayName": "CodePushDemo" +} diff --git a/Examples/CodePushDemoAppNewArch/babel.config.js b/Examples/CodePushDemo/babel.config.js similarity index 100% rename from Examples/CodePushDemoAppNewArch/babel.config.js rename to Examples/CodePushDemo/babel.config.js diff --git a/Examples/CodePushDemoAppNewArch/index.js b/Examples/CodePushDemo/index.js similarity index 51% rename from Examples/CodePushDemoAppNewArch/index.js rename to Examples/CodePushDemo/index.js index a850d031d..9b7393291 100644 --- a/Examples/CodePushDemoAppNewArch/index.js +++ b/Examples/CodePushDemo/index.js @@ -2,8 +2,8 @@ * @format */ -import {AppRegistry} from 'react-native'; +import { AppRegistry } from 'react-native'; import App from './App'; -import {name as appName} from './app.json'; +import { name as appName } from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/Examples/CodePushDemoAppNewArch/ios/.xcode.env b/Examples/CodePushDemo/ios/.xcode.env similarity index 100% rename from Examples/CodePushDemoAppNewArch/ios/.xcode.env rename to Examples/CodePushDemo/ios/.xcode.env diff --git a/Examples/CodePushDemoSwiftNewArch/ios/CodePushDemoSwiftNewArch.xcodeproj/project.pbxproj b/Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/project.pbxproj similarity index 78% rename from Examples/CodePushDemoSwiftNewArch/ios/CodePushDemoSwiftNewArch.xcodeproj/project.pbxproj rename to Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/project.pbxproj index 4b7854612..ae39e1cad 100644 --- a/Examples/CodePushDemoSwiftNewArch/ios/CodePushDemoSwiftNewArch.xcodeproj/project.pbxproj +++ b/Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/project.pbxproj @@ -7,23 +7,23 @@ objects = { /* Begin PBXBuildFile section */ - 0C80B921A6F3F58F76C31292 /* libPods-CodePushDemoSwiftNewArch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemoSwiftNewArch.a */; }; + 0C80B921A6F3F58F76C31292 /* libPods-CodePushDemo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemo.a */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - B980CFA8E17D5FE91125FA34 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; + C62567501685D39B5BA8EDC3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 13B07F961A680F5B00A75B9A /* CodePushDemoSwiftNewArch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodePushDemoSwiftNewArch.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = CodePushDemoSwiftNewArch/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = CodePushDemoSwiftNewArch/Info.plist; sourceTree = ""; }; - 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = CodePushDemoSwiftNewArch/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 3B4392A12AC88292D35C810B /* Pods-CodePushDemoSwiftNewArch.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodePushDemoSwiftNewArch.debug.xcconfig"; path = "Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-CodePushDemoSwiftNewArch.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodePushDemoSwiftNewArch.release.xcconfig"; path = "Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch.release.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemoSwiftNewArch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CodePushDemoSwiftNewArch.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = CodePushDemoSwiftNewArch/AppDelegate.swift; sourceTree = ""; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = CodePushDemoSwiftNewArch/LaunchScreen.storyboard; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* CodePushDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CodePushDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = CodePushDemo/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = CodePushDemo/Info.plist; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = CodePushDemo/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3B4392A12AC88292D35C810B /* Pods-CodePushDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodePushDemo.debug.xcconfig"; path = "Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-CodePushDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CodePushDemo.release.xcconfig"; path = "Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo.release.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CodePushDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = CodePushDemo/AppDelegate.swift; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = CodePushDemo/LaunchScreen.storyboard; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -32,14 +32,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C80B921A6F3F58F76C31292 /* libPods-CodePushDemoSwiftNewArch.a in Frameworks */, + 0C80B921A6F3F58F76C31292 /* libPods-CodePushDemo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 13B07FAE1A68108700A75B9A /* CodePushDemoSwiftNewArch */ = { + 13B07FAE1A68108700A75B9A /* CodePushDemo */ = { isa = PBXGroup; children = ( 13B07FB51A68108700A75B9A /* Images.xcassets */, @@ -48,14 +48,14 @@ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, ); - name = CodePushDemoSwiftNewArch; + name = CodePushDemo; sourceTree = ""; }; 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemoSwiftNewArch.a */, + 5DCACB8F33CDC322A6C60F78 /* libPods-CodePushDemo.a */, ); name = Frameworks; sourceTree = ""; @@ -70,7 +70,7 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 13B07FAE1A68108700A75B9A /* CodePushDemoSwiftNewArch */, + 13B07FAE1A68108700A75B9A /* CodePushDemo */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, @@ -84,7 +84,7 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* CodePushDemoSwiftNewArch.app */, + 13B07F961A680F5B00A75B9A /* CodePushDemo.app */, ); name = Products; sourceTree = ""; @@ -92,8 +92,8 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 3B4392A12AC88292D35C810B /* Pods-CodePushDemoSwiftNewArch.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-CodePushDemoSwiftNewArch.release.xcconfig */, + 3B4392A12AC88292D35C810B /* Pods-CodePushDemo.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-CodePushDemo.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -101,9 +101,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 13B07F861A680F5B00A75B9A /* CodePushDemoSwiftNewArch */ = { + 13B07F861A680F5B00A75B9A /* CodePushDemo */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CodePushDemoSwiftNewArch" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CodePushDemo" */; buildPhases = ( C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, @@ -117,9 +117,9 @@ ); dependencies = ( ); - name = CodePushDemoSwiftNewArch; - productName = CodePushDemoSwiftNewArch; - productReference = 13B07F961A680F5B00A75B9A /* CodePushDemoSwiftNewArch.app */; + name = CodePushDemo; + productName = CodePushDemo; + productReference = 13B07F961A680F5B00A75B9A /* CodePushDemo.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -135,7 +135,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemoSwiftNewArch" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemo" */; compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -148,7 +148,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* CodePushDemoSwiftNewArch */, + 13B07F861A680F5B00A75B9A /* CodePushDemo */, ); }; /* End PBXProject section */ @@ -160,7 +160,7 @@ files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - B980CFA8E17D5FE91125FA34 /* PrivacyInfo.xcprivacy in Resources */, + C62567501685D39B5BA8EDC3 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -189,15 +189,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { @@ -215,7 +215,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-CodePushDemoSwiftNewArch-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-CodePushDemo-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -228,15 +228,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CodePushDemoSwiftNewArch/Pods-CodePushDemoSwiftNewArch-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CodePushDemo/Pods-CodePushDemo-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -255,13 +255,13 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-CodePushDemoSwiftNewArch.debug.xcconfig */; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-CodePushDemo.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; ENABLE_BITCODE = NO; - INFOPLIST_FILE = CodePushDemoSwiftNewArch/Info.plist; + INFOPLIST_FILE = CodePushDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -274,7 +274,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CodePushDemoSwiftNewArch; + PRODUCT_NAME = CodePushDemo; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -283,12 +283,12 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-CodePushDemoSwiftNewArch.release.xcconfig */; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-CodePushDemo.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = CodePushDemoSwiftNewArch/Info.plist; + INFOPLIST_FILE = CodePushDemo/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -301,7 +301,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = CodePushDemoSwiftNewArch; + PRODUCT_NAME = CodePushDemo; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; @@ -376,10 +376,6 @@ "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; @@ -448,10 +444,6 @@ "-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; @@ -462,7 +454,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CodePushDemoSwiftNewArch" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "CodePushDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -471,7 +463,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemoSwiftNewArch" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp.xcscheme b/Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/xcshareddata/xcschemes/CodePushDemo.xcscheme similarity index 78% rename from Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp.xcscheme rename to Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/xcshareddata/xcschemes/CodePushDemo.xcscheme index a77ee94e1..dcaf6ade0 100644 --- a/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp.xcscheme +++ b/Examples/CodePushDemo/ios/CodePushDemo.xcodeproj/xcshareddata/xcschemes/CodePushDemo.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "CodePushDemo.app" + BlueprintName = "CodePushDemo" + ReferencedContainer = "container:CodePushDemo.xcodeproj"> @@ -33,15 +33,15 @@ + BuildableName = "CodePushDemoTests.xctest" + BlueprintName = "CodePushDemoTests" + ReferencedContainer = "container:CodePushDemo.xcodeproj"> + BuildableName = "CodePushDemo.app" + BlueprintName = "CodePushDemo" + ReferencedContainer = "container:CodePushDemo.xcodeproj"> @@ -72,9 +72,9 @@ + BuildableName = "CodePushDemo.app" + BlueprintName = "CodePushDemo" + ReferencedContainer = "container:CodePushDemo.xcodeproj"> diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcworkspace/contents.xcworkspacedata b/Examples/CodePushDemo/ios/CodePushDemo.xcworkspace/contents.xcworkspacedata similarity index 77% rename from Examples/CodePushDemoApp/ios/CodePushDemoApp.xcworkspace/contents.xcworkspacedata rename to Examples/CodePushDemo/ios/CodePushDemo.xcworkspace/contents.xcworkspacedata index 99bfe54cf..14a279e29 100644 --- a/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcworkspace/contents.xcworkspacedata +++ b/Examples/CodePushDemo/ios/CodePushDemo.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:CodePushDemo.xcodeproj"> diff --git a/Examples/CodePushDemo/ios/CodePushDemo/AppDelegate.swift b/Examples/CodePushDemo/ios/CodePushDemo/AppDelegate.swift new file mode 100644 index 000000000..ccd7ba326 --- /dev/null +++ b/Examples/CodePushDemo/ios/CodePushDemo/AppDelegate.swift @@ -0,0 +1,49 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider +import CodePush + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + var window: UIWindow? + + var reactNativeDelegate: ReactNativeDelegate? + var reactNativeFactory: RCTReactNativeFactory? + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + let delegate = ReactNativeDelegate() + let factory = RCTReactNativeFactory(delegate: delegate) + delegate.dependencyProvider = RCTAppDependencyProvider() + + reactNativeDelegate = delegate + reactNativeFactory = factory + + window = UIWindow(frame: UIScreen.main.bounds) + + factory.startReactNative( + withModuleName: "CodePushDemo", + in: window, + launchOptions: launchOptions + ) + + return true + } +} + +class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + CodePush.bundleURL() +#endif + } +} diff --git a/Examples/CodePushDemoAppNewArch/ios/CodePushDemoAppNewArch/Images.xcassets/AppIcon.appiconset/Contents.json b/Examples/CodePushDemo/ios/CodePushDemo/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Examples/CodePushDemoAppNewArch/ios/CodePushDemoAppNewArch/Images.xcassets/AppIcon.appiconset/Contents.json rename to Examples/CodePushDemo/ios/CodePushDemo/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp/Images.xcassets/Contents.json b/Examples/CodePushDemo/ios/CodePushDemo/Images.xcassets/Contents.json similarity index 100% rename from Examples/CodePushDemoApp/ios/CodePushDemoApp/Images.xcassets/Contents.json rename to Examples/CodePushDemo/ios/CodePushDemo/Images.xcassets/Contents.json diff --git a/Examples/CodePushDemoAppNewArch/ios/CodePushDemoAppNewArch/Info.plist b/Examples/CodePushDemo/ios/CodePushDemo/Info.plist similarity index 91% rename from Examples/CodePushDemoAppNewArch/ios/CodePushDemoAppNewArch/Info.plist rename to Examples/CodePushDemo/ios/CodePushDemo/Info.plist index cb6895fea..0a676036d 100644 --- a/Examples/CodePushDemoAppNewArch/ios/CodePushDemoAppNewArch/Info.plist +++ b/Examples/CodePushDemo/ios/CodePushDemo/Info.plist @@ -2,10 +2,12 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion en CFBundleDisplayName - CodePushDemoAppNewArch + CodePushDemo CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -26,7 +28,6 @@ NSAppTransportSecurity - NSAllowsArbitraryLoads NSAllowsLocalNetworking @@ -34,6 +35,8 @@ NSLocationWhenInUseUsageDescription + RCTNewArchEnabled + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp/LaunchScreen.storyboard b/Examples/CodePushDemo/ios/CodePushDemo/LaunchScreen.storyboard similarity index 95% rename from Examples/CodePushDemoApp/ios/CodePushDemoApp/LaunchScreen.storyboard rename to Examples/CodePushDemo/ios/CodePushDemo/LaunchScreen.storyboard index eb6b120a5..c30b34cf9 100644 --- a/Examples/CodePushDemoApp/ios/CodePushDemoApp/LaunchScreen.storyboard +++ b/Examples/CodePushDemo/ios/CodePushDemo/LaunchScreen.storyboard @@ -16,7 +16,7 @@ -