mirror of
				https://gitcode.com/gh_mirrors/re/react-native-pushy.git
				synced 2025-10-31 21:33:12 +08:00 
			
		
		
		
	Update example 0.68
This commit is contained in:
		
							
								
								
									
										2
									
								
								Example/testHotUpdate/.bundle/config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Example/testHotUpdate/.bundle/config
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | BUNDLE_PATH: "vendor/bundle" | ||||||
|  | BUNDLE_FORCE_RUBY_PLATFORM: 1 | ||||||
							
								
								
									
										67
									
								
								Example/testHotUpdate/.flowconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								Example/testHotUpdate/.flowconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | [ignore] | ||||||
|  | ; We fork some components by platform | ||||||
|  | .*/*[.]android.js | ||||||
|  |  | ||||||
|  | ; Ignore "BUCK" generated dirs | ||||||
|  | <PROJECT_ROOT>/\.buckd/ | ||||||
|  |  | ||||||
|  | ; Ignore polyfills | ||||||
|  | node_modules/react-native/Libraries/polyfills/.* | ||||||
|  |  | ||||||
|  | ; Flow doesn't support platforms | ||||||
|  | .*/Libraries/Utilities/LoadingView.js | ||||||
|  |  | ||||||
|  | .*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$ | ||||||
|  |  | ||||||
|  | [untyped] | ||||||
|  | .*/node_modules/@react-native-community/cli/.*/.* | ||||||
|  |  | ||||||
|  | [include] | ||||||
|  |  | ||||||
|  | [libs] | ||||||
|  | node_modules/react-native/interface.js | ||||||
|  | node_modules/react-native/flow/ | ||||||
|  |  | ||||||
|  | [options] | ||||||
|  | emoji=true | ||||||
|  |  | ||||||
|  | exact_by_default=true | ||||||
|  |  | ||||||
|  | format.bracket_spacing=false | ||||||
|  |  | ||||||
|  | module.file_ext=.js | ||||||
|  | module.file_ext=.json | ||||||
|  | module.file_ext=.ios.js | ||||||
|  |  | ||||||
|  | munge_underscores=true | ||||||
|  |  | ||||||
|  | module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1' | ||||||
|  | module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub' | ||||||
|  |  | ||||||
|  | suppress_type=$FlowIssue | ||||||
|  | suppress_type=$FlowFixMe | ||||||
|  | suppress_type=$FlowFixMeProps | ||||||
|  | suppress_type=$FlowFixMeState | ||||||
|  |  | ||||||
|  | [lints] | ||||||
|  | sketchy-null-number=warn | ||||||
|  | sketchy-null-mixed=warn | ||||||
|  | sketchy-number=warn | ||||||
|  | untyped-type-import=warn | ||||||
|  | nonstrict-import=warn | ||||||
|  | deprecated-type=warn | ||||||
|  | unsafe-getters-setters=warn | ||||||
|  | unnecessary-invariant=warn | ||||||
|  | signature-verification-failure=warn | ||||||
|  |  | ||||||
|  | [strict] | ||||||
|  | deprecated-type | ||||||
|  | nonstrict-import | ||||||
|  | sketchy-null | ||||||
|  | unclear-type | ||||||
|  | unsafe-getters-setters | ||||||
|  | untyped-import | ||||||
|  | untyped-type-import | ||||||
|  |  | ||||||
|  | [version] | ||||||
|  | ^0.170.0 | ||||||
							
								
								
									
										3
									
								
								Example/testHotUpdate/.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								Example/testHotUpdate/.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +0,0 @@ | |||||||
| # Windows files should use crlf line endings |  | ||||||
| # https://help.github.com/articles/dealing-with-line-endings/ |  | ||||||
| *.bat text eol=crlf |  | ||||||
							
								
								
									
										7
									
								
								Example/testHotUpdate/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								Example/testHotUpdate/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -28,6 +28,7 @@ build/ | |||||||
| .gradle | .gradle | ||||||
| local.properties | local.properties | ||||||
| *.iml | *.iml | ||||||
|  | *.hprof | ||||||
|  |  | ||||||
| # node.js | # node.js | ||||||
| # | # | ||||||
| @@ -55,8 +56,6 @@ buck-out/ | |||||||
| # Bundle artifact | # Bundle artifact | ||||||
| *.jsbundle | *.jsbundle | ||||||
|  |  | ||||||
| # CocoaPods | # Ruby / CocoaPods | ||||||
| /ios/Pods/ | /ios/Pods/ | ||||||
|  | /vendor/bundle/ | ||||||
|  |  | ||||||
| .pushy |  | ||||||
|   | |||||||
| @@ -1 +0,0 @@ | |||||||
| registry=https://registry.npmmirror.com/ |  | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| module.exports = { | module.exports = { | ||||||
|  |   arrowParens: 'avoid', | ||||||
|  |   bracketSameLine: true, | ||||||
|   bracketSpacing: false, |   bracketSpacing: false, | ||||||
|   jsxBracketSameLine: true, |  | ||||||
|   singleQuote: true, |   singleQuote: true, | ||||||
|   trailingComma: 'all', |   trailingComma: 'all', | ||||||
|   arrowParens: 'avoid', |  | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								Example/testHotUpdate/.ruby-version
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Example/testHotUpdate/.ruby-version
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | 2.7.4 | ||||||
							
								
								
									
										112
									
								
								Example/testHotUpdate/App.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								Example/testHotUpdate/App.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | |||||||
|  | /** | ||||||
|  |  * Sample React Native App | ||||||
|  |  * https://github.com/facebook/react-native | ||||||
|  |  * | ||||||
|  |  * @format | ||||||
|  |  * @flow strict-local | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import React from 'react'; | ||||||
|  | import type {Node} from 'react'; | ||||||
|  | import { | ||||||
|  |   SafeAreaView, | ||||||
|  |   ScrollView, | ||||||
|  |   StatusBar, | ||||||
|  |   StyleSheet, | ||||||
|  |   Text, | ||||||
|  |   useColorScheme, | ||||||
|  |   View, | ||||||
|  | } from 'react-native'; | ||||||
|  |  | ||||||
|  | import { | ||||||
|  |   Colors, | ||||||
|  |   DebugInstructions, | ||||||
|  |   Header, | ||||||
|  |   LearnMoreLinks, | ||||||
|  |   ReloadInstructions, | ||||||
|  | } from 'react-native/Libraries/NewAppScreen'; | ||||||
|  |  | ||||||
|  | const Section = ({children, title}): Node => { | ||||||
|  |   const isDarkMode = useColorScheme() === 'dark'; | ||||||
|  |   return ( | ||||||
|  |     <View style={styles.sectionContainer}> | ||||||
|  |       <Text | ||||||
|  |         style={[ | ||||||
|  |           styles.sectionTitle, | ||||||
|  |           { | ||||||
|  |             color: isDarkMode ? Colors.white : Colors.black, | ||||||
|  |           }, | ||||||
|  |         ]}> | ||||||
|  |         {title} | ||||||
|  |       </Text> | ||||||
|  |       <Text | ||||||
|  |         style={[ | ||||||
|  |           styles.sectionDescription, | ||||||
|  |           { | ||||||
|  |             color: isDarkMode ? Colors.light : Colors.dark, | ||||||
|  |           }, | ||||||
|  |         ]}> | ||||||
|  |         {children} | ||||||
|  |       </Text> | ||||||
|  |     </View> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | const App: () => Node = () => { | ||||||
|  |   const isDarkMode = useColorScheme() === 'dark'; | ||||||
|  |  | ||||||
|  |   const backgroundStyle = { | ||||||
|  |     backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   return ( | ||||||
|  |     <SafeAreaView style={backgroundStyle}> | ||||||
|  |       <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} /> | ||||||
|  |       <ScrollView | ||||||
|  |         contentInsetAdjustmentBehavior="automatic" | ||||||
|  |         style={backgroundStyle}> | ||||||
|  |         <Header /> | ||||||
|  |         <View | ||||||
|  |           style={{ | ||||||
|  |             backgroundColor: isDarkMode ? Colors.black : Colors.white, | ||||||
|  |           }}> | ||||||
|  |           <Section title="Step One"> | ||||||
|  |             Edit <Text style={styles.highlight}>App.js</Text> to change this | ||||||
|  |             screen and then come back to see your edits. | ||||||
|  |           </Section> | ||||||
|  |           <Section title="See Your Changes"> | ||||||
|  |             <ReloadInstructions /> | ||||||
|  |           </Section> | ||||||
|  |           <Section title="Debug"> | ||||||
|  |             <DebugInstructions /> | ||||||
|  |           </Section> | ||||||
|  |           <Section title="Learn More"> | ||||||
|  |             Read the docs to discover what to do next: | ||||||
|  |           </Section> | ||||||
|  |           <LearnMoreLinks /> | ||||||
|  |         </View> | ||||||
|  |       </ScrollView> | ||||||
|  |     </SafeAreaView> | ||||||
|  |   ); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | const styles = StyleSheet.create({ | ||||||
|  |   sectionContainer: { | ||||||
|  |     marginTop: 32, | ||||||
|  |     paddingHorizontal: 24, | ||||||
|  |   }, | ||||||
|  |   sectionTitle: { | ||||||
|  |     fontSize: 24, | ||||||
|  |     fontWeight: '600', | ||||||
|  |   }, | ||||||
|  |   sectionDescription: { | ||||||
|  |     marginTop: 8, | ||||||
|  |     fontSize: 18, | ||||||
|  |     fontWeight: '400', | ||||||
|  |   }, | ||||||
|  |   highlight: { | ||||||
|  |     fontWeight: '700', | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | export default App; | ||||||
							
								
								
									
										6
									
								
								Example/testHotUpdate/Gemfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Example/testHotUpdate/Gemfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | source 'https://rubygems.org' | ||||||
|  |  | ||||||
|  | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version | ||||||
|  | ruby '2.7.4' | ||||||
|  |  | ||||||
|  | gem 'cocoapods', '~> 1.11', '>= 1.11.2' | ||||||
							
								
								
									
										100
									
								
								Example/testHotUpdate/Gemfile.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								Example/testHotUpdate/Gemfile.lock
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | |||||||
|  | GEM | ||||||
|  |   remote: https://rubygems.org/ | ||||||
|  |   specs: | ||||||
|  |     CFPropertyList (3.0.5) | ||||||
|  |       rexml | ||||||
|  |     activesupport (6.1.5.1) | ||||||
|  |       concurrent-ruby (~> 1.0, >= 1.0.2) | ||||||
|  |       i18n (>= 1.6, < 2) | ||||||
|  |       minitest (>= 5.1) | ||||||
|  |       tzinfo (~> 2.0) | ||||||
|  |       zeitwerk (~> 2.3) | ||||||
|  |     addressable (2.8.0) | ||||||
|  |       public_suffix (>= 2.0.2, < 5.0) | ||||||
|  |     algoliasearch (1.27.5) | ||||||
|  |       httpclient (~> 2.8, >= 2.8.3) | ||||||
|  |       json (>= 1.5.1) | ||||||
|  |     atomos (0.1.3) | ||||||
|  |     claide (1.1.0) | ||||||
|  |     cocoapods (1.11.3) | ||||||
|  |       addressable (~> 2.8) | ||||||
|  |       claide (>= 1.0.2, < 2.0) | ||||||
|  |       cocoapods-core (= 1.11.3) | ||||||
|  |       cocoapods-deintegrate (>= 1.0.3, < 2.0) | ||||||
|  |       cocoapods-downloader (>= 1.4.0, < 2.0) | ||||||
|  |       cocoapods-plugins (>= 1.0.0, < 2.0) | ||||||
|  |       cocoapods-search (>= 1.0.0, < 2.0) | ||||||
|  |       cocoapods-trunk (>= 1.4.0, < 2.0) | ||||||
|  |       cocoapods-try (>= 1.1.0, < 2.0) | ||||||
|  |       colored2 (~> 3.1) | ||||||
|  |       escape (~> 0.0.4) | ||||||
|  |       fourflusher (>= 2.3.0, < 3.0) | ||||||
|  |       gh_inspector (~> 1.0) | ||||||
|  |       molinillo (~> 0.8.0) | ||||||
|  |       nap (~> 1.0) | ||||||
|  |       ruby-macho (>= 1.0, < 3.0) | ||||||
|  |       xcodeproj (>= 1.21.0, < 2.0) | ||||||
|  |     cocoapods-core (1.11.3) | ||||||
|  |       activesupport (>= 5.0, < 7) | ||||||
|  |       addressable (~> 2.8) | ||||||
|  |       algoliasearch (~> 1.0) | ||||||
|  |       concurrent-ruby (~> 1.1) | ||||||
|  |       fuzzy_match (~> 2.0.4) | ||||||
|  |       nap (~> 1.0) | ||||||
|  |       netrc (~> 0.11) | ||||||
|  |       public_suffix (~> 4.0) | ||||||
|  |       typhoeus (~> 1.0) | ||||||
|  |     cocoapods-deintegrate (1.0.5) | ||||||
|  |     cocoapods-downloader (1.6.3) | ||||||
|  |     cocoapods-plugins (1.0.0) | ||||||
|  |       nap | ||||||
|  |     cocoapods-search (1.0.1) | ||||||
|  |     cocoapods-trunk (1.6.0) | ||||||
|  |       nap (>= 0.8, < 2.0) | ||||||
|  |       netrc (~> 0.11) | ||||||
|  |     cocoapods-try (1.2.0) | ||||||
|  |     colored2 (3.1.2) | ||||||
|  |     concurrent-ruby (1.1.10) | ||||||
|  |     escape (0.0.4) | ||||||
|  |     ethon (0.15.0) | ||||||
|  |       ffi (>= 1.15.0) | ||||||
|  |     ffi (1.15.5) | ||||||
|  |     fourflusher (2.3.1) | ||||||
|  |     fuzzy_match (2.0.4) | ||||||
|  |     gh_inspector (1.1.3) | ||||||
|  |     httpclient (2.8.3) | ||||||
|  |     i18n (1.10.0) | ||||||
|  |       concurrent-ruby (~> 1.0) | ||||||
|  |     json (2.6.1) | ||||||
|  |     minitest (5.15.0) | ||||||
|  |     molinillo (0.8.0) | ||||||
|  |     nanaimo (0.3.0) | ||||||
|  |     nap (1.1.0) | ||||||
|  |     netrc (0.11.0) | ||||||
|  |     public_suffix (4.0.7) | ||||||
|  |     rexml (3.2.5) | ||||||
|  |     ruby-macho (2.5.1) | ||||||
|  |     typhoeus (1.4.0) | ||||||
|  |       ethon (>= 0.9.0) | ||||||
|  |     tzinfo (2.0.4) | ||||||
|  |       concurrent-ruby (~> 1.0) | ||||||
|  |     xcodeproj (1.21.0) | ||||||
|  |       CFPropertyList (>= 2.3.3, < 4.0) | ||||||
|  |       atomos (~> 0.1.3) | ||||||
|  |       claide (>= 1.0.2, < 2.0) | ||||||
|  |       colored2 (~> 3.1) | ||||||
|  |       nanaimo (~> 0.3.0) | ||||||
|  |       rexml (~> 3.2.4) | ||||||
|  |     zeitwerk (2.5.4) | ||||||
|  |  | ||||||
|  | PLATFORMS | ||||||
|  |   ruby | ||||||
|  |  | ||||||
|  | DEPENDENCIES | ||||||
|  |   cocoapods (~> 1.11, >= 1.11.2) | ||||||
|  |  | ||||||
|  | RUBY VERSION | ||||||
|  |    ruby 2.7.4p191 | ||||||
|  |  | ||||||
|  | BUNDLED WITH | ||||||
|  |    2.2.27 | ||||||
							
								
								
									
										14
									
								
								Example/testHotUpdate/__tests__/App-test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Example/testHotUpdate/__tests__/App-test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | /** | ||||||
|  |  * @format | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | import 'react-native'; | ||||||
|  | import React from 'react'; | ||||||
|  | import App from '../App'; | ||||||
|  |  | ||||||
|  | // Note: test renderer must be required after react-native. | ||||||
|  | import renderer from 'react-test-renderer'; | ||||||
|  |  | ||||||
|  | it('renders correctly', () => { | ||||||
|  |   renderer.create(<App />); | ||||||
|  | }); | ||||||
| @@ -1,6 +1,7 @@ | |||||||
| apply plugin: "com.android.application" | apply plugin: "com.android.application" | ||||||
|  |  | ||||||
| import com.android.build.OutputFile | import com.android.build.OutputFile | ||||||
|  | import org.apache.tools.ant.taskdefs.condition.Os | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets |  * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets | ||||||
| @@ -114,20 +115,23 @@ def jscFlavor = 'org.webkit:android-jsc:+' | |||||||
| /** | /** | ||||||
|  * Whether to enable the Hermes VM. |  * Whether to enable the Hermes VM. | ||||||
|  * |  * | ||||||
|  * This should be set on project.ext.react and mirrored here.  If it is not set |  * This should be set on project.ext.react and that value will be read here. If it is not set | ||||||
|  * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode |  * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode | ||||||
|  * and the benefits of using Hermes will therefore be sharply reduced. |  * and the benefits of using Hermes will therefore be sharply reduced. | ||||||
|  */ |  */ | ||||||
| def enableHermes = project.ext.react.get("enableHermes", false); | def enableHermes = project.ext.react.get("enableHermes", false); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Architectures to build native code for in debug. |  * Architectures to build native code for. | ||||||
|  */ |  */ | ||||||
| def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") | def reactNativeArchitectures() { | ||||||
|  |     def value = project.getProperties().get("reactNativeArchitectures") | ||||||
|  |     return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] | ||||||
|  | } | ||||||
|  |  | ||||||
| android { | android { | ||||||
|     ndkVersion rootProject.ext.ndkVersion |     ndkVersion rootProject.ext.ndkVersion | ||||||
|  |  | ||||||
|     compileSdkVersion rootProject.ext.compileSdkVersion |     compileSdkVersion rootProject.ext.compileSdkVersion | ||||||
|  |  | ||||||
|     defaultConfig { |     defaultConfig { | ||||||
| @@ -136,13 +140,85 @@ android { | |||||||
|         targetSdkVersion rootProject.ext.targetSdkVersion |         targetSdkVersion rootProject.ext.targetSdkVersion | ||||||
|         versionCode 1 |         versionCode 1 | ||||||
|         versionName "1.0" |         versionName "1.0" | ||||||
|  |         buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() | ||||||
|  |  | ||||||
|  |         if (isNewArchitectureEnabled()) { | ||||||
|  |             // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||||||
|  |             externalNativeBuild { | ||||||
|  |                 ndkBuild { | ||||||
|  |                     arguments "APP_PLATFORM=android-21", | ||||||
|  |                         "APP_STL=c++_shared", | ||||||
|  |                         "NDK_TOOLCHAIN_VERSION=clang", | ||||||
|  |                         "GENERATED_SRC_DIR=$buildDir/generated/source", | ||||||
|  |                         "PROJECT_BUILD_DIR=$buildDir", | ||||||
|  |                         "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", | ||||||
|  |                         "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build" | ||||||
|  |                     cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" | ||||||
|  |                     cppFlags "-std=c++17" | ||||||
|  |                     // Make sure this target name is the same you specify inside the | ||||||
|  |                     // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. | ||||||
|  |                     targets "testhotupdate_appmodules" | ||||||
|  |                     // Fix for windows limit on number of character in file paths and in command lines | ||||||
|  |                     if (Os.isFamily(Os.FAMILY_WINDOWS)) { | ||||||
|  |                         arguments "NDK_APP_SHORT_COMMANDS=true" | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             if (!enableSeparateBuildPerCPUArchitecture) { | ||||||
|  |                 ndk { | ||||||
|  |                     abiFilters (*reactNativeArchitectures()) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (isNewArchitectureEnabled()) { | ||||||
|  |         // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||||||
|  |         externalNativeBuild { | ||||||
|  |             ndkBuild { | ||||||
|  |                 path "$projectDir/src/main/jni/Android.mk" | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         def reactAndroidProjectDir = project(':ReactAndroid').projectDir | ||||||
|  |         def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { | ||||||
|  |             dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") | ||||||
|  |             from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||||||
|  |             into("$buildDir/react-ndk/exported") | ||||||
|  |         } | ||||||
|  |         def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { | ||||||
|  |             dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") | ||||||
|  |             from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") | ||||||
|  |             into("$buildDir/react-ndk/exported") | ||||||
|  |         } | ||||||
|  |         afterEvaluate { | ||||||
|  |             // If you wish to add a custom TurboModule or component locally, | ||||||
|  |             // you should uncomment this line. | ||||||
|  |             // preBuild.dependsOn("generateCodegenArtifactsFromSchema") | ||||||
|  |             preDebugBuild.dependsOn(packageReactNdkDebugLibs) | ||||||
|  |             preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) | ||||||
|  |  | ||||||
|  |             // Due to a bug inside AGP, we have to explicitly set a dependency | ||||||
|  |             // between configureNdkBuild* tasks and the preBuild tasks. | ||||||
|  |             // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 | ||||||
|  |             configureNdkBuildRelease.dependsOn(preReleaseBuild) | ||||||
|  |             configureNdkBuildDebug.dependsOn(preDebugBuild) | ||||||
|  |             reactNativeArchitectures().each { architecture -> | ||||||
|  |                 tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { | ||||||
|  |                     dependsOn("preDebugBuild") | ||||||
|  |                 } | ||||||
|  |                 tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { | ||||||
|  |                     dependsOn("preReleaseBuild") | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     splits { |     splits { | ||||||
|         abi { |         abi { | ||||||
|             reset() |             reset() | ||||||
|             enable true |             enable enableSeparateBuildPerCPUArchitecture | ||||||
|             universalApk false  // If true, also generate a universal APK |             universalApk false  // If true, also generate a universal APK | ||||||
|             include "x86", "arm64-v8a" |             include (*reactNativeArchitectures()) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     signingConfigs { |     signingConfigs { | ||||||
| @@ -156,14 +232,8 @@ android { | |||||||
|     buildTypes { |     buildTypes { | ||||||
|         debug { |         debug { | ||||||
|             signingConfig signingConfigs.debug |             signingConfig signingConfigs.debug | ||||||
|             if (nativeArchitectures) { |  | ||||||
|                 ndk { |  | ||||||
|                     abiFilters nativeArchitectures.split(',') |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         release { |         release { | ||||||
|             crunchPngs false |  | ||||||
|             // Caution! In production, you need to generate your own keystore file. |             // Caution! In production, you need to generate your own keystore file. | ||||||
|             // see https://reactnative.dev/docs/signed-apk-android. |             // see https://reactnative.dev/docs/signed-apk-android. | ||||||
|             signingConfig signingConfigs.debug |             signingConfig signingConfigs.debug | ||||||
| @@ -191,13 +261,14 @@ android { | |||||||
|  |  | ||||||
| dependencies { | dependencies { | ||||||
|     implementation fileTree(dir: "libs", include: ["*.jar"]) |     implementation fileTree(dir: "libs", include: ["*.jar"]) | ||||||
|  |  | ||||||
|     //noinspection GradleDynamicVersion |     //noinspection GradleDynamicVersion | ||||||
|     implementation "com.facebook.react:react-native:+"  // From node_modules |     implementation "com.facebook.react:react-native:+"  // From node_modules | ||||||
|  |  | ||||||
|     implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" |     implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" | ||||||
|  |  | ||||||
|     debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { |     debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { | ||||||
|       exclude group:'com.facebook.fbjni' |         exclude group:'com.facebook.fbjni' | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { |     debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { | ||||||
| @@ -218,11 +289,31 @@ dependencies { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | if (isNewArchitectureEnabled()) { | ||||||
|  |     // If new architecture is enabled, we let you build RN from source | ||||||
|  |     // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. | ||||||
|  |     // This will be applied to all the imported transtitive dependency. | ||||||
|  |     configurations.all { | ||||||
|  |         resolutionStrategy.dependencySubstitution { | ||||||
|  |             substitute(module("com.facebook.react:react-native")) | ||||||
|  |                     .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| // Run this once to be able to run the application with BUCK | // Run this once to be able to run the application with BUCK | ||||||
| // puts all implementation dependencies into folder libs for BUCK to use | // puts all compile dependencies into folder libs for BUCK to use | ||||||
| task copyDownloadableDepsToLibs(type: Copy) { | task copyDownloadableDepsToLibs(type: Copy) { | ||||||
|     from configurations.implementation |     from configurations.implementation | ||||||
|     into 'libs' |     into 'libs' | ||||||
| } | } | ||||||
|  |  | ||||||
| apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | ||||||
|  |  | ||||||
|  | def isNewArchitectureEnabled() { | ||||||
|  |     // To opt-in for the New Architecture, you can either: | ||||||
|  |     // - Set `newArchEnabled` to true inside the `gradle.properties` file | ||||||
|  |     // - Invoke gradle with `-newArchEnabled=true` | ||||||
|  |     // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` | ||||||
|  |     return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" | ||||||
|  | } | ||||||
|   | |||||||
| @@ -4,7 +4,10 @@ | |||||||
|  |  | ||||||
|     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> |     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> | ||||||
|  |  | ||||||
|     <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning"> |     <application | ||||||
|       <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> |         android:usesCleartextTraffic="true" | ||||||
|  |         tools:targetApi="28" | ||||||
|  |         tools:ignore="GoogleAppIndexingWarning"> | ||||||
|  |         <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" /> | ||||||
|     </application> |     </application> | ||||||
| </manifest> | </manifest> | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /** | /** | ||||||
|  * Copyright (c) Facebook, Inc. and its affiliates. |  * Copyright (c) Meta Platforms, Inc. and affiliates. | ||||||
|  * |  * | ||||||
|  * <p>This source code is licensed under the MIT license found in the LICENSE file in the root |  * <p>This source code is licensed under the MIT license found in the LICENSE file in the root | ||||||
|  * directory of this source tree. |  * directory of this source tree. | ||||||
| @@ -19,6 +19,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; | |||||||
| import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; | import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; | ||||||
| import com.facebook.flipper.plugins.react.ReactFlipperPlugin; | import com.facebook.flipper.plugins.react.ReactFlipperPlugin; | ||||||
| import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; | import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; | ||||||
|  | import com.facebook.react.ReactInstanceEventListener; | ||||||
| import com.facebook.react.ReactInstanceManager; | import com.facebook.react.ReactInstanceManager; | ||||||
| import com.facebook.react.bridge.ReactContext; | import com.facebook.react.bridge.ReactContext; | ||||||
| import com.facebook.react.modules.network.NetworkingModule; | import com.facebook.react.modules.network.NetworkingModule; | ||||||
| @@ -51,7 +52,7 @@ public class ReactNativeFlipper { | |||||||
|       ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); |       ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); | ||||||
|       if (reactContext == null) { |       if (reactContext == null) { | ||||||
|         reactInstanceManager.addReactInstanceEventListener( |         reactInstanceManager.addReactInstanceEventListener( | ||||||
|             new ReactInstanceManager.ReactInstanceEventListener() { |             new ReactInstanceEventListener() { | ||||||
|               @Override |               @Override | ||||||
|               public void onReactContextInitialized(ReactContext reactContext) { |               public void onReactContextInitialized(ReactContext reactContext) { | ||||||
|                 reactInstanceManager.removeReactInstanceEventListener(this); |                 reactInstanceManager.removeReactInstanceEventListener(this); | ||||||
| @@ -69,4 +70,4 @@ public class ReactNativeFlipper { | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ | |||||||
|     <uses-permission android:name="android.permission.INTERNET" /> |     <uses-permission android:name="android.permission.INTERNET" /> | ||||||
|  |  | ||||||
|     <application |     <application | ||||||
|       android:usesCleartextTraffic="true" |  | ||||||
|       android:name=".MainApplication" |       android:name=".MainApplication" | ||||||
|       android:label="@string/app_name" |       android:label="@string/app_name" | ||||||
|       android:icon="@mipmap/ic_launcher" |       android:icon="@mipmap/ic_launcher" | ||||||
| @@ -14,14 +13,14 @@ | |||||||
|       <activity |       <activity | ||||||
|         android:name=".MainActivity" |         android:name=".MainActivity" | ||||||
|         android:label="@string/app_name" |         android:label="@string/app_name" | ||||||
|         android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" |         android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" | ||||||
|         android:launchMode="singleTask" |         android:launchMode="singleTask" | ||||||
|         android:windowSoftInputMode="adjustResize"> |         android:windowSoftInputMode="adjustResize" | ||||||
|  |         android:exported="true"> | ||||||
|         <intent-filter> |         <intent-filter> | ||||||
|             <action android:name="android.intent.action.MAIN" /> |             <action android:name="android.intent.action.MAIN" /> | ||||||
|             <category android:name="android.intent.category.LAUNCHER" /> |             <category android:name="android.intent.category.LAUNCHER" /> | ||||||
|         </intent-filter> |         </intent-filter> | ||||||
|       </activity> |       </activity> | ||||||
|     </application> |     </application> | ||||||
|  |  | ||||||
| </manifest> | </manifest> | ||||||
|   | |||||||
| @@ -1,6 +1,8 @@ | |||||||
| package com.testhotupdate; | package com.testhotupdate; | ||||||
|  |  | ||||||
| import com.facebook.react.ReactActivity; | import com.facebook.react.ReactActivity; | ||||||
|  | import com.facebook.react.ReactActivityDelegate; | ||||||
|  | import com.facebook.react.ReactRootView; | ||||||
|  |  | ||||||
| public class MainActivity extends ReactActivity { | public class MainActivity extends ReactActivity { | ||||||
|  |  | ||||||
| @@ -10,6 +12,29 @@ public class MainActivity extends ReactActivity { | |||||||
|    */ |    */ | ||||||
|   @Override |   @Override | ||||||
|   protected String getMainComponentName() { |   protected String getMainComponentName() { | ||||||
|     return "testHotUpdate"; |     return "testHotupdate"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and | ||||||
|  |    * you can specify the rendered you wish to use (Fabric or the older renderer). | ||||||
|  |    */ | ||||||
|  |   @Override | ||||||
|  |   protected ReactActivityDelegate createReactActivityDelegate() { | ||||||
|  |     return new MainActivityDelegate(this, getMainComponentName()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public static class MainActivityDelegate extends ReactActivityDelegate { | ||||||
|  |     public MainActivityDelegate(ReactActivity activity, String mainComponentName) { | ||||||
|  |       super(activity, mainComponentName); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     protected ReactRootView createRootView() { | ||||||
|  |       ReactRootView reactRootView = new ReactRootView(getContext()); | ||||||
|  |       // If you opted-in for the New Architecture, we enable the Fabric Renderer. | ||||||
|  |       reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); | ||||||
|  |       return reactRootView; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -7,12 +7,12 @@ import com.facebook.react.ReactApplication; | |||||||
| import com.facebook.react.ReactInstanceManager; | import com.facebook.react.ReactInstanceManager; | ||||||
| import com.facebook.react.ReactNativeHost; | import com.facebook.react.ReactNativeHost; | ||||||
| import com.facebook.react.ReactPackage; | import com.facebook.react.ReactPackage; | ||||||
|  | import com.facebook.react.config.ReactFeatureFlags; | ||||||
| import com.facebook.soloader.SoLoader; | import com.facebook.soloader.SoLoader; | ||||||
|  | import com.testhotupdate.newarchitecture.MainApplicationReactNativeHost; | ||||||
| import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import cn.reactnative.modules.update.UpdateContext; |  | ||||||
|  |  | ||||||
| public class MainApplication extends Application implements ReactApplication { | public class MainApplication extends Application implements ReactApplication { | ||||||
|  |  | ||||||
|   private final ReactNativeHost mReactNativeHost = |   private final ReactNativeHost mReactNativeHost = | ||||||
| @@ -42,19 +42,28 @@ public class MainApplication extends Application implements ReactApplication { | |||||||
|         } |         } | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
|  |   private final ReactNativeHost mNewArchitectureNativeHost = | ||||||
|  |       new MainApplicationReactNativeHost(this); | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public ReactNativeHost getReactNativeHost() { |   public ReactNativeHost getReactNativeHost() { | ||||||
|     return mReactNativeHost; |     if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { | ||||||
|  |       return mNewArchitectureNativeHost; | ||||||
|  |     } else { | ||||||
|  |       return mReactNativeHost; | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public void onCreate() { |   public void onCreate() { | ||||||
|     super.onCreate(); |     super.onCreate(); | ||||||
|  |     // If you opted-in for the New Architecture, we enable the TurboModule system | ||||||
|  |     ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; | ||||||
|     SoLoader.init(this, /* native exopackage */ false); |     SoLoader.init(this, /* native exopackage */ false); | ||||||
|     initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); |     initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|    /** |   /** | ||||||
|    * Loads Flipper in React Native templates. Call this in the onCreate method with something like |    * Loads Flipper in React Native templates. Call this in the onCreate method with something like | ||||||
|    * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); |    * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||||||
|    * |    * | ||||||
|   | |||||||
| @@ -0,0 +1,116 @@ | |||||||
|  | package com.testhotupdate.newarchitecture; | ||||||
|  |  | ||||||
|  | import android.app.Application; | ||||||
|  | import androidx.annotation.NonNull; | ||||||
|  | import com.facebook.react.PackageList; | ||||||
|  | import com.facebook.react.ReactInstanceManager; | ||||||
|  | import com.facebook.react.ReactNativeHost; | ||||||
|  | import com.facebook.react.ReactPackage; | ||||||
|  | import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||||||
|  | import com.facebook.react.bridge.JSIModulePackage; | ||||||
|  | import com.facebook.react.bridge.JSIModuleProvider; | ||||||
|  | import com.facebook.react.bridge.JSIModuleSpec; | ||||||
|  | import com.facebook.react.bridge.JSIModuleType; | ||||||
|  | import com.facebook.react.bridge.JavaScriptContextHolder; | ||||||
|  | import com.facebook.react.bridge.ReactApplicationContext; | ||||||
|  | import com.facebook.react.bridge.UIManager; | ||||||
|  | import com.facebook.react.fabric.ComponentFactory; | ||||||
|  | import com.facebook.react.fabric.CoreComponentsRegistry; | ||||||
|  | import com.facebook.react.fabric.EmptyReactNativeConfig; | ||||||
|  | import com.facebook.react.fabric.FabricJSIModuleProvider; | ||||||
|  | import com.facebook.react.uimanager.ViewManagerRegistry; | ||||||
|  | import com.testhotupdate.BuildConfig; | ||||||
|  | import com.testhotupdate.newarchitecture.components.MainComponentsRegistry; | ||||||
|  | import com.testhotupdate.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both | ||||||
|  |  * TurboModule delegates and the Fabric Renderer. | ||||||
|  |  * | ||||||
|  |  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||||
|  |  * `newArchEnabled` property). Is ignored otherwise. | ||||||
|  |  */ | ||||||
|  | public class MainApplicationReactNativeHost extends ReactNativeHost { | ||||||
|  |   public MainApplicationReactNativeHost(Application application) { | ||||||
|  |     super(application); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public boolean getUseDeveloperSupport() { | ||||||
|  |     return BuildConfig.DEBUG; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   protected List<ReactPackage> getPackages() { | ||||||
|  |     List<ReactPackage> packages = new PackageList(this).getPackages(); | ||||||
|  |     // Packages that cannot be autolinked yet can be added manually here, for example: | ||||||
|  |     //     packages.add(new MyReactNativePackage()); | ||||||
|  |     // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: | ||||||
|  |     //     packages.add(new TurboReactPackage() { ... }); | ||||||
|  |     // If you have custom Fabric Components, their ViewManagers should also be loaded here | ||||||
|  |     // inside a ReactPackage. | ||||||
|  |     return packages; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   protected String getJSMainModuleName() { | ||||||
|  |     return "index"; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @NonNull | ||||||
|  |   @Override | ||||||
|  |   protected ReactPackageTurboModuleManagerDelegate.Builder | ||||||
|  |       getReactPackageTurboModuleManagerDelegateBuilder() { | ||||||
|  |     // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary | ||||||
|  |     // for the new architecture and to use TurboModules correctly. | ||||||
|  |     return new MainApplicationTurboModuleManagerDelegate.Builder(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   protected JSIModulePackage getJSIModulePackage() { | ||||||
|  |     return new JSIModulePackage() { | ||||||
|  |       @Override | ||||||
|  |       public List<JSIModuleSpec> getJSIModules( | ||||||
|  |           final ReactApplicationContext reactApplicationContext, | ||||||
|  |           final JavaScriptContextHolder jsContext) { | ||||||
|  |         final List<JSIModuleSpec> specs = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         // Here we provide a new JSIModuleSpec that will be responsible of providing the | ||||||
|  |         // custom Fabric Components. | ||||||
|  |         specs.add( | ||||||
|  |             new JSIModuleSpec() { | ||||||
|  |               @Override | ||||||
|  |               public JSIModuleType getJSIModuleType() { | ||||||
|  |                 return JSIModuleType.UIManager; | ||||||
|  |               } | ||||||
|  |  | ||||||
|  |               @Override | ||||||
|  |               public JSIModuleProvider<UIManager> getJSIModuleProvider() { | ||||||
|  |                 final ComponentFactory componentFactory = new ComponentFactory(); | ||||||
|  |                 CoreComponentsRegistry.register(componentFactory); | ||||||
|  |  | ||||||
|  |                 // Here we register a Components Registry. | ||||||
|  |                 // The one that is generated with the template contains no components | ||||||
|  |                 // and just provides you the one from React Native core. | ||||||
|  |                 MainComponentsRegistry.register(componentFactory); | ||||||
|  |  | ||||||
|  |                 final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); | ||||||
|  |  | ||||||
|  |                 ViewManagerRegistry viewManagerRegistry = | ||||||
|  |                     new ViewManagerRegistry( | ||||||
|  |                         reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); | ||||||
|  |  | ||||||
|  |                 return new FabricJSIModuleProvider( | ||||||
|  |                     reactApplicationContext, | ||||||
|  |                     componentFactory, | ||||||
|  |                     new EmptyReactNativeConfig(), | ||||||
|  |                     viewManagerRegistry); | ||||||
|  |               } | ||||||
|  |             }); | ||||||
|  |         return specs; | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -0,0 +1,36 @@ | |||||||
|  | package com.testhotupdate.newarchitecture.components; | ||||||
|  |  | ||||||
|  | import com.facebook.jni.HybridData; | ||||||
|  | import com.facebook.proguard.annotations.DoNotStrip; | ||||||
|  | import com.facebook.react.fabric.ComponentFactory; | ||||||
|  | import com.facebook.soloader.SoLoader; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Class responsible to load the custom Fabric Components. This class has native methods and needs a | ||||||
|  |  * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||||||
|  |  * folder for you). | ||||||
|  |  * | ||||||
|  |  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||||
|  |  * `newArchEnabled` property). Is ignored otherwise. | ||||||
|  |  */ | ||||||
|  | @DoNotStrip | ||||||
|  | public class MainComponentsRegistry { | ||||||
|  |   static { | ||||||
|  |     SoLoader.loadLibrary("fabricjni"); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @DoNotStrip private final HybridData mHybridData; | ||||||
|  |  | ||||||
|  |   @DoNotStrip | ||||||
|  |   private native HybridData initHybrid(ComponentFactory componentFactory); | ||||||
|  |  | ||||||
|  |   @DoNotStrip | ||||||
|  |   private MainComponentsRegistry(ComponentFactory componentFactory) { | ||||||
|  |     mHybridData = initHybrid(componentFactory); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @DoNotStrip | ||||||
|  |   public static MainComponentsRegistry register(ComponentFactory componentFactory) { | ||||||
|  |     return new MainComponentsRegistry(componentFactory); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -0,0 +1,48 @@ | |||||||
|  | package com.testhotupdate.newarchitecture.modules; | ||||||
|  |  | ||||||
|  | import com.facebook.jni.HybridData; | ||||||
|  | import com.facebook.react.ReactPackage; | ||||||
|  | import com.facebook.react.ReactPackageTurboModuleManagerDelegate; | ||||||
|  | import com.facebook.react.bridge.ReactApplicationContext; | ||||||
|  | import com.facebook.soloader.SoLoader; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Class responsible to load the TurboModules. This class has native methods and needs a | ||||||
|  |  * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ | ||||||
|  |  * folder for you). | ||||||
|  |  * | ||||||
|  |  * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the | ||||||
|  |  * `newArchEnabled` property). Is ignored otherwise. | ||||||
|  |  */ | ||||||
|  | public class MainApplicationTurboModuleManagerDelegate | ||||||
|  |     extends ReactPackageTurboModuleManagerDelegate { | ||||||
|  |  | ||||||
|  |   private static volatile boolean sIsSoLibraryLoaded; | ||||||
|  |  | ||||||
|  |   protected MainApplicationTurboModuleManagerDelegate( | ||||||
|  |       ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) { | ||||||
|  |     super(reactApplicationContext, packages); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   protected native HybridData initHybrid(); | ||||||
|  |  | ||||||
|  |   native boolean canCreateTurboModule(String moduleName); | ||||||
|  |  | ||||||
|  |   public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { | ||||||
|  |     protected MainApplicationTurboModuleManagerDelegate build( | ||||||
|  |         ReactApplicationContext context, List<ReactPackage> packages) { | ||||||
|  |       return new MainApplicationTurboModuleManagerDelegate(context, packages); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   protected synchronized void maybeLoadOtherSoLibraries() { | ||||||
|  |     if (!sIsSoLibraryLoaded) { | ||||||
|  |       // If you change the name of your application .so file in the Android.mk file, | ||||||
|  |       // make sure you update the name here as well. | ||||||
|  |       SoLoader.loadLibrary("testhotupdate_appmodules"); | ||||||
|  |       sIsSoLibraryLoaded = true; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								Example/testHotUpdate/android/app/src/main/jni/Android.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Example/testHotUpdate/android/app/src/main/jni/Android.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | THIS_DIR := $(call my-dir) | ||||||
|  |  | ||||||
|  | include $(REACT_ANDROID_DIR)/Android-prebuilt.mk | ||||||
|  |  | ||||||
|  | # If you wish to add a custom TurboModule or Fabric component in your app you | ||||||
|  | # will have to include the following autogenerated makefile. | ||||||
|  | # include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk | ||||||
|  | include $(CLEAR_VARS) | ||||||
|  |  | ||||||
|  | LOCAL_PATH := $(THIS_DIR) | ||||||
|  |  | ||||||
|  | # You can customize the name of your application .so file here. | ||||||
|  | LOCAL_MODULE := testhotupdate_appmodules | ||||||
|  |  | ||||||
|  | LOCAL_C_INCLUDES := $(LOCAL_PATH) | ||||||
|  | LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) | ||||||
|  | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) | ||||||
|  |  | ||||||
|  | # If you wish to add a custom TurboModule or Fabric component in your app you | ||||||
|  | # will have to uncomment those lines to include the generated source  | ||||||
|  | # files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) | ||||||
|  | # | ||||||
|  | # LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||||||
|  | # LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp) | ||||||
|  | # LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni | ||||||
|  |  | ||||||
|  | # Here you should add any native library you wish to depend on. | ||||||
|  | LOCAL_SHARED_LIBRARIES := \ | ||||||
|  |   libfabricjni \ | ||||||
|  |   libfbjni \ | ||||||
|  |   libfolly_futures \ | ||||||
|  |   libfolly_json \ | ||||||
|  |   libglog \ | ||||||
|  |   libjsi \ | ||||||
|  |   libreact_codegen_rncore \ | ||||||
|  |   libreact_debug \ | ||||||
|  |   libreact_nativemodule_core \ | ||||||
|  |   libreact_render_componentregistry \ | ||||||
|  |   libreact_render_core \ | ||||||
|  |   libreact_render_debug \ | ||||||
|  |   libreact_render_graphics \ | ||||||
|  |   librrc_view \ | ||||||
|  |   libruntimeexecutor \ | ||||||
|  |   libturbomodulejsijni \ | ||||||
|  |   libyoga | ||||||
|  |  | ||||||
|  | LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall | ||||||
|  |  | ||||||
|  | include $(BUILD_SHARED_LIBRARY) | ||||||
| @@ -0,0 +1,24 @@ | |||||||
|  | #include "MainApplicationModuleProvider.h" | ||||||
|  |  | ||||||
|  | #include <rncore.h> | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||||||
|  |     const std::string moduleName, | ||||||
|  |     const JavaTurboModule::InitParams ¶ms) { | ||||||
|  |   // Here you can provide your own module provider for TurboModules coming from | ||||||
|  |   // either your application or from external libraries. The approach to follow | ||||||
|  |   // is similar to the following (for a library called `samplelibrary`: | ||||||
|  |   // | ||||||
|  |   // auto module = samplelibrary_ModuleProvider(moduleName, params); | ||||||
|  |   // if (module != nullptr) { | ||||||
|  |   //    return module; | ||||||
|  |   // } | ||||||
|  |   // return rncore_ModuleProvider(moduleName, params); | ||||||
|  |   return rncore_ModuleProvider(moduleName, params); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
| @@ -0,0 +1,16 @@ | |||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include <memory> | ||||||
|  | #include <string> | ||||||
|  |  | ||||||
|  | #include <ReactCommon/JavaTurboModule.h> | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||||||
|  |     const std::string moduleName, | ||||||
|  |     const JavaTurboModule::InitParams ¶ms); | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
| @@ -0,0 +1,45 @@ | |||||||
|  | #include "MainApplicationTurboModuleManagerDelegate.h" | ||||||
|  | #include "MainApplicationModuleProvider.h" | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> | ||||||
|  | MainApplicationTurboModuleManagerDelegate::initHybrid( | ||||||
|  |     jni::alias_ref<jhybridobject>) { | ||||||
|  |   return makeCxxInstance(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void MainApplicationTurboModuleManagerDelegate::registerNatives() { | ||||||
|  |   registerHybrid({ | ||||||
|  |       makeNativeMethod( | ||||||
|  |           "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), | ||||||
|  |       makeNativeMethod( | ||||||
|  |           "canCreateTurboModule", | ||||||
|  |           MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | std::shared_ptr<TurboModule> | ||||||
|  | MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||||
|  |     const std::string name, | ||||||
|  |     const std::shared_ptr<CallInvoker> jsInvoker) { | ||||||
|  |   // Not implemented yet: provide pure-C++ NativeModules here. | ||||||
|  |   return nullptr; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | std::shared_ptr<TurboModule> | ||||||
|  | MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||||
|  |     const std::string name, | ||||||
|  |     const JavaTurboModule::InitParams ¶ms) { | ||||||
|  |   return MainApplicationModuleProvider(name, params); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( | ||||||
|  |     std::string name) { | ||||||
|  |   return getTurboModule(name, nullptr) != nullptr || | ||||||
|  |       getTurboModule(name, {.moduleName = name}) != nullptr; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
| @@ -0,0 +1,38 @@ | |||||||
|  | #include <memory> | ||||||
|  | #include <string> | ||||||
|  |  | ||||||
|  | #include <ReactCommon/TurboModuleManagerDelegate.h> | ||||||
|  | #include <fbjni/fbjni.h> | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | class MainApplicationTurboModuleManagerDelegate | ||||||
|  |     : public jni::HybridClass< | ||||||
|  |           MainApplicationTurboModuleManagerDelegate, | ||||||
|  |           TurboModuleManagerDelegate> { | ||||||
|  |  public: | ||||||
|  |   // Adapt it to the package you used for your Java class. | ||||||
|  |   static constexpr auto kJavaDescriptor = | ||||||
|  |       "Lcom/testhotupdate/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; | ||||||
|  |  | ||||||
|  |   static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); | ||||||
|  |  | ||||||
|  |   static void registerNatives(); | ||||||
|  |  | ||||||
|  |   std::shared_ptr<TurboModule> getTurboModule( | ||||||
|  |       const std::string name, | ||||||
|  |       const std::shared_ptr<CallInvoker> jsInvoker) override; | ||||||
|  |   std::shared_ptr<TurboModule> getTurboModule( | ||||||
|  |       const std::string name, | ||||||
|  |       const JavaTurboModule::InitParams ¶ms) override; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Test-only method. Allows user to verify whether a TurboModule can be | ||||||
|  |    * created by instances of this class. | ||||||
|  |    */ | ||||||
|  |   bool canCreateTurboModule(std::string name); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
| @@ -0,0 +1,61 @@ | |||||||
|  | #include "MainComponentsRegistry.h" | ||||||
|  |  | ||||||
|  | #include <CoreComponentsRegistry.h> | ||||||
|  | #include <fbjni/fbjni.h> | ||||||
|  | #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||||||
|  | #include <react/renderer/components/rncore/ComponentDescriptors.h> | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} | ||||||
|  |  | ||||||
|  | std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||||||
|  | MainComponentsRegistry::sharedProviderRegistry() { | ||||||
|  |   auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); | ||||||
|  |  | ||||||
|  |   // Custom Fabric Components go here. You can register custom | ||||||
|  |   // components coming from your App or from 3rd party libraries here. | ||||||
|  |   // | ||||||
|  |   // providerRegistry->add(concreteComponentDescriptorProvider< | ||||||
|  |   //        AocViewerComponentDescriptor>()); | ||||||
|  |   return providerRegistry; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | jni::local_ref<MainComponentsRegistry::jhybriddata> | ||||||
|  | MainComponentsRegistry::initHybrid( | ||||||
|  |     jni::alias_ref<jclass>, | ||||||
|  |     ComponentFactory *delegate) { | ||||||
|  |   auto instance = makeCxxInstance(delegate); | ||||||
|  |  | ||||||
|  |   auto buildRegistryFunction = | ||||||
|  |       [](EventDispatcher::Weak const &eventDispatcher, | ||||||
|  |          ContextContainer::Shared const &contextContainer) | ||||||
|  |       -> ComponentDescriptorRegistry::Shared { | ||||||
|  |     auto registry = MainComponentsRegistry::sharedProviderRegistry() | ||||||
|  |                         ->createComponentDescriptorRegistry( | ||||||
|  |                             {eventDispatcher, contextContainer}); | ||||||
|  |  | ||||||
|  |     auto mutableRegistry = | ||||||
|  |         std::const_pointer_cast<ComponentDescriptorRegistry>(registry); | ||||||
|  |  | ||||||
|  |     mutableRegistry->setFallbackComponentDescriptor( | ||||||
|  |         std::make_shared<UnimplementedNativeViewComponentDescriptor>( | ||||||
|  |             ComponentDescriptorParameters{ | ||||||
|  |                 eventDispatcher, contextContainer, nullptr})); | ||||||
|  |  | ||||||
|  |     return registry; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   delegate->buildRegistryFunction = buildRegistryFunction; | ||||||
|  |   return instance; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void MainComponentsRegistry::registerNatives() { | ||||||
|  |   registerHybrid({ | ||||||
|  |       makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
| @@ -0,0 +1,32 @@ | |||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | #include <ComponentFactory.h> | ||||||
|  | #include <fbjni/fbjni.h> | ||||||
|  | #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||||||
|  | #include <react/renderer/componentregistry/ComponentDescriptorRegistry.h> | ||||||
|  |  | ||||||
|  | namespace facebook { | ||||||
|  | namespace react { | ||||||
|  |  | ||||||
|  | class MainComponentsRegistry | ||||||
|  |     : public facebook::jni::HybridClass<MainComponentsRegistry> { | ||||||
|  |  public: | ||||||
|  |   // Adapt it to the package you used for your Java class. | ||||||
|  |   constexpr static auto kJavaDescriptor = | ||||||
|  |       "Lcom/testhotupdate/newarchitecture/components/MainComponentsRegistry;"; | ||||||
|  |  | ||||||
|  |   static void registerNatives(); | ||||||
|  |  | ||||||
|  |   MainComponentsRegistry(ComponentFactory *delegate); | ||||||
|  |  | ||||||
|  |  private: | ||||||
|  |   static std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||||||
|  |   sharedProviderRegistry(); | ||||||
|  |  | ||||||
|  |   static jni::local_ref<jhybriddata> initHybrid( | ||||||
|  |       jni::alias_ref<jclass>, | ||||||
|  |       ComponentFactory *delegate); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | } // namespace react | ||||||
|  | } // namespace facebook | ||||||
							
								
								
									
										11
									
								
								Example/testHotUpdate/android/app/src/main/jni/OnLoad.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Example/testHotUpdate/android/app/src/main/jni/OnLoad.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | #include <fbjni/fbjni.h> | ||||||
|  | #include "MainApplicationTurboModuleManagerDelegate.h" | ||||||
|  | #include "MainComponentsRegistry.h" | ||||||
|  |  | ||||||
|  | JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { | ||||||
|  |   return facebook::jni::initialize(vm, [] { | ||||||
|  |     facebook::react::MainApplicationTurboModuleManagerDelegate:: | ||||||
|  |         registerNatives(); | ||||||
|  |     facebook::react::MainComponentsRegistry::registerNatives(); | ||||||
|  |   }); | ||||||
|  | } | ||||||
| @@ -0,0 +1,36 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!-- Copyright (C) 2014 The Android Open Source Project | ||||||
|  |  | ||||||
|  |      Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |      you may not use this file except in compliance with the License. | ||||||
|  |      You may obtain a copy of the License at | ||||||
|  |  | ||||||
|  |           http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  | ||||||
|  |      Unless required by applicable law or agreed to in writing, software | ||||||
|  |      distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |      See the License for the specific language governing permissions and | ||||||
|  |      limitations under the License. | ||||||
|  | --> | ||||||
|  | <inset xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|  |        android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material" | ||||||
|  |        android:insetRight="@dimen/abc_edit_text_inset_horizontal_material" | ||||||
|  |        android:insetTop="@dimen/abc_edit_text_inset_top_material" | ||||||
|  |        android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> | ||||||
|  |  | ||||||
|  |     <selector> | ||||||
|  |         <!--  | ||||||
|  |           This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I). | ||||||
|  |           The item below with state_pressed="false" and state_focused="false" causes a NullPointerException. | ||||||
|  |           NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' | ||||||
|  |  | ||||||
|  |           <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||||||
|  |  | ||||||
|  |           For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR. | ||||||
|  |         --> | ||||||
|  |         <item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/> | ||||||
|  |         <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/> | ||||||
|  |     </selector> | ||||||
|  |  | ||||||
|  | </inset> | ||||||
| @@ -1,3 +1,3 @@ | |||||||
| <resources> | <resources> | ||||||
|     <string name="app_name">testHotUpdate</string> |     <string name="app_name">testHotupdate</string> | ||||||
| </resources> | </resources> | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
|     <!-- Base application theme. --> |     <!-- Base application theme. --> | ||||||
|     <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> |     <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> | ||||||
|         <!-- Customize your theme here. --> |         <!-- Customize your theme here. --> | ||||||
|  |         <item name="android:editTextBackground">@drawable/rn_edit_text_material</item> | ||||||
|     </style> |     </style> | ||||||
|  |  | ||||||
| </resources> | </resources> | ||||||
|   | |||||||
| @@ -1,20 +1,30 @@ | |||||||
|  | import org.apache.tools.ant.taskdefs.condition.Os | ||||||
|  |  | ||||||
| // Top-level build file where you can add configuration options common to all sub-projects/modules. | // Top-level build file where you can add configuration options common to all sub-projects/modules. | ||||||
|  |  | ||||||
| buildscript { | buildscript { | ||||||
|     ext { |     ext { | ||||||
|         buildToolsVersion = "30.0.2" |         buildToolsVersion = "31.0.0" | ||||||
|         minSdkVersion = 21 |         minSdkVersion = 21 | ||||||
|         compileSdkVersion = 30 |         compileSdkVersion = 31 | ||||||
|         targetSdkVersion = 30 |         targetSdkVersion = 31 | ||||||
|         ndkVersion = "21.4.7075529" |  | ||||||
|  |         if (System.properties['os.arch'] == "aarch64") { | ||||||
|  |             // For M1 Users we need to use the NDK 24 which added support for aarch64 | ||||||
|  |             ndkVersion = "24.0.8215888" | ||||||
|  |         } else { | ||||||
|  |             // Otherwise we default to the side-by-side NDK version from AGP. | ||||||
|  |             ndkVersion = "21.4.7075529" | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|     repositories { |     repositories { | ||||||
|         google() |         google() | ||||||
|         mavenCentral() |         mavenCentral() | ||||||
|     } |     } | ||||||
|     dependencies { |     dependencies { | ||||||
|         classpath('com.android.tools.build:gradle:4.2.2') |         classpath("com.android.tools.build:gradle:7.0.4") | ||||||
|  |         classpath("com.facebook.react:react-native-gradle-plugin") | ||||||
|  |         classpath("de.undercouch:gradle-download-task:4.1.2") | ||||||
|         // NOTE: Do not place your application dependencies here; they belong |         // NOTE: Do not place your application dependencies here; they belong | ||||||
|         // in the individual module build.gradle files |         // in the individual module build.gradle files | ||||||
|     } |     } | ||||||
| @@ -22,8 +32,6 @@ buildscript { | |||||||
|  |  | ||||||
| allprojects { | allprojects { | ||||||
|     repositories { |     repositories { | ||||||
|         mavenCentral() |  | ||||||
|         mavenLocal() |  | ||||||
|         maven { |         maven { | ||||||
|             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm |             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||||||
|             url("$rootDir/../node_modules/react-native/android") |             url("$rootDir/../node_modules/react-native/android") | ||||||
| @@ -32,7 +40,13 @@ allprojects { | |||||||
|             // Android JSC is installed from npm |             // Android JSC is installed from npm | ||||||
|             url("$rootDir/../node_modules/jsc-android/dist") |             url("$rootDir/../node_modules/jsc-android/dist") | ||||||
|         } |         } | ||||||
|  |         mavenCentral { | ||||||
|  |             // We don't want to fetch react-native from Maven Central as there are | ||||||
|  |             // older versions over there. | ||||||
|  |             content { | ||||||
|  |                 excludeGroup "com.facebook.react" | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         google() |         google() | ||||||
|         maven { url 'https://www.jitpack.io' } |         maven { url 'https://www.jitpack.io' } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -9,8 +9,8 @@ | |||||||
|  |  | ||||||
| # Specifies the JVM arguments used for the daemon process. | # Specifies the JVM arguments used for the daemon process. | ||||||
| # The setting is particularly useful for tweaking memory settings. | # The setting is particularly useful for tweaking memory settings. | ||||||
| # Default value: -Xmx10248m -XX:MaxPermSize=256m | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m | ||||||
| # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m | ||||||
|  |  | ||||||
| # When configured, Gradle will run in incubating parallel mode. | # When configured, Gradle will run in incubating parallel mode. | ||||||
| # This option should only be used with decoupled projects. More details, visit | # This option should only be used with decoupled projects. More details, visit | ||||||
| @@ -25,4 +25,16 @@ android.useAndroidX=true | |||||||
| android.enableJetifier=true | android.enableJetifier=true | ||||||
|  |  | ||||||
| # Version of flipper SDK to use with React Native | # Version of flipper SDK to use with React Native | ||||||
| FLIPPER_VERSION=0.99.0 | FLIPPER_VERSION=0.125.0 | ||||||
|  |  | ||||||
|  | # Use this property to specify which architecture you want to build. | ||||||
|  | # You can also override it from the CLI using | ||||||
|  | # ./gradlew <task> -PreactNativeArchitectures=x86_64 | ||||||
|  | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 | ||||||
|  |  | ||||||
|  | # Use this property to enable support to the new architecture. | ||||||
|  | # This will allow you to use TurboModules and the Fabric render in | ||||||
|  | # your application. You should enable this flag either if you want | ||||||
|  | # to write custom TurboModules/Fabric components OR use libraries that | ||||||
|  | # are providing them. | ||||||
|  | newArchEnabled=false | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| distributionBase=GRADLE_USER_HOME | distributionBase=GRADLE_USER_HOME | ||||||
| distributionPath=wrapper/dists | distributionPath=wrapper/dists | ||||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip | distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip | ||||||
| zipStoreBase=GRADLE_USER_HOME | zipStoreBase=GRADLE_USER_HOME | ||||||
| zipStorePath=wrapper/dists | zipStorePath=wrapper/dists | ||||||
|   | |||||||
							
								
								
									
										271
									
								
								Example/testHotUpdate/android/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										271
									
								
								Example/testHotUpdate/android/gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env sh | #!/bin/sh | ||||||
|  |  | ||||||
| # | # | ||||||
| # Copyright 2015 the original author or authors. | # Copyright © 2015-2021 the original authors. | ||||||
| # | # | ||||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | # Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
| # you may not use this file except in compliance with the License. | # you may not use this file except in compliance with the License. | ||||||
| @@ -17,78 +17,113 @@ | |||||||
| # | # | ||||||
|  |  | ||||||
| ############################################################################## | ############################################################################## | ||||||
| ## | # | ||||||
| ##  Gradle start up script for UN*X | #   Gradle start up script for POSIX generated by Gradle. | ||||||
| ## | # | ||||||
|  | #   Important for running: | ||||||
|  | # | ||||||
|  | #   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is | ||||||
|  | #       noncompliant, but you have some other compliant shell such as ksh or | ||||||
|  | #       bash, then to run this script, type that shell name before the whole | ||||||
|  | #       command line, like: | ||||||
|  | # | ||||||
|  | #           ksh Gradle | ||||||
|  | # | ||||||
|  | #       Busybox and similar reduced shells will NOT work, because this script | ||||||
|  | #       requires all of these POSIX shell features: | ||||||
|  | #         * functions; | ||||||
|  | #         * expansions «$var», «${var}», «${var:-default}», «${var+SET}», | ||||||
|  | #           «${var#prefix}», «${var%suffix}», and «$( cmd )»; | ||||||
|  | #         * compound commands having a testable exit status, especially «case»; | ||||||
|  | #         * various built-in commands including «command», «set», and «ulimit». | ||||||
|  | # | ||||||
|  | #   Important for patching: | ||||||
|  | # | ||||||
|  | #   (2) This script targets any POSIX shell, so it avoids extensions provided | ||||||
|  | #       by Bash, Ksh, etc; in particular arrays are avoided. | ||||||
|  | # | ||||||
|  | #       The "traditional" practice of packing multiple parameters into a | ||||||
|  | #       space-separated string is a well documented source of bugs and security | ||||||
|  | #       problems, so this is (mostly) avoided, by progressively accumulating | ||||||
|  | #       options in "$@", and eventually passing that to Java. | ||||||
|  | # | ||||||
|  | #       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, | ||||||
|  | #       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; | ||||||
|  | #       see the in-line comments for details. | ||||||
|  | # | ||||||
|  | #       There are tweaks for specific operating systems such as AIX, CygWin, | ||||||
|  | #       Darwin, MinGW, and NonStop. | ||||||
|  | # | ||||||
|  | #   (3) This script is generated from the Groovy template | ||||||
|  | #       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||||
|  | #       within the Gradle project. | ||||||
|  | # | ||||||
|  | #       You can find Gradle at https://github.com/gradle/gradle/. | ||||||
|  | # | ||||||
| ############################################################################## | ############################################################################## | ||||||
|  |  | ||||||
| # Attempt to set APP_HOME | # Attempt to set APP_HOME | ||||||
|  |  | ||||||
| # Resolve links: $0 may be a link | # Resolve links: $0 may be a link | ||||||
| PRG="$0" | app_path=$0 | ||||||
| # Need this for relative symlinks. |  | ||||||
| while [ -h "$PRG" ] ; do | # Need this for daisy-chained symlinks. | ||||||
|     ls=`ls -ld "$PRG"` | while | ||||||
|     link=`expr "$ls" : '.*-> \(.*\)$'` |     APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path | ||||||
|     if expr "$link" : '/.*' > /dev/null; then |     [ -h "$app_path" ] | ||||||
|         PRG="$link" | do | ||||||
|     else |     ls=$( ls -ld "$app_path" ) | ||||||
|         PRG=`dirname "$PRG"`"/$link" |     link=${ls#*' -> '} | ||||||
|     fi |     case $link in             #( | ||||||
|  |       /*)   app_path=$link ;; #( | ||||||
|  |       *)    app_path=$APP_HOME$link ;; | ||||||
|  |     esac | ||||||
| done | done | ||||||
| SAVED="`pwd`" |  | ||||||
| cd "`dirname \"$PRG\"`/" >/dev/null | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | ||||||
| APP_HOME="`pwd -P`" |  | ||||||
| cd "$SAVED" >/dev/null |  | ||||||
|  |  | ||||||
| APP_NAME="Gradle" | APP_NAME="Gradle" | ||||||
| APP_BASE_NAME=`basename "$0"` | APP_BASE_NAME=${0##*/} | ||||||
|  |  | ||||||
| # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||||
|  |  | ||||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||||
| MAX_FD="maximum" | MAX_FD=maximum | ||||||
|  |  | ||||||
| warn () { | warn () { | ||||||
|     echo "$*" |     echo "$*" | ||||||
| } | } >&2 | ||||||
|  |  | ||||||
| die () { | die () { | ||||||
|     echo |     echo | ||||||
|     echo "$*" |     echo "$*" | ||||||
|     echo |     echo | ||||||
|     exit 1 |     exit 1 | ||||||
| } | } >&2 | ||||||
|  |  | ||||||
| # OS specific support (must be 'true' or 'false'). | # OS specific support (must be 'true' or 'false'). | ||||||
| cygwin=false | cygwin=false | ||||||
| msys=false | msys=false | ||||||
| darwin=false | darwin=false | ||||||
| nonstop=false | nonstop=false | ||||||
| case "`uname`" in | case "$( uname )" in                #( | ||||||
|   CYGWIN* ) |   CYGWIN* )         cygwin=true  ;; #( | ||||||
|     cygwin=true |   Darwin* )         darwin=true  ;; #( | ||||||
|     ;; |   MSYS* | MINGW* )  msys=true    ;; #( | ||||||
|   Darwin* ) |   NONSTOP* )        nonstop=true ;; | ||||||
|     darwin=true |  | ||||||
|     ;; |  | ||||||
|   MINGW* ) |  | ||||||
|     msys=true |  | ||||||
|     ;; |  | ||||||
|   NONSTOP* ) |  | ||||||
|     nonstop=true |  | ||||||
|     ;; |  | ||||||
| esac | esac | ||||||
|  |  | ||||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||||
|  |  | ||||||
|  |  | ||||||
| # Determine the Java command to use to start the JVM. | # Determine the Java command to use to start the JVM. | ||||||
| if [ -n "$JAVA_HOME" ] ; then | if [ -n "$JAVA_HOME" ] ; then | ||||||
|     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then |     if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||||||
|         # IBM's JDK on AIX uses strange locations for the executables |         # IBM's JDK on AIX uses strange locations for the executables | ||||||
|         JAVACMD="$JAVA_HOME/jre/sh/java" |         JAVACMD=$JAVA_HOME/jre/sh/java | ||||||
|     else |     else | ||||||
|         JAVACMD="$JAVA_HOME/bin/java" |         JAVACMD=$JAVA_HOME/bin/java | ||||||
|     fi |     fi | ||||||
|     if [ ! -x "$JAVACMD" ] ; then |     if [ ! -x "$JAVACMD" ] ; then | ||||||
|         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME |         die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||||||
| @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the | |||||||
| location of your Java installation." | location of your Java installation." | ||||||
|     fi |     fi | ||||||
| else | else | ||||||
|     JAVACMD="java" |     JAVACMD=java | ||||||
|     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. |     which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||||
|  |  | ||||||
| Please set the JAVA_HOME variable in your environment to match the | Please set the JAVA_HOME variable in your environment to match the | ||||||
| @@ -105,79 +140,95 @@ location of your Java installation." | |||||||
| fi | fi | ||||||
|  |  | ||||||
| # Increase the maximum file descriptors if we can. | # Increase the maximum file descriptors if we can. | ||||||
| if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then | ||||||
|     MAX_FD_LIMIT=`ulimit -H -n` |     case $MAX_FD in #( | ||||||
|     if [ $? -eq 0 ] ; then |       max*) | ||||||
|         if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then |         MAX_FD=$( ulimit -H -n ) || | ||||||
|             MAX_FD="$MAX_FD_LIMIT" |             warn "Could not query maximum file descriptor limit" | ||||||
|         fi |     esac | ||||||
|         ulimit -n $MAX_FD |     case $MAX_FD in  #( | ||||||
|         if [ $? -ne 0 ] ; then |       '' | soft) :;; #( | ||||||
|             warn "Could not set maximum file descriptor limit: $MAX_FD" |       *) | ||||||
|         fi |         ulimit -n "$MAX_FD" || | ||||||
|     else |             warn "Could not set maximum file descriptor limit to $MAX_FD" | ||||||
|         warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" |  | ||||||
|     fi |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # For Darwin, add options to specify how the application appears in the dock |  | ||||||
| if $darwin; then |  | ||||||
|     GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| # For Cygwin or MSYS, switch paths to Windows format before running java |  | ||||||
| if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then |  | ||||||
|     APP_HOME=`cygpath --path --mixed "$APP_HOME"` |  | ||||||
|     CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` |  | ||||||
|     JAVACMD=`cygpath --unix "$JAVACMD"` |  | ||||||
|  |  | ||||||
|     # We build the pattern for arguments to be converted via cygpath |  | ||||||
|     ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` |  | ||||||
|     SEP="" |  | ||||||
|     for dir in $ROOTDIRSRAW ; do |  | ||||||
|         ROOTDIRS="$ROOTDIRS$SEP$dir" |  | ||||||
|         SEP="|" |  | ||||||
|     done |  | ||||||
|     OURCYGPATTERN="(^($ROOTDIRS))" |  | ||||||
|     # Add a user-defined pattern to the cygpath arguments |  | ||||||
|     if [ "$GRADLE_CYGPATTERN" != "" ] ; then |  | ||||||
|         OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" |  | ||||||
|     fi |  | ||||||
|     # Now convert the arguments - kludge to limit ourselves to /bin/sh |  | ||||||
|     i=0 |  | ||||||
|     for arg in "$@" ; do |  | ||||||
|         CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` |  | ||||||
|         CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option |  | ||||||
|  |  | ||||||
|         if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition |  | ||||||
|             eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` |  | ||||||
|         else |  | ||||||
|             eval `echo args$i`="\"$arg\"" |  | ||||||
|         fi |  | ||||||
|         i=`expr $i + 1` |  | ||||||
|     done |  | ||||||
|     case $i in |  | ||||||
|         0) set -- ;; |  | ||||||
|         1) set -- "$args0" ;; |  | ||||||
|         2) set -- "$args0" "$args1" ;; |  | ||||||
|         3) set -- "$args0" "$args1" "$args2" ;; |  | ||||||
|         4) set -- "$args0" "$args1" "$args2" "$args3" ;; |  | ||||||
|         5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; |  | ||||||
|         6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; |  | ||||||
|         7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; |  | ||||||
|         8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; |  | ||||||
|         9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; |  | ||||||
|     esac |     esac | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Escape application args | # Collect all arguments for the java command, stacking in reverse order: | ||||||
| save () { | #   * args from the command line | ||||||
|     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | #   * the main class name | ||||||
|     echo " " | #   * -classpath | ||||||
| } | #   * -D...appname settings | ||||||
| APP_ARGS=`save "$@"` | #   * --module-path (only if needed) | ||||||
|  | #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. | ||||||
|  |  | ||||||
| # Collect all arguments for the java command, following the shell quoting and substitution rules | # For Cygwin or MSYS, switch paths to Windows format before running java | ||||||
| eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | if "$cygwin" || "$msys" ; then | ||||||
|  |     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||||
|  |     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||||
|  |  | ||||||
| exec "$JAVACMD" "$@" |     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||||
|  |  | ||||||
|  |     # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||||||
|  |     for arg do | ||||||
|  |         if | ||||||
|  |             case $arg in                                #( | ||||||
|  |               -*)   false ;;                            # don't mess with options #( | ||||||
|  |               /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath | ||||||
|  |                     [ -e "$t" ] ;;                      #( | ||||||
|  |               *)    false ;; | ||||||
|  |             esac | ||||||
|  |         then | ||||||
|  |             arg=$( cygpath --path --ignore --mixed "$arg" ) | ||||||
|  |         fi | ||||||
|  |         # Roll the args list around exactly as many times as the number of | ||||||
|  |         # args, so each arg winds up back in the position where it started, but | ||||||
|  |         # possibly modified. | ||||||
|  |         # | ||||||
|  |         # NB: a `for` loop captures its iteration list before it begins, so | ||||||
|  |         # changing the positional parameters here affects neither the number of | ||||||
|  |         # iterations, nor the values presented in `arg`. | ||||||
|  |         shift                   # remove old arg | ||||||
|  |         set -- "$@" "$arg"      # push replacement arg | ||||||
|  |     done | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Collect all arguments for the java command; | ||||||
|  | #   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | ||||||
|  | #     shell script including quotes and variable substitutions, so put them in | ||||||
|  | #     double quotes to make sure that they get re-expanded; and | ||||||
|  | #   * put everything else in single quotes, so that it's not re-expanded. | ||||||
|  |  | ||||||
|  | set -- \ | ||||||
|  |         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||||
|  |         -classpath "$CLASSPATH" \ | ||||||
|  |         org.gradle.wrapper.GradleWrapperMain \ | ||||||
|  |         "$@" | ||||||
|  |  | ||||||
|  | # Use "xargs" to parse quoted args. | ||||||
|  | # | ||||||
|  | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. | ||||||
|  | # | ||||||
|  | # In Bash we could simply go: | ||||||
|  | # | ||||||
|  | #   readarray ARGS < <( xargs -n1 <<<"$var" ) && | ||||||
|  | #   set -- "${ARGS[@]}" "$@" | ||||||
|  | # | ||||||
|  | # but POSIX shell has neither arrays nor command substitution, so instead we | ||||||
|  | # post-process each arg (as a line of input to sed) to backslash-escape any | ||||||
|  | # character that might be a shell metacharacter, then use eval to reverse | ||||||
|  | # that process (while maintaining the separation between arguments), and wrap | ||||||
|  | # the whole thing up as a single "set" statement. | ||||||
|  | # | ||||||
|  | # This will of course break if any of these variables contains a newline or | ||||||
|  | # an unmatched quote. | ||||||
|  | # | ||||||
|  |  | ||||||
|  | eval "set -- $( | ||||||
|  |         printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | | ||||||
|  |         xargs -n1 | | ||||||
|  |         sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | | ||||||
|  |         tr '\n' ' ' | ||||||
|  |     )" '"$@"' | ||||||
|  |  | ||||||
|  | exec "$JAVACMD" "$@" | ||||||
|   | |||||||
							
								
								
									
										178
									
								
								Example/testHotUpdate/android/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										178
									
								
								Example/testHotUpdate/android/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @@ -1,89 +1,89 @@ | |||||||
| @rem | @rem | ||||||
| @rem Copyright 2015 the original author or authors. | @rem Copyright 2015 the original author or authors. | ||||||
| @rem | @rem | ||||||
| @rem Licensed under the Apache License, Version 2.0 (the "License"); | @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 not use this file except in compliance with the License. | ||||||
| @rem You may obtain a copy of the License at | @rem You may obtain a copy of the License at | ||||||
| @rem | @rem | ||||||
| @rem      https://www.apache.org/licenses/LICENSE-2.0 | @rem      https://www.apache.org/licenses/LICENSE-2.0 | ||||||
| @rem | @rem | ||||||
| @rem Unless required by applicable law or agreed to in writing, software | @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 distributed under the License is distributed on an "AS IS" BASIS, | ||||||
| @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
| @rem See the License for the specific language governing permissions and | @rem See the License for the specific language governing permissions and | ||||||
| @rem limitations under the License. | @rem limitations under the License. | ||||||
| @rem | @rem | ||||||
|  |  | ||||||
| @if "%DEBUG%" == "" @echo off | @if "%DEBUG%" == "" @echo off | ||||||
| @rem ########################################################################## | @rem ########################################################################## | ||||||
| @rem | @rem | ||||||
| @rem  Gradle startup script for Windows | @rem  Gradle startup script for Windows | ||||||
| @rem | @rem | ||||||
| @rem ########################################################################## | @rem ########################################################################## | ||||||
|  |  | ||||||
| @rem Set local scope for the variables with windows NT shell | @rem Set local scope for the variables with windows NT shell | ||||||
| if "%OS%"=="Windows_NT" setlocal | if "%OS%"=="Windows_NT" setlocal | ||||||
|  |  | ||||||
| set DIRNAME=%~dp0 | set DIRNAME=%~dp0 | ||||||
| if "%DIRNAME%" == "" set DIRNAME=. | if "%DIRNAME%" == "" set DIRNAME=. | ||||||
| set APP_BASE_NAME=%~n0 | set APP_BASE_NAME=%~n0 | ||||||
| set APP_HOME=%DIRNAME% | set APP_HOME=%DIRNAME% | ||||||
|  |  | ||||||
| @rem Resolve any "." and ".." in APP_HOME to make it shorter. | @rem Resolve any "." and ".." in APP_HOME to make it shorter. | ||||||
| for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi | 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. | @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" | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" | ||||||
|  |  | ||||||
| @rem Find java.exe | @rem Find java.exe | ||||||
| if defined JAVA_HOME goto findJavaFromJavaHome | if defined JAVA_HOME goto findJavaFromJavaHome | ||||||
|  |  | ||||||
| set JAVA_EXE=java.exe | set JAVA_EXE=java.exe | ||||||
| %JAVA_EXE% -version >NUL 2>&1 | %JAVA_EXE% -version >NUL 2>&1 | ||||||
| if "%ERRORLEVEL%" == "0" goto execute | if "%ERRORLEVEL%" == "0" goto execute | ||||||
|  |  | ||||||
| echo. | echo. | ||||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||||
| echo. | echo. | ||||||
| echo Please set the JAVA_HOME variable in your environment to match the | echo Please set the JAVA_HOME variable in your environment to match the | ||||||
| echo location of your Java installation. | echo location of your Java installation. | ||||||
|  |  | ||||||
| goto fail | goto fail | ||||||
|  |  | ||||||
| :findJavaFromJavaHome | :findJavaFromJavaHome | ||||||
| set JAVA_HOME=%JAVA_HOME:"=% | set JAVA_HOME=%JAVA_HOME:"=% | ||||||
| set JAVA_EXE=%JAVA_HOME%/bin/java.exe | set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||||
|  |  | ||||||
| if exist "%JAVA_EXE%" goto execute | if exist "%JAVA_EXE%" goto execute | ||||||
|  |  | ||||||
| echo. | echo. | ||||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||||
| echo. | echo. | ||||||
| echo Please set the JAVA_HOME variable in your environment to match the | echo Please set the JAVA_HOME variable in your environment to match the | ||||||
| echo location of your Java installation. | echo location of your Java installation. | ||||||
|  |  | ||||||
| goto fail | goto fail | ||||||
|  |  | ||||||
| :execute | :execute | ||||||
| @rem Setup the command line | @rem Setup the command line | ||||||
|  |  | ||||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||||
|  |  | ||||||
|  |  | ||||||
| @rem Execute Gradle | @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%" org.gradle.wrapper.GradleWrapperMain %* | ||||||
|  |  | ||||||
| :end | :end | ||||||
| @rem End local scope for the variables with windows NT shell | @rem End local scope for the variables with windows NT shell | ||||||
| if "%ERRORLEVEL%"=="0" goto mainEnd | if "%ERRORLEVEL%"=="0" goto mainEnd | ||||||
|  |  | ||||||
| :fail | :fail | ||||||
| rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||||||
| rem the _cmd.exe /c_ return code! | rem the _cmd.exe /c_ return code! | ||||||
| if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||||||
| exit /b 1 | exit /b 1 | ||||||
|  |  | ||||||
| :mainEnd | :mainEnd | ||||||
| if "%OS%"=="Windows_NT" endlocal | if "%OS%"=="Windows_NT" endlocal | ||||||
|  |  | ||||||
| :omega | :omega | ||||||
|   | |||||||
| @@ -1,3 +1,9 @@ | |||||||
| rootProject.name = 'testHotUpdate' | rootProject.name = 'testHotupdate' | ||||||
| apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | ||||||
| include ':app' | include ':app' | ||||||
|  | includeBuild('../node_modules/react-native-gradle-plugin') | ||||||
|  |  | ||||||
|  | if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { | ||||||
|  |     include(":ReactAndroid") | ||||||
|  |     project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| { | { | ||||||
|   "name": "testHotUpdate", |   "name": "testHotupdate", | ||||||
|   "displayName": "testHotUpdate" |   "displayName": "testHotupdate" | ||||||
| } | } | ||||||
| @@ -2,25 +2,32 @@ require_relative '../node_modules/react-native/scripts/react_native_pods' | |||||||
| require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | ||||||
|  |  | ||||||
| platform :ios, '11.0' | platform :ios, '11.0' | ||||||
|  | install! 'cocoapods', :deterministic_uuids => false | ||||||
|  |  | ||||||
| target 'testHotUpdate' do | target 'testHotupdate' do | ||||||
|   config = use_native_modules! |   config = use_native_modules! | ||||||
|  |  | ||||||
|  |   # Flags change depending on the env values. | ||||||
|  |   flags = get_default_flags() | ||||||
|  |  | ||||||
|   use_react_native!( |   use_react_native!( | ||||||
|     :path => config[:reactNativePath], |     :path => config[:reactNativePath], | ||||||
|     # to enable hermes on iOS, change `false` to `true` and then install pods |     # to enable hermes on iOS, change `false` to `true` and then install pods | ||||||
|     :hermes_enabled => false |     :hermes_enabled => flags[:hermes_enabled], | ||||||
|  |     :fabric_enabled => flags[:fabric_enabled], | ||||||
|  |     # An absolute path to your application root. | ||||||
|  |     :app_path => "#{Pod::Config.instance.installation_root}/.." | ||||||
|   ) |   ) | ||||||
|  |  | ||||||
|  |  | ||||||
|   # Enables Flipper. |   # Enables Flipper. | ||||||
|   # |   # | ||||||
|   # Note that if you have use_frameworks! enabled, Flipper will not work and |   # Note that if you have use_frameworks! enabled, Flipper will not work and | ||||||
|   # you should disable the next line. |   # you should disable the next line. | ||||||
|   use_flipper!({ "Flipper-DoubleConversion" => "1.1.7" }) |   use_flipper!() | ||||||
|  |  | ||||||
|   post_install do |installer| |   post_install do |installer| | ||||||
|     react_native_post_install(installer) |     react_native_post_install(installer) | ||||||
|     __apply_Xcode_12_5_M1_post_install_workaround(installer) |     __apply_Xcode_12_5_M1_post_install_workaround(installer) | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,78 +2,79 @@ PODS: | |||||||
|   - boost (1.76.0) |   - boost (1.76.0) | ||||||
|   - CocoaAsyncSocket (7.6.5) |   - CocoaAsyncSocket (7.6.5) | ||||||
|   - DoubleConversion (1.1.6) |   - DoubleConversion (1.1.6) | ||||||
|   - FBLazyVector (0.66.0) |   - FBLazyVector (0.68.2) | ||||||
|   - FBReactNativeSpec (0.66.0): |   - FBReactNativeSpec (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTRequired (= 0.66.0) |     - RCTRequired (= 0.68.2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core (= 0.66.0) |     - React-Core (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|   - Flipper (0.99.0): |   - Flipper (0.125.0): | ||||||
|     - Flipper-Folly (~> 2.6) |     - Flipper-Folly (~> 2.6) | ||||||
|     - Flipper-RSocket (~> 1.4) |     - Flipper-RSocket (~> 1.4) | ||||||
|   - Flipper-Boost-iOSX (1.76.0.1.11) |   - Flipper-Boost-iOSX (1.76.0.1.11) | ||||||
|   - Flipper-DoubleConversion (1.1.7) |   - Flipper-DoubleConversion (3.2.0) | ||||||
|   - Flipper-Fmt (7.1.7) |   - Flipper-Fmt (7.1.7) | ||||||
|   - Flipper-Folly (2.6.7): |   - Flipper-Folly (2.6.10): | ||||||
|     - Flipper-Boost-iOSX |     - Flipper-Boost-iOSX | ||||||
|     - Flipper-DoubleConversion |     - Flipper-DoubleConversion | ||||||
|     - Flipper-Fmt (= 7.1.7) |     - Flipper-Fmt (= 7.1.7) | ||||||
|     - Flipper-Glog |     - Flipper-Glog | ||||||
|     - libevent (~> 2.1.12) |     - libevent (~> 2.1.12) | ||||||
|     - OpenSSL-Universal (= 1.1.180) |     - OpenSSL-Universal (= 1.1.1100) | ||||||
|   - Flipper-Glog (0.3.6) |   - Flipper-Glog (0.5.0.4) | ||||||
|   - Flipper-PeerTalk (0.0.4) |   - Flipper-PeerTalk (0.0.4) | ||||||
|   - Flipper-RSocket (1.4.3): |   - Flipper-RSocket (1.4.3): | ||||||
|     - Flipper-Folly (~> 2.6) |     - Flipper-Folly (~> 2.6) | ||||||
|   - FlipperKit (0.99.0): |   - FlipperKit (0.125.0): | ||||||
|     - FlipperKit/Core (= 0.99.0) |     - FlipperKit/Core (= 0.125.0) | ||||||
|   - FlipperKit/Core (0.99.0): |   - FlipperKit/Core (0.125.0): | ||||||
|     - Flipper (~> 0.99.0) |     - Flipper (~> 0.125.0) | ||||||
|     - FlipperKit/CppBridge |     - FlipperKit/CppBridge | ||||||
|     - FlipperKit/FBCxxFollyDynamicConvert |     - FlipperKit/FBCxxFollyDynamicConvert | ||||||
|     - FlipperKit/FBDefines |     - FlipperKit/FBDefines | ||||||
|     - FlipperKit/FKPortForwarding |     - FlipperKit/FKPortForwarding | ||||||
|   - FlipperKit/CppBridge (0.99.0): |     - SocketRocket (~> 0.6.0) | ||||||
|     - Flipper (~> 0.99.0) |   - FlipperKit/CppBridge (0.125.0): | ||||||
|   - FlipperKit/FBCxxFollyDynamicConvert (0.99.0): |     - Flipper (~> 0.125.0) | ||||||
|  |   - FlipperKit/FBCxxFollyDynamicConvert (0.125.0): | ||||||
|     - Flipper-Folly (~> 2.6) |     - Flipper-Folly (~> 2.6) | ||||||
|   - FlipperKit/FBDefines (0.99.0) |   - FlipperKit/FBDefines (0.125.0) | ||||||
|   - FlipperKit/FKPortForwarding (0.99.0): |   - FlipperKit/FKPortForwarding (0.125.0): | ||||||
|     - CocoaAsyncSocket (~> 7.6) |     - CocoaAsyncSocket (~> 7.6) | ||||||
|     - Flipper-PeerTalk (~> 0.0.4) |     - Flipper-PeerTalk (~> 0.0.4) | ||||||
|   - FlipperKit/FlipperKitHighlightOverlay (0.99.0) |   - FlipperKit/FlipperKitHighlightOverlay (0.125.0) | ||||||
|   - FlipperKit/FlipperKitLayoutHelpers (0.99.0): |   - FlipperKit/FlipperKitLayoutHelpers (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|     - FlipperKit/FlipperKitHighlightOverlay |     - FlipperKit/FlipperKitHighlightOverlay | ||||||
|     - FlipperKit/FlipperKitLayoutTextSearchable |     - FlipperKit/FlipperKitLayoutTextSearchable | ||||||
|   - FlipperKit/FlipperKitLayoutIOSDescriptors (0.99.0): |   - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|     - FlipperKit/FlipperKitHighlightOverlay |     - FlipperKit/FlipperKitHighlightOverlay | ||||||
|     - FlipperKit/FlipperKitLayoutHelpers |     - FlipperKit/FlipperKitLayoutHelpers | ||||||
|     - YogaKit (~> 1.18) |     - YogaKit (~> 1.18) | ||||||
|   - FlipperKit/FlipperKitLayoutPlugin (0.99.0): |   - FlipperKit/FlipperKitLayoutPlugin (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|     - FlipperKit/FlipperKitHighlightOverlay |     - FlipperKit/FlipperKitHighlightOverlay | ||||||
|     - FlipperKit/FlipperKitLayoutHelpers |     - FlipperKit/FlipperKitLayoutHelpers | ||||||
|     - FlipperKit/FlipperKitLayoutIOSDescriptors |     - FlipperKit/FlipperKitLayoutIOSDescriptors | ||||||
|     - FlipperKit/FlipperKitLayoutTextSearchable |     - FlipperKit/FlipperKitLayoutTextSearchable | ||||||
|     - YogaKit (~> 1.18) |     - YogaKit (~> 1.18) | ||||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (0.99.0) |   - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0) | ||||||
|   - FlipperKit/FlipperKitNetworkPlugin (0.99.0): |   - FlipperKit/FlipperKitNetworkPlugin (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|   - FlipperKit/FlipperKitReactPlugin (0.99.0): |   - FlipperKit/FlipperKitReactPlugin (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (0.99.0): |   - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|   - FlipperKit/SKIOSNetworkPlugin (0.99.0): |   - FlipperKit/SKIOSNetworkPlugin (0.125.0): | ||||||
|     - FlipperKit/Core |     - FlipperKit/Core | ||||||
|     - FlipperKit/FlipperKitNetworkPlugin |     - FlipperKit/FlipperKitNetworkPlugin | ||||||
|   - fmt (6.2.1) |   - fmt (6.2.1) | ||||||
|   - glog (0.3.5) |   - glog (0.3.5) | ||||||
|   - libevent (2.1.12) |   - libevent (2.1.12) | ||||||
|   - OpenSSL-Universal (1.1.180) |   - OpenSSL-Universal (1.1.1100) | ||||||
|   - RCT-Folly (2021.06.28.00-v2): |   - RCT-Folly (2021.06.28.00-v2): | ||||||
|     - boost |     - boost | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
| @@ -85,270 +86,280 @@ PODS: | |||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - fmt (~> 6.2.1) |     - fmt (~> 6.2.1) | ||||||
|     - glog |     - glog | ||||||
|   - RCTRequired (0.66.0) |   - RCTRequired (0.68.2) | ||||||
|   - RCTTypeSafety (0.66.0): |   - RCTTypeSafety (0.68.2): | ||||||
|     - FBLazyVector (= 0.66.0) |     - FBLazyVector (= 0.68.2) | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTRequired (= 0.66.0) |     - RCTRequired (= 0.68.2) | ||||||
|     - React-Core (= 0.66.0) |     - React-Core (= 0.68.2) | ||||||
|   - React (0.66.0): |   - React (0.68.2): | ||||||
|     - React-Core (= 0.66.0) |     - React-Core (= 0.68.2) | ||||||
|     - React-Core/DevSupport (= 0.66.0) |     - React-Core/DevSupport (= 0.68.2) | ||||||
|     - React-Core/RCTWebSocket (= 0.66.0) |     - React-Core/RCTWebSocket (= 0.68.2) | ||||||
|     - React-RCTActionSheet (= 0.66.0) |     - React-RCTActionSheet (= 0.68.2) | ||||||
|     - React-RCTAnimation (= 0.66.0) |     - React-RCTAnimation (= 0.68.2) | ||||||
|     - React-RCTBlob (= 0.66.0) |     - React-RCTBlob (= 0.68.2) | ||||||
|     - React-RCTImage (= 0.66.0) |     - React-RCTImage (= 0.68.2) | ||||||
|     - React-RCTLinking (= 0.66.0) |     - React-RCTLinking (= 0.68.2) | ||||||
|     - React-RCTNetwork (= 0.66.0) |     - React-RCTNetwork (= 0.68.2) | ||||||
|     - React-RCTSettings (= 0.66.0) |     - React-RCTSettings (= 0.68.2) | ||||||
|     - React-RCTText (= 0.66.0) |     - React-RCTText (= 0.68.2) | ||||||
|     - React-RCTVibration (= 0.66.0) |     - React-RCTVibration (= 0.68.2) | ||||||
|   - React-callinvoker (0.66.0) |   - React-callinvoker (0.68.2) | ||||||
|   - React-Core (0.66.0): |   - React-Codegen (0.68.2): | ||||||
|  |     - FBReactNativeSpec (= 0.68.2) | ||||||
|  |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|  |     - RCTRequired (= 0.68.2) | ||||||
|  |     - RCTTypeSafety (= 0.68.2) | ||||||
|  |     - React-Core (= 0.68.2) | ||||||
|  |     - React-jsi (= 0.68.2) | ||||||
|  |     - React-jsiexecutor (= 0.68.2) | ||||||
|  |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|  |   - React-Core (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default (= 0.66.0) |     - React-Core/Default (= 0.68.2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/CoreModulesHeaders (0.66.0): |   - React-Core/CoreModulesHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/Default (0.66.0): |   - React-Core/Default (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/DevSupport (0.66.0): |   - React-Core/DevSupport (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default (= 0.66.0) |     - React-Core/Default (= 0.68.2) | ||||||
|     - React-Core/RCTWebSocket (= 0.66.0) |     - React-Core/RCTWebSocket (= 0.68.2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-jsinspector (= 0.66.0) |     - React-jsinspector (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTActionSheetHeaders (0.66.0): |   - React-Core/RCTActionSheetHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTAnimationHeaders (0.66.0): |   - React-Core/RCTAnimationHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTBlobHeaders (0.66.0): |   - React-Core/RCTBlobHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTImageHeaders (0.66.0): |   - React-Core/RCTImageHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTLinkingHeaders (0.66.0): |   - React-Core/RCTLinkingHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTNetworkHeaders (0.66.0): |   - React-Core/RCTNetworkHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTSettingsHeaders (0.66.0): |   - React-Core/RCTSettingsHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTTextHeaders (0.66.0): |   - React-Core/RCTTextHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTVibrationHeaders (0.66.0): |   - React-Core/RCTVibrationHeaders (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default |     - React-Core/Default | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-Core/RCTWebSocket (0.66.0): |   - React-Core/RCTWebSocket (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/Default (= 0.66.0) |     - React-Core/Default (= 0.68.2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsiexecutor (= 0.66.0) |     - React-jsiexecutor (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - Yoga |     - Yoga | ||||||
|   - React-CoreModules (0.66.0): |   - React-CoreModules (0.68.2): | ||||||
|     - FBReactNativeSpec (= 0.66.0) |  | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core/CoreModulesHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/CoreModulesHeaders (= 0.68.2) | ||||||
|     - React-RCTImage (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-RCTImage (= 0.68.2) | ||||||
|   - React-cxxreact (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|  |   - React-cxxreact (0.68.2): | ||||||
|     - boost (= 1.76.0) |     - boost (= 1.76.0) | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-callinvoker (= 0.66.0) |     - React-callinvoker (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-jsinspector (= 0.66.0) |     - React-jsinspector (= 0.68.2) | ||||||
|     - React-logger (= 0.66.0) |     - React-logger (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|     - React-runtimeexecutor (= 0.66.0) |     - React-runtimeexecutor (= 0.68.2) | ||||||
|   - React-jsi (0.66.0): |   - React-jsi (0.68.2): | ||||||
|     - boost (= 1.76.0) |     - boost (= 1.76.0) | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-jsi/Default (= 0.66.0) |     - React-jsi/Default (= 0.68.2) | ||||||
|   - React-jsi/Default (0.66.0): |   - React-jsi/Default (0.68.2): | ||||||
|     - boost (= 1.76.0) |     - boost (= 1.76.0) | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|   - React-jsiexecutor (0.66.0): |   - React-jsiexecutor (0.68.2): | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|   - React-jsinspector (0.66.0) |   - React-jsinspector (0.68.2) | ||||||
|   - React-logger (0.66.0): |   - React-logger (0.68.2): | ||||||
|     - glog |     - glog | ||||||
|   - react-native-update (6.3.0): |   - react-native-update (7.4.2): | ||||||
|     - React |     - React | ||||||
|     - react-native-update/HDiffPatch (= 6.3.0) |     - react-native-update/HDiffPatch (= 7.4.2) | ||||||
|     - react-native-update/RCTPushy (= 6.3.0) |     - react-native-update/RCTPushy (= 7.4.2) | ||||||
|     - SSZipArchive |     - SSZipArchive | ||||||
|   - react-native-update/HDiffPatch (6.3.0): |   - react-native-update/HDiffPatch (7.4.2): | ||||||
|     - React |     - React | ||||||
|     - SSZipArchive |     - SSZipArchive | ||||||
|   - react-native-update/RCTPushy (6.3.0): |   - react-native-update/RCTPushy (7.4.2): | ||||||
|     - React |     - React | ||||||
|     - SSZipArchive |     - SSZipArchive | ||||||
|   - React-perflogger (0.66.0) |   - React-perflogger (0.68.2) | ||||||
|   - React-RCTActionSheet (0.66.0): |   - React-RCTActionSheet (0.68.2): | ||||||
|     - React-Core/RCTActionSheetHeaders (= 0.66.0) |     - React-Core/RCTActionSheetHeaders (= 0.68.2) | ||||||
|   - React-RCTAnimation (0.66.0): |   - React-RCTAnimation (0.68.2): | ||||||
|     - FBReactNativeSpec (= 0.66.0) |  | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core/RCTAnimationHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTAnimationHeaders (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|   - React-RCTBlob (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTBlob (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/RCTBlobHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-Core/RCTWebSocket (= 0.66.0) |     - React-Core/RCTBlobHeaders (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTWebSocket (= 0.68.2) | ||||||
|     - React-RCTNetwork (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-RCTNetwork (= 0.68.2) | ||||||
|   - React-RCTImage (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTImage (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core/RCTImageHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTImageHeaders (= 0.68.2) | ||||||
|     - React-RCTNetwork (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-RCTNetwork (= 0.68.2) | ||||||
|   - React-RCTLinking (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTLinking (0.68.2): | ||||||
|     - React-Core/RCTLinkingHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTLinkingHeaders (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|   - React-RCTNetwork (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTNetwork (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core/RCTNetworkHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTNetworkHeaders (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|   - React-RCTSettings (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTSettings (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - RCTTypeSafety (= 0.66.0) |     - RCTTypeSafety (= 0.68.2) | ||||||
|     - React-Core/RCTSettingsHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTSettingsHeaders (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|   - React-RCTText (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - React-Core/RCTTextHeaders (= 0.66.0) |   - React-RCTText (0.68.2): | ||||||
|   - React-RCTVibration (0.66.0): |     - React-Core/RCTTextHeaders (= 0.68.2) | ||||||
|     - FBReactNativeSpec (= 0.66.0) |   - React-RCTVibration (0.68.2): | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-Core/RCTVibrationHeaders (= 0.66.0) |     - React-Codegen (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-Core/RCTVibrationHeaders (= 0.68.2) | ||||||
|     - ReactCommon/turbomodule/core (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|   - React-runtimeexecutor (0.66.0): |     - ReactCommon/turbomodule/core (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |   - React-runtimeexecutor (0.68.2): | ||||||
|   - ReactCommon/turbomodule/core (0.66.0): |     - React-jsi (= 0.68.2) | ||||||
|  |   - ReactCommon/turbomodule/core (0.68.2): | ||||||
|     - DoubleConversion |     - DoubleConversion | ||||||
|     - glog |     - glog | ||||||
|     - RCT-Folly (= 2021.06.28.00-v2) |     - RCT-Folly (= 2021.06.28.00-v2) | ||||||
|     - React-callinvoker (= 0.66.0) |     - React-callinvoker (= 0.68.2) | ||||||
|     - React-Core (= 0.66.0) |     - React-Core (= 0.68.2) | ||||||
|     - React-cxxreact (= 0.66.0) |     - React-cxxreact (= 0.68.2) | ||||||
|     - React-jsi (= 0.66.0) |     - React-jsi (= 0.68.2) | ||||||
|     - React-logger (= 0.66.0) |     - React-logger (= 0.68.2) | ||||||
|     - React-perflogger (= 0.66.0) |     - React-perflogger (= 0.68.2) | ||||||
|   - SSZipArchive (2.4.2) |   - SocketRocket (0.6.0) | ||||||
|  |   - SSZipArchive (2.4.3) | ||||||
|   - Yoga (1.14.0) |   - Yoga (1.14.0) | ||||||
|   - YogaKit (1.18.1): |   - YogaKit (1.18.1): | ||||||
|     - Yoga (~> 1.14) |     - Yoga (~> 1.14) | ||||||
| @@ -358,33 +369,35 @@ DEPENDENCIES: | |||||||
|   - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) |   - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) | ||||||
|   - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) |   - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) | ||||||
|   - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) |   - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) | ||||||
|   - Flipper (= 0.99.0) |   - Flipper (= 0.125.0) | ||||||
|   - Flipper-Boost-iOSX (= 1.76.0.1.11) |   - Flipper-Boost-iOSX (= 1.76.0.1.11) | ||||||
|   - Flipper-DoubleConversion (= 1.1.7) |   - Flipper-DoubleConversion (= 3.2.0) | ||||||
|   - Flipper-Fmt (= 7.1.7) |   - Flipper-Fmt (= 7.1.7) | ||||||
|   - Flipper-Folly (= 2.6.7) |   - Flipper-Folly (= 2.6.10) | ||||||
|   - Flipper-Glog (= 0.3.6) |   - Flipper-Glog (= 0.5.0.4) | ||||||
|   - Flipper-PeerTalk (= 0.0.4) |   - Flipper-PeerTalk (= 0.0.4) | ||||||
|   - Flipper-RSocket (= 1.4.3) |   - Flipper-RSocket (= 1.4.3) | ||||||
|   - FlipperKit (= 0.99.0) |   - FlipperKit (= 0.125.0) | ||||||
|   - FlipperKit/Core (= 0.99.0) |   - FlipperKit/Core (= 0.125.0) | ||||||
|   - FlipperKit/CppBridge (= 0.99.0) |   - FlipperKit/CppBridge (= 0.125.0) | ||||||
|   - FlipperKit/FBCxxFollyDynamicConvert (= 0.99.0) |   - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0) | ||||||
|   - FlipperKit/FBDefines (= 0.99.0) |   - FlipperKit/FBDefines (= 0.125.0) | ||||||
|   - FlipperKit/FKPortForwarding (= 0.99.0) |   - FlipperKit/FKPortForwarding (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitHighlightOverlay (= 0.99.0) |   - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitLayoutPlugin (= 0.99.0) |   - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitLayoutTextSearchable (= 0.99.0) |   - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitNetworkPlugin (= 0.99.0) |   - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitReactPlugin (= 0.99.0) |   - FlipperKit/FlipperKitReactPlugin (= 0.125.0) | ||||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.99.0) |   - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) | ||||||
|   - FlipperKit/SKIOSNetworkPlugin (= 0.99.0) |   - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) | ||||||
|   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) |   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) | ||||||
|  |   - OpenSSL-Universal (= 1.1.1100) | ||||||
|   - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) |   - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) | ||||||
|   - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) |   - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) | ||||||
|   - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) |   - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) | ||||||
|   - React (from `../node_modules/react-native/`) |   - React (from `../node_modules/react-native/`) | ||||||
|   - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) |   - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) | ||||||
|  |   - React-Codegen (from `build/generated/ios`) | ||||||
|   - React-Core (from `../node_modules/react-native/`) |   - React-Core (from `../node_modules/react-native/`) | ||||||
|   - React-Core/DevSupport (from `../node_modules/react-native/`) |   - React-Core/DevSupport (from `../node_modules/react-native/`) | ||||||
|   - React-Core/RCTWebSocket (from `../node_modules/react-native/`) |   - React-Core/RCTWebSocket (from `../node_modules/react-native/`) | ||||||
| @@ -424,6 +437,7 @@ SPEC REPOS: | |||||||
|     - fmt |     - fmt | ||||||
|     - libevent |     - libevent | ||||||
|     - OpenSSL-Universal |     - OpenSSL-Universal | ||||||
|  |     - SocketRocket | ||||||
|     - SSZipArchive |     - SSZipArchive | ||||||
|     - YogaKit |     - YogaKit | ||||||
|  |  | ||||||
| @@ -448,6 +462,8 @@ EXTERNAL SOURCES: | |||||||
|     :path: "../node_modules/react-native/" |     :path: "../node_modules/react-native/" | ||||||
|   React-callinvoker: |   React-callinvoker: | ||||||
|     :path: "../node_modules/react-native/ReactCommon/callinvoker" |     :path: "../node_modules/react-native/ReactCommon/callinvoker" | ||||||
|  |   React-Codegen: | ||||||
|  |     :path: build/generated/ios | ||||||
|   React-Core: |   React-Core: | ||||||
|     :path: "../node_modules/react-native/" |     :path: "../node_modules/react-native/" | ||||||
|   React-CoreModules: |   React-CoreModules: | ||||||
| @@ -495,50 +511,52 @@ SPEC CHECKSUMS: | |||||||
|   boost: a7c83b31436843459a1961bfd74b96033dc77234 |   boost: a7c83b31436843459a1961bfd74b96033dc77234 | ||||||
|   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 |   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 | ||||||
|   DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 |   DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 | ||||||
|   FBLazyVector: 6816ca39e1cc8beffd2a96783f518296789d1c48 |   FBLazyVector: a7a655862f6b09625d11c772296b01cd5164b648 | ||||||
|   FBReactNativeSpec: 3b1e86618e902743fde35b40cf9ebd100fd655b7 |   FBReactNativeSpec: 81ce99032d5b586fddd6a38d450f8595f7e04be4 | ||||||
|   Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 |   Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 | ||||||
|   Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c |   Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c | ||||||
|   Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 |   Flipper-DoubleConversion: 3d3d04a078d4f3a1b6c6916587f159dc11f232c4 | ||||||
|   Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b |   Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b | ||||||
|   Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a |   Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 | ||||||
|   Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 |   Flipper-Glog: 87bc98ff48de90cb5b0b5114ed3da79d85ee2dd4 | ||||||
|   Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 |   Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 | ||||||
|   Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 |   Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 | ||||||
|   FlipperKit: d8d346844eca5d9120c17d441a2f38596e8ed2b9 |   FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 | ||||||
|   fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 |   fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 | ||||||
|   glog: 5337263514dd6f09803962437687240c5dc39aa4 |   glog: 476ee3e89abb49e07f822b48323c51c57124b572 | ||||||
|   libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 |   libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 | ||||||
|   OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b |   OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c | ||||||
|   RCT-Folly: a21c126816d8025b547704b777a2ba552f3d9fa9 |   RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 | ||||||
|   RCTRequired: e4a18a90004e0ed97bba9081099104fd0f658dc9 |   RCTRequired: 3e917ea5377751094f38145fdece525aa90545a0 | ||||||
|   RCTTypeSafety: 8a3c31d38de58e1a6a7df6e4e643644a60b00e22 |   RCTTypeSafety: c43c072a4bd60feb49a9570b0517892b4305c45e | ||||||
|   React: 2b1d0dc3c23e01b754588a74a5b265282d9eb61e |   React: 176dd882de001854ced260fad41bb68a31aa4bd0 | ||||||
|   React-callinvoker: 57c195e780695285fa56e61efdbc0ca0e9204484 |   React-callinvoker: c2864d1818d6e64928d2faf774a3800dfc38fe1f | ||||||
|   React-Core: 45e4b3c57b0b5fdbb24bc6a63a964870c0405955 |   React-Codegen: 98b6f97f0a7abf7d67e4ce435c77c05b7a95cf05 | ||||||
|   React-CoreModules: d7bb1ae3436eddd85a7eb6d5e928f8c1655d87db |   React-Core: fdaa2916b1c893f39f02cff0476d1fb0cab1e352 | ||||||
|   React-cxxreact: 60c850e9997b21ee302757c36a460efc944183e7 |   React-CoreModules: fd8705b80699ec36c2cdd635c2ce9d874b9cfdfc | ||||||
|   React-jsi: 38d68cb1b53843703100830d530342b32f8e0878 |   React-cxxreact: 1832d971f7b0cb2c7b943dc0ec962762c90c906e | ||||||
|   React-jsiexecutor: 6a05173dc0142abc582bd4edd2d23146b8cc218a |   React-jsi: 72af715135abe8c3f0dcf3b2548b71d048b69a7e | ||||||
|   React-jsinspector: be95ad424ba9f7b817aff22732eb9b1b810a000a |   React-jsiexecutor: b7b553412f2ec768fe6c8f27cd6bafdb9d8719e6 | ||||||
|   React-logger: 9a9cd87d4ea681ae929b32ef580638ff1b50fb24 |   React-jsinspector: c5989c77cb89ae6a69561095a61cce56a44ae8e8 | ||||||
|   react-native-update: 0fc93e720f09bf7b465292dcd2fb8d8db3aef763 |   React-logger: a0833912d93b36b791b7a521672d8ee89107aff1 | ||||||
|   React-perflogger: 1f554c2b684e2f484f9edcdfdaeedab039fbaca8 |   react-native-update: 35b44bdcfd37e0f0bbef8ceb1bdda85067e591ff | ||||||
|   React-RCTActionSheet: 610d5a5d71ab4808734782c8bca6a12ec3563672 |   React-perflogger: a18b4f0bd933b8b24ecf9f3c54f9bf65180f3fe6 | ||||||
|   React-RCTAnimation: ec6ed97370ace32724c253f29f0586cafcab8126 |   React-RCTActionSheet: 547fe42fdb4b6089598d79f8e1d855d7c23e2162 | ||||||
|   React-RCTBlob: b3270d498ff240f49c50e1bc950b6e5fd48886ba |   React-RCTAnimation: bc9440a1c37b06ae9ebbb532d244f607805c6034 | ||||||
|   React-RCTImage: 23d5e26669b31230bea3fd99eb703af699e5d61a |   React-RCTBlob: a1295c8e183756d7ef30ba6e8f8144dfe8a19215 | ||||||
|   React-RCTLinking: edaaee9dee82b79e90e7b903d8913fa72284fbba |   React-RCTImage: a30d1ee09b1334067fbb6f30789aae2d7ac150c9 | ||||||
|   React-RCTNetwork: e8825053dd1b5c2a0e1aa3cf1127750b624f90c0 |   React-RCTLinking: ffc6d5b88d1cb9aca13c54c2ec6507fbf07f2ac4 | ||||||
|   React-RCTSettings: 40d7ae987031c5dc561d11cd3a15cc1245a11d42 |   React-RCTNetwork: f807a2facab6cf5cf36d592e634611de9cf12d81 | ||||||
|   React-RCTText: 6e104479d4f0bb593b4cf90b6fc6e5390c12ccde |   React-RCTSettings: 861806819226ed8332e6a8f90df2951a34bb3e7f | ||||||
|   React-RCTVibration: 53b92d54b923283638cb0186da7a5c2d2b70a49b |   React-RCTText: f3fb464cc41a50fc7a1aba4deeb76a9ad8282cb9 | ||||||
|   React-runtimeexecutor: 4bb657a97aa74568d9ed634c8bd478299bb8a3a6 |   React-RCTVibration: 79040b92bfa9c3c2d2cb4f57e981164ec7ab9374 | ||||||
|   ReactCommon: eb059748e842a1a86025ebbd4ac9d99e74492f88 |   React-runtimeexecutor: b960b687d2dfef0d3761fbb187e01812ebab8b23 | ||||||
|   SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2 |   ReactCommon: 095366164a276d91ea704ce53cb03825c487a3f2 | ||||||
|   Yoga: c11abbf5809216c91fcd62f5571078b83d9b6720 |   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 | ||||||
|  |   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef | ||||||
|  |   Yoga: 99652481fcd320aefa4a7ef90095b95acd181952 | ||||||
|   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a |   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a | ||||||
|  |  | ||||||
| PODFILE CHECKSUM: a26b18e70d6c4725e0254b56751afbc7620020ff | PODFILE CHECKSUM: 3360a41d7ffd204bbb0ce92d9f9025f372649143 | ||||||
|  |  | ||||||
| COCOAPODS: 1.11.2 | COCOAPODS: 1.11.3 | ||||||
|   | |||||||
| @@ -1,9 +0,0 @@ | |||||||
| // |  | ||||||
| //  dummy.swift |  | ||||||
| //  testHotUpdate |  | ||||||
| // |  | ||||||
| //  Created by Qingming, Sunny Luo on 9/1/20. |  | ||||||
| //  Copyright © 2020 Facebook. All rights reserved. |  | ||||||
| // |  | ||||||
|  |  | ||||||
| import Foundation |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| // |  | ||||||
| //  Use this file to import your target's public headers that you would like to expose to Swift. |  | ||||||
| // |  | ||||||
|  |  | ||||||
| @@ -3,77 +3,99 @@ | |||||||
| 	archiveVersion = 1; | 	archiveVersion = 1; | ||||||
| 	classes = { | 	classes = { | ||||||
| 	}; | 	}; | ||||||
| 	objectVersion = 46; | 	objectVersion = 54; | ||||||
| 	objects = { | 	objects = { | ||||||
|  |  | ||||||
| /* Begin PBXBuildFile section */ | /* Begin PBXBuildFile section */ | ||||||
| 		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; | 		00E356F31AD99517003FC87E /* testHotupdateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* testHotupdateTests.m */; }; | ||||||
| 		13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; | 		0C80B921A6F3F58F76C31292 /* libPods-testHotupdate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-testHotupdate.a */; }; | ||||||
|  | 		13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; | ||||||
| 		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | 		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||||||
| 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||||||
| 		7610A16EF1CB8A7644EAFA55 /* libPods-testHotUpdate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 28C264AEBE1E206870F9D871 /* libPods-testHotUpdate.a */; }; | 		81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; | ||||||
| 		F1CBCFD724FE1CF80019170D /* dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1CBCFD624FE1CF80019170D /* dummy.swift */; }; |  | ||||||
| /* End PBXBuildFile section */ | /* End PBXBuildFile section */ | ||||||
|  |  | ||||||
|  | /* Begin PBXContainerItemProxy section */ | ||||||
|  | 		00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { | ||||||
|  | 			isa = PBXContainerItemProxy; | ||||||
|  | 			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||||||
|  | 			proxyType = 1; | ||||||
|  | 			remoteGlobalIDString = 13B07F861A680F5B00A75B9A; | ||||||
|  | 			remoteInfo = testHotupdate; | ||||||
|  | 		}; | ||||||
|  | /* End PBXContainerItemProxy section */ | ||||||
|  |  | ||||||
| /* Begin PBXFileReference section */ | /* Begin PBXFileReference section */ | ||||||
| 		008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; }; | 		00E356EE1AD99517003FC87E /* testHotupdateTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = testHotupdateTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||||
| 		13B07F961A680F5B00A75B9A /* testHotUpdate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testHotUpdate.app; sourceTree = BUILT_PRODUCTS_DIR; }; | 		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||||
| 		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = testHotUpdate/AppDelegate.h; sourceTree = "<group>"; }; | 		00E356F21AD99517003FC87E /* testHotupdateTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = testHotupdateTests.m; sourceTree = "<group>"; }; | ||||||
| 		13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = testHotUpdate/AppDelegate.m; sourceTree = "<group>"; }; | 		13B07F961A680F5B00A75B9A /* testHotupdate.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testHotupdate.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||||
| 		13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; }; | 		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = testHotupdate/AppDelegate.h; sourceTree = "<group>"; }; | ||||||
| 		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = testHotUpdate/Images.xcassets; sourceTree = "<group>"; }; | 		13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = testHotupdate/AppDelegate.mm; sourceTree = "<group>"; }; | ||||||
| 		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = testHotUpdate/Info.plist; sourceTree = "<group>"; }; | 		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = testHotupdate/Images.xcassets; sourceTree = "<group>"; }; | ||||||
| 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = testHotUpdate/main.m; sourceTree = "<group>"; }; | 		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = testHotupdate/Info.plist; sourceTree = "<group>"; }; | ||||||
| 		1A3E77317B15A5C3816ACE3A /* Pods-testHotUpdate.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testHotUpdate.release.xcconfig"; path = "Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate.release.xcconfig"; sourceTree = "<group>"; }; | 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = testHotupdate/main.m; sourceTree = "<group>"; }; | ||||||
| 		28C264AEBE1E206870F9D871 /* libPods-testHotUpdate.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testHotUpdate.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | 		3B4392A12AC88292D35C810B /* Pods-testHotupdate.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testHotupdate.debug.xcconfig"; path = "Target Support Files/Pods-testHotupdate/Pods-testHotupdate.debug.xcconfig"; sourceTree = "<group>"; }; | ||||||
| 		84EBA9C1A760F4136B306391 /* Pods-testHotUpdate.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testHotUpdate.debug.xcconfig"; path = "Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate.debug.xcconfig"; sourceTree = "<group>"; }; | 		5709B34CF0A7D63546082F79 /* Pods-testHotupdate.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-testHotupdate.release.xcconfig"; path = "Target Support Files/Pods-testHotupdate/Pods-testHotupdate.release.xcconfig"; sourceTree = "<group>"; }; | ||||||
|  | 		5DCACB8F33CDC322A6C60F78 /* libPods-testHotupdate.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-testHotupdate.a"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||||
|  | 		81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = testHotupdate/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||||||
| 		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; | 		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; | ||||||
| 		F1CBCFD524FE1CF80019170D /* testHotUpdate-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "testHotUpdate-Bridging-Header.h"; sourceTree = "<group>"; }; |  | ||||||
| 		F1CBCFD624FE1CF80019170D /* dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = dummy.swift; sourceTree = "<group>"; }; |  | ||||||
| /* End PBXFileReference section */ | /* End PBXFileReference section */ | ||||||
|  |  | ||||||
| /* Begin PBXFrameworksBuildPhase section */ | /* Begin PBXFrameworksBuildPhase section */ | ||||||
|  | 		00E356EB1AD99517003FC87E /* Frameworks */ = { | ||||||
|  | 			isa = PBXFrameworksBuildPhase; | ||||||
|  | 			buildActionMask = 2147483647; | ||||||
|  | 			files = ( | ||||||
|  | 			); | ||||||
|  | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
|  | 		}; | ||||||
| 		13B07F8C1A680F5B00A75B9A /* Frameworks */ = { | 		13B07F8C1A680F5B00A75B9A /* Frameworks */ = { | ||||||
| 			isa = PBXFrameworksBuildPhase; | 			isa = PBXFrameworksBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
| 				7610A16EF1CB8A7644EAFA55 /* libPods-testHotUpdate.a in Frameworks */, | 				0C80B921A6F3F58F76C31292 /* libPods-testHotupdate.a in Frameworks */, | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 		}; | 		}; | ||||||
| /* End PBXFrameworksBuildPhase section */ | /* End PBXFrameworksBuildPhase section */ | ||||||
|  |  | ||||||
| /* Begin PBXGroup section */ | /* Begin PBXGroup section */ | ||||||
| 		01BE24D9B241677DDB885684 /* Pods */ = { | 		00E356EF1AD99517003FC87E /* testHotupdateTests */ = { | ||||||
| 			isa = PBXGroup; | 			isa = PBXGroup; | ||||||
| 			children = ( | 			children = ( | ||||||
| 				84EBA9C1A760F4136B306391 /* Pods-testHotUpdate.debug.xcconfig */, | 				00E356F21AD99517003FC87E /* testHotupdateTests.m */, | ||||||
| 				1A3E77317B15A5C3816ACE3A /* Pods-testHotUpdate.release.xcconfig */, | 				00E356F01AD99517003FC87E /* Supporting Files */, | ||||||
| 			); | 			); | ||||||
| 			path = Pods; | 			path = testHotupdateTests; | ||||||
| 			sourceTree = "<group>"; | 			sourceTree = "<group>"; | ||||||
| 		}; | 		}; | ||||||
| 		13B07FAE1A68108700A75B9A /* testHotUpdate */ = { | 		00E356F01AD99517003FC87E /* Supporting Files */ = { | ||||||
|  | 			isa = PBXGroup; | ||||||
|  | 			children = ( | ||||||
|  | 				00E356F11AD99517003FC87E /* Info.plist */, | ||||||
|  | 			); | ||||||
|  | 			name = "Supporting Files"; | ||||||
|  | 			sourceTree = "<group>"; | ||||||
|  | 		}; | ||||||
|  | 		13B07FAE1A68108700A75B9A /* testHotupdate */ = { | ||||||
| 			isa = PBXGroup; | 			isa = PBXGroup; | ||||||
| 			children = ( | 			children = ( | ||||||
| 				008F07F21AC5B25A0029DE68 /* main.jsbundle */, |  | ||||||
| 				13B07FAF1A68108700A75B9A /* AppDelegate.h */, | 				13B07FAF1A68108700A75B9A /* AppDelegate.h */, | ||||||
| 				13B07FB01A68108700A75B9A /* AppDelegate.m */, | 				13B07FB01A68108700A75B9A /* AppDelegate.mm */, | ||||||
| 				13B07FB51A68108700A75B9A /* Images.xcassets */, | 				13B07FB51A68108700A75B9A /* Images.xcassets */, | ||||||
| 				13B07FB61A68108700A75B9A /* Info.plist */, | 				13B07FB61A68108700A75B9A /* Info.plist */, | ||||||
| 				13B07FB11A68108700A75B9A /* LaunchScreen.xib */, | 				81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, | ||||||
| 				13B07FB71A68108700A75B9A /* main.m */, | 				13B07FB71A68108700A75B9A /* main.m */, | ||||||
| 				F1CBCFD624FE1CF80019170D /* dummy.swift */, |  | ||||||
| 				F1CBCFD524FE1CF80019170D /* testHotUpdate-Bridging-Header.h */, |  | ||||||
| 			); | 			); | ||||||
| 			name = testHotUpdate; | 			name = testHotupdate; | ||||||
| 			sourceTree = "<group>"; | 			sourceTree = "<group>"; | ||||||
| 		}; | 		}; | ||||||
| 		2D16E6871FA4F8E400B85C8A /* Frameworks */ = { | 		2D16E6871FA4F8E400B85C8A /* Frameworks */ = { | ||||||
| 			isa = PBXGroup; | 			isa = PBXGroup; | ||||||
| 			children = ( | 			children = ( | ||||||
| 				ED297162215061F000B7C4FE /* JavaScriptCore.framework */, | 				ED297162215061F000B7C4FE /* JavaScriptCore.framework */, | ||||||
| 				28C264AEBE1E206870F9D871 /* libPods-testHotUpdate.a */, | 				5DCACB8F33CDC322A6C60F78 /* libPods-testHotupdate.a */, | ||||||
| 			); | 			); | ||||||
| 			name = Frameworks; | 			name = Frameworks; | ||||||
| 			sourceTree = "<group>"; | 			sourceTree = "<group>"; | ||||||
| @@ -88,11 +110,12 @@ | |||||||
| 		83CBB9F61A601CBA00E9B192 = { | 		83CBB9F61A601CBA00E9B192 = { | ||||||
| 			isa = PBXGroup; | 			isa = PBXGroup; | ||||||
| 			children = ( | 			children = ( | ||||||
| 				13B07FAE1A68108700A75B9A /* testHotUpdate */, | 				13B07FAE1A68108700A75B9A /* testHotupdate */, | ||||||
| 				832341AE1AAA6A7D00B99B32 /* Libraries */, | 				832341AE1AAA6A7D00B99B32 /* Libraries */, | ||||||
|  | 				00E356EF1AD99517003FC87E /* testHotupdateTests */, | ||||||
| 				83CBBA001A601CBA00E9B192 /* Products */, | 				83CBBA001A601CBA00E9B192 /* Products */, | ||||||
| 				2D16E6871FA4F8E400B85C8A /* Frameworks */, | 				2D16E6871FA4F8E400B85C8A /* Frameworks */, | ||||||
| 				01BE24D9B241677DDB885684 /* Pods */, | 				BBD78D7AC51CEA395F1C20DB /* Pods */, | ||||||
| 			); | 			); | ||||||
| 			indentWidth = 2; | 			indentWidth = 2; | ||||||
| 			sourceTree = "<group>"; | 			sourceTree = "<group>"; | ||||||
| @@ -102,34 +125,62 @@ | |||||||
| 		83CBBA001A601CBA00E9B192 /* Products */ = { | 		83CBBA001A601CBA00E9B192 /* Products */ = { | ||||||
| 			isa = PBXGroup; | 			isa = PBXGroup; | ||||||
| 			children = ( | 			children = ( | ||||||
| 				13B07F961A680F5B00A75B9A /* testHotUpdate.app */, | 				13B07F961A680F5B00A75B9A /* testHotupdate.app */, | ||||||
|  | 				00E356EE1AD99517003FC87E /* testHotupdateTests.xctest */, | ||||||
| 			); | 			); | ||||||
| 			name = Products; | 			name = Products; | ||||||
| 			sourceTree = "<group>"; | 			sourceTree = "<group>"; | ||||||
| 		}; | 		}; | ||||||
|  | 		BBD78D7AC51CEA395F1C20DB /* Pods */ = { | ||||||
|  | 			isa = PBXGroup; | ||||||
|  | 			children = ( | ||||||
|  | 				3B4392A12AC88292D35C810B /* Pods-testHotupdate.debug.xcconfig */, | ||||||
|  | 				5709B34CF0A7D63546082F79 /* Pods-testHotupdate.release.xcconfig */, | ||||||
|  | 			); | ||||||
|  | 			path = Pods; | ||||||
|  | 			sourceTree = "<group>"; | ||||||
|  | 		}; | ||||||
| /* End PBXGroup section */ | /* End PBXGroup section */ | ||||||
|  |  | ||||||
| /* Begin PBXNativeTarget section */ | /* Begin PBXNativeTarget section */ | ||||||
| 		13B07F861A680F5B00A75B9A /* testHotUpdate */ = { | 		00E356ED1AD99517003FC87E /* testHotupdateTests */ = { | ||||||
| 			isa = PBXNativeTarget; | 			isa = PBXNativeTarget; | ||||||
| 			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testHotUpdate" */; | 			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "testHotupdateTests" */; | ||||||
| 			buildPhases = ( | 			buildPhases = ( | ||||||
| 				C49C562FA1BDE1F80ECD9C13 /* [CP] Check Pods Manifest.lock */, | 				00E356EA1AD99517003FC87E /* Sources */, | ||||||
|  | 				00E356EB1AD99517003FC87E /* Frameworks */, | ||||||
|  | 				00E356EC1AD99517003FC87E /* Resources */, | ||||||
|  | 			); | ||||||
|  | 			buildRules = ( | ||||||
|  | 			); | ||||||
|  | 			dependencies = ( | ||||||
|  | 				00E356F51AD99517003FC87E /* PBXTargetDependency */, | ||||||
|  | 			); | ||||||
|  | 			name = testHotupdateTests; | ||||||
|  | 			productName = testHotupdateTests; | ||||||
|  | 			productReference = 00E356EE1AD99517003FC87E /* testHotupdateTests.xctest */; | ||||||
|  | 			productType = "com.apple.product-type.bundle.unit-test"; | ||||||
|  | 		}; | ||||||
|  | 		13B07F861A680F5B00A75B9A /* testHotupdate */ = { | ||||||
|  | 			isa = PBXNativeTarget; | ||||||
|  | 			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testHotupdate" */; | ||||||
|  | 			buildPhases = ( | ||||||
|  | 				C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, | ||||||
| 				FD10A7F022414F080027D42C /* Start Packager */, | 				FD10A7F022414F080027D42C /* Start Packager */, | ||||||
| 				13B07F871A680F5B00A75B9A /* Sources */, | 				13B07F871A680F5B00A75B9A /* Sources */, | ||||||
| 				13B07F8C1A680F5B00A75B9A /* Frameworks */, | 				13B07F8C1A680F5B00A75B9A /* Frameworks */, | ||||||
| 				13B07F8E1A680F5B00A75B9A /* Resources */, | 				13B07F8E1A680F5B00A75B9A /* Resources */, | ||||||
| 				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, | 				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, | ||||||
| 				1CD78CE8A2E7B88FAE48FCEE /* [CP] Copy Pods Resources */, | 				00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, | ||||||
| 				F9FE0A60F5C1B623C43151B4 /* [CP] Embed Pods Frameworks */, | 				E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, | ||||||
| 			); | 			); | ||||||
| 			buildRules = ( | 			buildRules = ( | ||||||
| 			); | 			); | ||||||
| 			dependencies = ( | 			dependencies = ( | ||||||
| 			); | 			); | ||||||
| 			name = testHotUpdate; | 			name = testHotupdate; | ||||||
| 			productName = testHotUpdate; | 			productName = testHotupdate; | ||||||
| 			productReference = 13B07F961A680F5B00A75B9A /* testHotUpdate.app */; | 			productReference = 13B07F961A680F5B00A75B9A /* testHotupdate.app */; | ||||||
| 			productType = "com.apple.product-type.application"; | 			productType = "com.apple.product-type.application"; | ||||||
| 		}; | 		}; | ||||||
| /* End PBXNativeTarget section */ | /* End PBXNativeTarget section */ | ||||||
| @@ -138,21 +189,22 @@ | |||||||
| 		83CBB9F71A601CBA00E9B192 /* Project object */ = { | 		83CBB9F71A601CBA00E9B192 /* Project object */ = { | ||||||
| 			isa = PBXProject; | 			isa = PBXProject; | ||||||
| 			attributes = { | 			attributes = { | ||||||
| 				LastUpgradeCheck = 0940; | 				LastUpgradeCheck = 1210; | ||||||
| 				ORGANIZATIONNAME = Facebook; |  | ||||||
| 				TargetAttributes = { | 				TargetAttributes = { | ||||||
|  | 					00E356ED1AD99517003FC87E = { | ||||||
|  | 						CreatedOnToolsVersion = 6.2; | ||||||
|  | 						TestTargetID = 13B07F861A680F5B00A75B9A; | ||||||
|  | 					}; | ||||||
| 					13B07F861A680F5B00A75B9A = { | 					13B07F861A680F5B00A75B9A = { | ||||||
| 						DevelopmentTeam = JD75Q9JJL2; | 						LastSwiftMigration = 1120; | ||||||
| 						LastSwiftMigration = 1160; |  | ||||||
| 					}; | 					}; | ||||||
| 				}; | 				}; | ||||||
| 			}; | 			}; | ||||||
| 			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testHotUpdate" */; | 			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testHotupdate" */; | ||||||
| 			compatibilityVersion = "Xcode 3.2"; | 			compatibilityVersion = "Xcode 12.0"; | ||||||
| 			developmentRegion = English; | 			developmentRegion = en; | ||||||
| 			hasScannedForEncodings = 0; | 			hasScannedForEncodings = 0; | ||||||
| 			knownRegions = ( | 			knownRegions = ( | ||||||
| 				English, |  | ||||||
| 				en, | 				en, | ||||||
| 				Base, | 				Base, | ||||||
| 			); | 			); | ||||||
| @@ -161,18 +213,26 @@ | |||||||
| 			projectDirPath = ""; | 			projectDirPath = ""; | ||||||
| 			projectRoot = ""; | 			projectRoot = ""; | ||||||
| 			targets = ( | 			targets = ( | ||||||
| 				13B07F861A680F5B00A75B9A /* testHotUpdate */, | 				13B07F861A680F5B00A75B9A /* testHotupdate */, | ||||||
|  | 				00E356ED1AD99517003FC87E /* testHotupdateTests */, | ||||||
| 			); | 			); | ||||||
| 		}; | 		}; | ||||||
| /* End PBXProject section */ | /* End PBXProject section */ | ||||||
|  |  | ||||||
| /* Begin PBXResourcesBuildPhase section */ | /* Begin PBXResourcesBuildPhase section */ | ||||||
|  | 		00E356EC1AD99517003FC87E /* Resources */ = { | ||||||
|  | 			isa = PBXResourcesBuildPhase; | ||||||
|  | 			buildActionMask = 2147483647; | ||||||
|  | 			files = ( | ||||||
|  | 			); | ||||||
|  | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
|  | 		}; | ||||||
| 		13B07F8E1A680F5B00A75B9A /* Resources */ = { | 		13B07F8E1A680F5B00A75B9A /* Resources */ = { | ||||||
| 			isa = PBXResourcesBuildPhase; | 			isa = PBXResourcesBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
|  | 				81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, | ||||||
| 				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, | 				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, | ||||||
| 				13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, |  | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 		}; | 		}; | ||||||
| @@ -191,29 +251,26 @@ | |||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 			shellPath = /bin/sh; | 			shellPath = /bin/sh; | ||||||
| 			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; | 			shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; | ||||||
| 		}; | 		}; | ||||||
| 		1CD78CE8A2E7B88FAE48FCEE /* [CP] Copy Pods Resources */ = { | 		00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { | ||||||
| 			isa = PBXShellScriptBuildPhase; | 			isa = PBXShellScriptBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
| 			); | 			); | ||||||
| 			inputPaths = ( | 			inputFileListPaths = ( | ||||||
| 				"${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-resources.sh", | 				"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||||||
| 				"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", |  | ||||||
| 				"${PODS_ROOT}/../../../../ios/pushy_build_time.txt", |  | ||||||
| 			); | 			); | ||||||
| 			name = "[CP] Copy Pods Resources"; | 			name = "[CP] Embed Pods Frameworks"; | ||||||
| 			outputPaths = ( | 			outputFileListPaths = ( | ||||||
| 				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", | 				"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||||||
| 				"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pushy_build_time.txt", |  | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 			shellPath = /bin/sh; | 			shellPath = /bin/sh; | ||||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-resources.sh\"\n"; | 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-frameworks.sh\"\n"; | ||||||
| 			showEnvVarsInLog = 0; | 			showEnvVarsInLog = 0; | ||||||
| 		}; | 		}; | ||||||
| 		C49C562FA1BDE1F80ECD9C13 /* [CP] Check Pods Manifest.lock */ = { | 		C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { | ||||||
| 			isa = PBXShellScriptBuildPhase; | 			isa = PBXShellScriptBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
| @@ -228,29 +285,28 @@ | |||||||
| 			outputFileListPaths = ( | 			outputFileListPaths = ( | ||||||
| 			); | 			); | ||||||
| 			outputPaths = ( | 			outputPaths = ( | ||||||
| 				"$(DERIVED_FILE_DIR)/Pods-testHotUpdate-checkManifestLockResult.txt", | 				"$(DERIVED_FILE_DIR)/Pods-testHotupdate-checkManifestLockResult.txt", | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 			shellPath = /bin/sh; | 			shellPath = /bin/sh; | ||||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | 			shellScript = "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; | 			showEnvVarsInLog = 0; | ||||||
| 		}; | 		}; | ||||||
| 		F9FE0A60F5C1B623C43151B4 /* [CP] Embed Pods Frameworks */ = { | 		E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { | ||||||
| 			isa = PBXShellScriptBuildPhase; | 			isa = PBXShellScriptBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
| 			); | 			); | ||||||
| 			inputPaths = ( | 			inputFileListPaths = ( | ||||||
| 				"${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-frameworks.sh", | 				"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-resources-${CONFIGURATION}-input-files.xcfilelist", | ||||||
| 				"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", |  | ||||||
| 			); | 			); | ||||||
| 			name = "[CP] Embed Pods Frameworks"; | 			name = "[CP] Copy Pods Resources"; | ||||||
| 			outputPaths = ( | 			outputFileListPaths = ( | ||||||
| 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", | 				"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-resources-${CONFIGURATION}-output-files.xcfilelist", | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 			shellPath = /bin/sh; | 			shellPath = /bin/sh; | ||||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testHotUpdate/Pods-testHotUpdate-frameworks.sh\"\n"; | 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-testHotupdate/Pods-testHotupdate-resources.sh\"\n"; | ||||||
| 			showEnvVarsInLog = 0; | 			showEnvVarsInLog = 0; | ||||||
| 		}; | 		}; | ||||||
| 		FD10A7F022414F080027D42C /* Start Packager */ = { | 		FD10A7F022414F080027D42C /* Start Packager */ = { | ||||||
| @@ -275,51 +331,103 @@ | |||||||
| /* End PBXShellScriptBuildPhase section */ | /* End PBXShellScriptBuildPhase section */ | ||||||
|  |  | ||||||
| /* Begin PBXSourcesBuildPhase section */ | /* Begin PBXSourcesBuildPhase section */ | ||||||
|  | 		00E356EA1AD99517003FC87E /* Sources */ = { | ||||||
|  | 			isa = PBXSourcesBuildPhase; | ||||||
|  | 			buildActionMask = 2147483647; | ||||||
|  | 			files = ( | ||||||
|  | 				00E356F31AD99517003FC87E /* testHotupdateTests.m in Sources */, | ||||||
|  | 			); | ||||||
|  | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
|  | 		}; | ||||||
| 		13B07F871A680F5B00A75B9A /* Sources */ = { | 		13B07F871A680F5B00A75B9A /* Sources */ = { | ||||||
| 			isa = PBXSourcesBuildPhase; | 			isa = PBXSourcesBuildPhase; | ||||||
| 			buildActionMask = 2147483647; | 			buildActionMask = 2147483647; | ||||||
| 			files = ( | 			files = ( | ||||||
| 				13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, | 				13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, | ||||||
| 				F1CBCFD724FE1CF80019170D /* dummy.swift in Sources */, |  | ||||||
| 				13B07FC11A68108700A75B9A /* main.m in Sources */, | 				13B07FC11A68108700A75B9A /* main.m in Sources */, | ||||||
| 			); | 			); | ||||||
| 			runOnlyForDeploymentPostprocessing = 0; | 			runOnlyForDeploymentPostprocessing = 0; | ||||||
| 		}; | 		}; | ||||||
| /* End PBXSourcesBuildPhase section */ | /* End PBXSourcesBuildPhase section */ | ||||||
|  |  | ||||||
| /* Begin PBXVariantGroup section */ | /* Begin PBXTargetDependency section */ | ||||||
| 		13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { | 		00E356F51AD99517003FC87E /* PBXTargetDependency */ = { | ||||||
| 			isa = PBXVariantGroup; | 			isa = PBXTargetDependency; | ||||||
| 			children = ( | 			target = 13B07F861A680F5B00A75B9A /* testHotupdate */; | ||||||
| 				13B07FB21A68108700A75B9A /* Base */, | 			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; | ||||||
| 			); |  | ||||||
| 			name = LaunchScreen.xib; |  | ||||||
| 			path = testHotUpdate; |  | ||||||
| 			sourceTree = "<group>"; |  | ||||||
| 		}; | 		}; | ||||||
| /* End PBXVariantGroup section */ | /* End PBXTargetDependency section */ | ||||||
|  |  | ||||||
| /* Begin XCBuildConfiguration section */ | /* Begin XCBuildConfiguration section */ | ||||||
|  | 		00E356F61AD99517003FC87E /* Debug */ = { | ||||||
|  | 			isa = XCBuildConfiguration; | ||||||
|  | 			buildSettings = { | ||||||
|  | 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||||
|  | 				GCC_PREPROCESSOR_DEFINITIONS = ( | ||||||
|  | 					"DEBUG=1", | ||||||
|  | 					"$(inherited)", | ||||||
|  | 				); | ||||||
|  | 				INFOPLIST_FILE = testHotupdateTests/Info.plist; | ||||||
|  | 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||||
|  | 				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)/testHotupdate.app/testHotupdate"; | ||||||
|  | 			}; | ||||||
|  | 			name = Debug; | ||||||
|  | 		}; | ||||||
|  | 		00E356F71AD99517003FC87E /* Release */ = { | ||||||
|  | 			isa = XCBuildConfiguration; | ||||||
|  | 			buildSettings = { | ||||||
|  | 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||||
|  | 				COPY_PHASE_STRIP = NO; | ||||||
|  | 				INFOPLIST_FILE = testHotupdateTests/Info.plist; | ||||||
|  | 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||||
|  | 				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)/testHotupdate.app/testHotupdate"; | ||||||
|  | 			}; | ||||||
|  | 			name = Release; | ||||||
|  | 		}; | ||||||
| 		13B07F941A680F5B00A75B9A /* Debug */ = { | 		13B07F941A680F5B00A75B9A /* Debug */ = { | ||||||
| 			isa = XCBuildConfiguration; | 			isa = XCBuildConfiguration; | ||||||
| 			baseConfigurationReference = 84EBA9C1A760F4136B306391 /* Pods-testHotUpdate.debug.xcconfig */; | 			baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-testHotupdate.debug.xcconfig */; | ||||||
| 			buildSettings = { | 			buildSettings = { | ||||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||||
| 				CLANG_ENABLE_MODULES = YES; | 				CLANG_ENABLE_MODULES = YES; | ||||||
| 				CURRENT_PROJECT_VERSION = 1; | 				CURRENT_PROJECT_VERSION = 1; | ||||||
| 				DEAD_CODE_STRIPPING = NO; | 				ENABLE_BITCODE = NO; | ||||||
| 				DEVELOPMENT_TEAM = JD75Q9JJL2; | 				INFOPLIST_FILE = testHotupdate/Info.plist; | ||||||
| 				INFOPLIST_FILE = testHotUpdate/Info.plist; | 				LD_RUNPATH_SEARCH_PATHS = ( | ||||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 10.0; | 					"$(inherited)", | ||||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | 					"@executable_path/Frameworks", | ||||||
|  | 				); | ||||||
| 				OTHER_LDFLAGS = ( | 				OTHER_LDFLAGS = ( | ||||||
| 					"$(inherited)", | 					"$(inherited)", | ||||||
| 					"-ObjC", | 					"-ObjC", | ||||||
| 					"-lc++", | 					"-lc++", | ||||||
| 				); | 				); | ||||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||||||
| 				PRODUCT_NAME = testHotUpdate; | 				PRODUCT_NAME = testHotupdate; | ||||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "testHotUpdate-Bridging-Header.h"; |  | ||||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||||
| 				SWIFT_VERSION = 5.0; | 				SWIFT_VERSION = 5.0; | ||||||
| 				VERSIONING_SYSTEM = "apple-generic"; | 				VERSIONING_SYSTEM = "apple-generic"; | ||||||
| @@ -328,23 +436,23 @@ | |||||||
| 		}; | 		}; | ||||||
| 		13B07F951A680F5B00A75B9A /* Release */ = { | 		13B07F951A680F5B00A75B9A /* Release */ = { | ||||||
| 			isa = XCBuildConfiguration; | 			isa = XCBuildConfiguration; | ||||||
| 			baseConfigurationReference = 1A3E77317B15A5C3816ACE3A /* Pods-testHotUpdate.release.xcconfig */; | 			baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-testHotupdate.release.xcconfig */; | ||||||
| 			buildSettings = { | 			buildSettings = { | ||||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||||
| 				CLANG_ENABLE_MODULES = YES; | 				CLANG_ENABLE_MODULES = YES; | ||||||
| 				CURRENT_PROJECT_VERSION = 1; | 				CURRENT_PROJECT_VERSION = 1; | ||||||
| 				DEVELOPMENT_TEAM = JD75Q9JJL2; | 				INFOPLIST_FILE = testHotupdate/Info.plist; | ||||||
| 				INFOPLIST_FILE = testHotUpdate/Info.plist; | 				LD_RUNPATH_SEARCH_PATHS = ( | ||||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 10.0; | 					"$(inherited)", | ||||||
| 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | 					"@executable_path/Frameworks", | ||||||
|  | 				); | ||||||
| 				OTHER_LDFLAGS = ( | 				OTHER_LDFLAGS = ( | ||||||
| 					"$(inherited)", | 					"$(inherited)", | ||||||
| 					"-ObjC", | 					"-ObjC", | ||||||
| 					"-lc++", | 					"-lc++", | ||||||
| 				); | 				); | ||||||
| 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | 				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; | ||||||
| 				PRODUCT_NAME = testHotUpdate; | 				PRODUCT_NAME = testHotupdate; | ||||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "testHotUpdate-Bridging-Header.h"; |  | ||||||
| 				SWIFT_VERSION = 5.0; | 				SWIFT_VERSION = 5.0; | ||||||
| 				VERSIONING_SYSTEM = "apple-generic"; | 				VERSIONING_SYSTEM = "apple-generic"; | ||||||
| 			}; | 			}; | ||||||
| @@ -354,7 +462,8 @@ | |||||||
| 			isa = XCBuildConfiguration; | 			isa = XCBuildConfiguration; | ||||||
| 			buildSettings = { | 			buildSettings = { | ||||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||||
|  | 				CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||||||
| 				CLANG_CXX_LIBRARY = "libc++"; | 				CLANG_CXX_LIBRARY = "libc++"; | ||||||
| 				CLANG_ENABLE_MODULES = YES; | 				CLANG_ENABLE_MODULES = YES; | ||||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | 				CLANG_ENABLE_OBJC_ARC = YES; | ||||||
| @@ -372,6 +481,7 @@ | |||||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||||
|  | 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||||
| @@ -381,7 +491,7 @@ | |||||||
| 				COPY_PHASE_STRIP = NO; | 				COPY_PHASE_STRIP = NO; | ||||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||||
| 				ENABLE_TESTABILITY = YES; | 				ENABLE_TESTABILITY = YES; | ||||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; | 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||||
| 				GCC_DYNAMIC_NO_PIC = NO; | 				GCC_DYNAMIC_NO_PIC = NO; | ||||||
| 				GCC_NO_COMMON_BLOCKS = YES; | 				GCC_NO_COMMON_BLOCKS = YES; | ||||||
| @@ -397,9 +507,24 @@ | |||||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||||
|  | 				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; | 				MTL_ENABLE_DEBUG_INFO = YES; | ||||||
| 				ONLY_ACTIVE_ARCH = YES; | 				ONLY_ACTIVE_ARCH = YES; | ||||||
|  | 				OTHER_CPLUSPLUSFLAGS = ( | ||||||
|  | 					"$(OTHER_CFLAGS)", | ||||||
|  | 					"-DFOLLY_NO_CONFIG", | ||||||
|  | 					"-DFOLLY_MOBILE=1", | ||||||
|  | 					"-DFOLLY_USE_LIBCPP=1", | ||||||
|  | 				); | ||||||
| 				SDKROOT = iphoneos; | 				SDKROOT = iphoneos; | ||||||
| 			}; | 			}; | ||||||
| 			name = Debug; | 			name = Debug; | ||||||
| @@ -408,7 +533,8 @@ | |||||||
| 			isa = XCBuildConfiguration; | 			isa = XCBuildConfiguration; | ||||||
| 			buildSettings = { | 			buildSettings = { | ||||||
| 				ALWAYS_SEARCH_USER_PATHS = NO; | 				ALWAYS_SEARCH_USER_PATHS = NO; | ||||||
| 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; | ||||||
|  | 				CLANG_CXX_LANGUAGE_STANDARD = "c++17"; | ||||||
| 				CLANG_CXX_LIBRARY = "libc++"; | 				CLANG_CXX_LIBRARY = "libc++"; | ||||||
| 				CLANG_ENABLE_MODULES = YES; | 				CLANG_ENABLE_MODULES = YES; | ||||||
| 				CLANG_ENABLE_OBJC_ARC = YES; | 				CLANG_ENABLE_OBJC_ARC = YES; | ||||||
| @@ -426,6 +552,7 @@ | |||||||
| 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||||||
| 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||||||
| 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||||||
|  | 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | ||||||
| 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||||||
| 				CLANG_WARN_STRICT_PROTOTYPES = YES; | 				CLANG_WARN_STRICT_PROTOTYPES = YES; | ||||||
| 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||||||
| @@ -435,7 +562,7 @@ | |||||||
| 				COPY_PHASE_STRIP = YES; | 				COPY_PHASE_STRIP = YES; | ||||||
| 				ENABLE_NS_ASSERTIONS = NO; | 				ENABLE_NS_ASSERTIONS = NO; | ||||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 "; | 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||||
| 				GCC_NO_COMMON_BLOCKS = YES; | 				GCC_NO_COMMON_BLOCKS = YES; | ||||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||||
| @@ -444,8 +571,23 @@ | |||||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 9.0; | 				IPHONEOS_DEPLOYMENT_TARGET = 11.0; | ||||||
|  | 				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; | 				MTL_ENABLE_DEBUG_INFO = NO; | ||||||
|  | 				OTHER_CPLUSPLUSFLAGS = ( | ||||||
|  | 					"$(OTHER_CFLAGS)", | ||||||
|  | 					"-DFOLLY_NO_CONFIG", | ||||||
|  | 					"-DFOLLY_MOBILE=1", | ||||||
|  | 					"-DFOLLY_USE_LIBCPP=1", | ||||||
|  | 				); | ||||||
| 				SDKROOT = iphoneos; | 				SDKROOT = iphoneos; | ||||||
| 				VALIDATE_PRODUCT = YES; | 				VALIDATE_PRODUCT = YES; | ||||||
| 			}; | 			}; | ||||||
| @@ -454,7 +596,16 @@ | |||||||
| /* End XCBuildConfiguration section */ | /* End XCBuildConfiguration section */ | ||||||
|  |  | ||||||
| /* Begin XCConfigurationList section */ | /* Begin XCConfigurationList section */ | ||||||
| 		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testHotUpdate" */ = { | 		00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "testHotupdateTests" */ = { | ||||||
|  | 			isa = XCConfigurationList; | ||||||
|  | 			buildConfigurations = ( | ||||||
|  | 				00E356F61AD99517003FC87E /* Debug */, | ||||||
|  | 				00E356F71AD99517003FC87E /* Release */, | ||||||
|  | 			); | ||||||
|  | 			defaultConfigurationIsVisible = 0; | ||||||
|  | 			defaultConfigurationName = Release; | ||||||
|  | 		}; | ||||||
|  | 		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "testHotupdate" */ = { | ||||||
| 			isa = XCConfigurationList; | 			isa = XCConfigurationList; | ||||||
| 			buildConfigurations = ( | 			buildConfigurations = ( | ||||||
| 				13B07F941A680F5B00A75B9A /* Debug */, | 				13B07F941A680F5B00A75B9A /* Debug */, | ||||||
| @@ -463,7 +614,7 @@ | |||||||
| 			defaultConfigurationIsVisible = 0; | 			defaultConfigurationIsVisible = 0; | ||||||
| 			defaultConfigurationName = Release; | 			defaultConfigurationName = Release; | ||||||
| 		}; | 		}; | ||||||
| 		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testHotUpdate" */ = { | 		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "testHotupdate" */ = { | ||||||
| 			isa = XCConfigurationList; | 			isa = XCConfigurationList; | ||||||
| 			buildConfigurations = ( | 			buildConfigurations = ( | ||||||
| 				83CBBA201A601CBA00E9B192 /* Debug */, | 				83CBBA201A601CBA00E9B192 /* Debug */, | ||||||
|   | |||||||
| @@ -1,25 +1,11 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <Scheme | <Scheme | ||||||
|    LastUpgradeVersion = "0940" |    LastUpgradeVersion = "1210" | ||||||
|    version = "1.3"> |    version = "1.3"> | ||||||
|    <BuildAction |    <BuildAction | ||||||
|       parallelizeBuildables = "NO" |       parallelizeBuildables = "YES" | ||||||
|       buildImplicitDependencies = "YES"> |       buildImplicitDependencies = "YES"> | ||||||
|       <BuildActionEntries> |       <BuildActionEntries> | ||||||
|          <BuildActionEntry |  | ||||||
|             buildForTesting = "YES" |  | ||||||
|             buildForRunning = "YES" |  | ||||||
|             buildForProfiling = "YES" |  | ||||||
|             buildForArchiving = "YES" |  | ||||||
|             buildForAnalyzing = "YES"> |  | ||||||
|             <BuildableReference |  | ||||||
|                BuildableIdentifier = "primary" |  | ||||||
|                BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192" |  | ||||||
|                BuildableName = "libReact.a" |  | ||||||
|                BlueprintName = "React" |  | ||||||
|                ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj"> |  | ||||||
|             </BuildableReference> |  | ||||||
|          </BuildActionEntry> |  | ||||||
|          <BuildActionEntry |          <BuildActionEntry | ||||||
|             buildForTesting = "YES" |             buildForTesting = "YES" | ||||||
|             buildForRunning = "YES" |             buildForRunning = "YES" | ||||||
| @@ -29,23 +15,9 @@ | |||||||
|             <BuildableReference |             <BuildableReference | ||||||
|                BuildableIdentifier = "primary" |                BuildableIdentifier = "primary" | ||||||
|                BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |                BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||||||
|                BuildableName = "testHotUpdate.app" |                BuildableName = "testHotupdate.app" | ||||||
|                BlueprintName = "testHotUpdate" |                BlueprintName = "testHotupdate" | ||||||
|                ReferencedContainer = "container:testHotUpdate.xcodeproj"> |                ReferencedContainer = "container:testHotupdate.xcodeproj"> | ||||||
|             </BuildableReference> |  | ||||||
|          </BuildActionEntry> |  | ||||||
|          <BuildActionEntry |  | ||||||
|             buildForTesting = "YES" |  | ||||||
|             buildForRunning = "YES" |  | ||||||
|             buildForProfiling = "NO" |  | ||||||
|             buildForArchiving = "NO" |  | ||||||
|             buildForAnalyzing = "YES"> |  | ||||||
|             <BuildableReference |  | ||||||
|                BuildableIdentifier = "primary" |  | ||||||
|                BlueprintIdentifier = "00E356ED1AD99517003FC87E" |  | ||||||
|                BuildableName = "testHotUpdateTests.xctest" |  | ||||||
|                BlueprintName = "testHotUpdateTests" |  | ||||||
|                ReferencedContainer = "container:testHotUpdate.xcodeproj"> |  | ||||||
|             </BuildableReference> |             </BuildableReference> | ||||||
|          </BuildActionEntry> |          </BuildActionEntry> | ||||||
|       </BuildActionEntries> |       </BuildActionEntries> | ||||||
| @@ -55,24 +27,15 @@ | |||||||
|       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||||||
|       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||||||
|       shouldUseLaunchSchemeArgsEnv = "YES"> |       shouldUseLaunchSchemeArgsEnv = "YES"> | ||||||
|       <MacroExpansion> |  | ||||||
|          <BuildableReference |  | ||||||
|             BuildableIdentifier = "primary" |  | ||||||
|             BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |  | ||||||
|             BuildableName = "testHotUpdate.app" |  | ||||||
|             BlueprintName = "testHotUpdate" |  | ||||||
|             ReferencedContainer = "container:testHotUpdate.xcodeproj"> |  | ||||||
|          </BuildableReference> |  | ||||||
|       </MacroExpansion> |  | ||||||
|       <Testables> |       <Testables> | ||||||
|          <TestableReference |          <TestableReference | ||||||
|             skipped = "NO"> |             skipped = "NO"> | ||||||
|             <BuildableReference |             <BuildableReference | ||||||
|                BuildableIdentifier = "primary" |                BuildableIdentifier = "primary" | ||||||
|                BlueprintIdentifier = "00E356ED1AD99517003FC87E" |                BlueprintIdentifier = "00E356ED1AD99517003FC87E" | ||||||
|                BuildableName = "testHotUpdateTests.xctest" |                BuildableName = "testHotupdateTests.xctest" | ||||||
|                BlueprintName = "testHotUpdateTests" |                BlueprintName = "testHotupdateTests" | ||||||
|                ReferencedContainer = "container:testHotUpdate.xcodeproj"> |                ReferencedContainer = "container:testHotupdate.xcodeproj"> | ||||||
|             </BuildableReference> |             </BuildableReference> | ||||||
|          </TestableReference> |          </TestableReference> | ||||||
|       </Testables> |       </Testables> | ||||||
| @@ -92,9 +55,9 @@ | |||||||
|          <BuildableReference |          <BuildableReference | ||||||
|             BuildableIdentifier = "primary" |             BuildableIdentifier = "primary" | ||||||
|             BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |             BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||||||
|             BuildableName = "testHotUpdate.app" |             BuildableName = "testHotupdate.app" | ||||||
|             BlueprintName = "testHotUpdate" |             BlueprintName = "testHotupdate" | ||||||
|             ReferencedContainer = "container:testHotUpdate.xcodeproj"> |             ReferencedContainer = "container:testHotupdate.xcodeproj"> | ||||||
|          </BuildableReference> |          </BuildableReference> | ||||||
|       </BuildableProductRunnable> |       </BuildableProductRunnable> | ||||||
|    </LaunchAction> |    </LaunchAction> | ||||||
| @@ -109,9 +72,9 @@ | |||||||
|          <BuildableReference |          <BuildableReference | ||||||
|             BuildableIdentifier = "primary" |             BuildableIdentifier = "primary" | ||||||
|             BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |             BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||||||
|             BuildableName = "testHotUpdate.app" |             BuildableName = "testHotupdate.app" | ||||||
|             BlueprintName = "testHotUpdate" |             BlueprintName = "testHotupdate" | ||||||
|             ReferencedContainer = "container:testHotUpdate.xcodeproj"> |             ReferencedContainer = "container:testHotupdate.xcodeproj"> | ||||||
|          </BuildableReference> |          </BuildableReference> | ||||||
|       </BuildableProductRunnable> |       </BuildableProductRunnable> | ||||||
|    </ProfileAction> |    </ProfileAction> | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
| <Workspace | <Workspace | ||||||
|    version = "1.0"> |    version = "1.0"> | ||||||
|    <FileRef |    <FileRef | ||||||
|       location = "group:testHotUpdate.xcodeproj"> |       location = "group:testHotupdate.xcodeproj"> | ||||||
|    </FileRef> |    </FileRef> | ||||||
|    <FileRef |    <FileRef | ||||||
|       location = "group:Pods/Pods.xcodeproj"> |       location = "group:Pods/Pods.xcodeproj"> | ||||||
|   | |||||||
| @@ -1,8 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |  | ||||||
| <plist version="1.0"> |  | ||||||
| <dict> |  | ||||||
| 	<key>IDEDidComputeMac32BitWarning</key> |  | ||||||
| 	<true/> |  | ||||||
| </dict> |  | ||||||
| </plist> |  | ||||||
| @@ -1,10 +1,3 @@ | |||||||
| /** |  | ||||||
|  * Copyright (c) Facebook, Inc. and its affiliates. |  | ||||||
|  * |  | ||||||
|  * This source code is licensed under the MIT license found in the |  | ||||||
|  * LICENSE file in the root directory of this source tree. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #import <React/RCTBridgeDelegate.h> | #import <React/RCTBridgeDelegate.h> | ||||||
| #import <UIKit/UIKit.h> | #import <UIKit/UIKit.h> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,66 +0,0 @@ | |||||||
| /** |  | ||||||
|  * Copyright (c) Facebook, Inc. and its affiliates. |  | ||||||
|  * |  | ||||||
|  * This source code is licensed under the MIT license found in the |  | ||||||
|  * LICENSE file in the root directory of this source tree. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #import "AppDelegate.h" |  | ||||||
|  |  | ||||||
| #import <React/RCTBridge.h> |  | ||||||
| #import <React/RCTBundleURLProvider.h> |  | ||||||
| #import <React/RCTRootView.h> |  | ||||||
| #import "RCTPushy.h" |  | ||||||
|  |  | ||||||
| #ifdef FB_SONARKIT_ENABLED |  | ||||||
| #import <FlipperKit/FlipperClient.h> |  | ||||||
| #import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h> |  | ||||||
| #import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h> |  | ||||||
| #import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h> |  | ||||||
| #import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h> |  | ||||||
| #import <FlipperKitReactPlugin/FlipperKitReactPlugin.h> |  | ||||||
| static void InitializeFlipper(UIApplication *application) { |  | ||||||
|   FlipperClient *client = [FlipperClient sharedClient]; |  | ||||||
|   SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; |  | ||||||
|   [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; |  | ||||||
|   [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; |  | ||||||
|   [client addPlugin:[FlipperKitReactPlugin new]]; |  | ||||||
|   [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; |  | ||||||
|   [client start]; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| @implementation AppDelegate |  | ||||||
|  |  | ||||||
| - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |  | ||||||
| { |  | ||||||
|   #ifdef FB_SONARKIT_ENABLED |  | ||||||
|     InitializeFlipper(application); |  | ||||||
|   #endif |  | ||||||
|    |  | ||||||
|   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; |  | ||||||
|   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge |  | ||||||
|                                                    moduleName:@"testHotUpdate" |  | ||||||
|                                             initialProperties:nil]; |  | ||||||
|  |  | ||||||
|   rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; |  | ||||||
|  |  | ||||||
|   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; |  | ||||||
|   UIViewController *rootViewController = [UIViewController new]; |  | ||||||
|   rootViewController.view = rootView; |  | ||||||
|   self.window.rootViewController = rootViewController; |  | ||||||
|   [self.window makeKeyAndVisible]; |  | ||||||
|   return YES; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge |  | ||||||
| { |  | ||||||
| #if DEBUG |  | ||||||
|   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; |  | ||||||
| #else |  | ||||||
|   // 非DEBUG情况下替换为热更新bundle |  | ||||||
|   return [RCTPushy bundleURL]; |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
|  |  | ||||||
| @end |  | ||||||
							
								
								
									
										110
									
								
								Example/testHotUpdate/ios/testHotUpdate/AppDelegate.mm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								Example/testHotUpdate/ios/testHotUpdate/AppDelegate.mm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,110 @@ | |||||||
|  | #import "AppDelegate.h" | ||||||
|  |  | ||||||
|  | #import <React/RCTBridge.h> | ||||||
|  | #import <React/RCTBundleURLProvider.h> | ||||||
|  | #import <React/RCTRootView.h> | ||||||
|  | #import "RCTPushy.h" | ||||||
|  |  | ||||||
|  | #import <React/RCTAppSetupUtils.h> | ||||||
|  |  | ||||||
|  | #if RCT_NEW_ARCH_ENABLED | ||||||
|  | #import <React/CoreModulesPlugins.h> | ||||||
|  | #import <React/RCTCxxBridgeDelegate.h> | ||||||
|  | #import <React/RCTFabricSurfaceHostingProxyRootView.h> | ||||||
|  | #import <React/RCTSurfacePresenter.h> | ||||||
|  | #import <React/RCTSurfacePresenterBridgeAdapter.h> | ||||||
|  | #import <ReactCommon/RCTTurboModuleManager.h> | ||||||
|  |  | ||||||
|  | #import <react/config/ReactNativeConfig.h> | ||||||
|  |  | ||||||
|  | @interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> { | ||||||
|  |   RCTTurboModuleManager *_turboModuleManager; | ||||||
|  |   RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; | ||||||
|  |   std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig; | ||||||
|  |   facebook::react::ContextContainer::Shared _contextContainer; | ||||||
|  | } | ||||||
|  | @end | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | @implementation AppDelegate | ||||||
|  |  | ||||||
|  | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||||||
|  | { | ||||||
|  |   RCTAppSetupPrepareApp(application); | ||||||
|  |  | ||||||
|  |   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | ||||||
|  |  | ||||||
|  | #if RCT_NEW_ARCH_ENABLED | ||||||
|  |   _contextContainer = std::make_shared<facebook::react::ContextContainer const>(); | ||||||
|  |   _reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>(); | ||||||
|  |   _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); | ||||||
|  |   _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; | ||||||
|  |   bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |   UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"testHotupdate", nil); | ||||||
|  |  | ||||||
|  |   if (@available(iOS 13.0, *)) { | ||||||
|  |     rootView.backgroundColor = [UIColor systemBackgroundColor]; | ||||||
|  |   } else { | ||||||
|  |     rootView.backgroundColor = [UIColor whiteColor]; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | ||||||
|  |   UIViewController *rootViewController = [UIViewController new]; | ||||||
|  |   rootViewController.view = rootView; | ||||||
|  |   self.window.rootViewController = rootViewController; | ||||||
|  |   [self.window makeKeyAndVisible]; | ||||||
|  |   return YES; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||||||
|  | { | ||||||
|  | #if DEBUG | ||||||
|  |   return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; | ||||||
|  | #else | ||||||
|  |   // 非DEBUG情况下替换为热更新bundle | ||||||
|  |   return [RCTPushy bundleURL]; | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #if RCT_NEW_ARCH_ENABLED | ||||||
|  |  | ||||||
|  | #pragma mark - RCTCxxBridgeDelegate | ||||||
|  |  | ||||||
|  | - (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge | ||||||
|  | { | ||||||
|  |   _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge | ||||||
|  |                                                              delegate:self | ||||||
|  |                                                             jsInvoker:bridge.jsCallInvoker]; | ||||||
|  |   return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #pragma mark RCTTurboModuleManagerDelegate | ||||||
|  |  | ||||||
|  | - (Class)getModuleClassFromName:(const char *)name | ||||||
|  | { | ||||||
|  |   return RCTCoreModulesClassProvider(name); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||||||
|  |                                                       jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker | ||||||
|  | { | ||||||
|  |   return nullptr; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name | ||||||
|  |                                                      initParams: | ||||||
|  |                                                          (const facebook::react::ObjCTurboModule::InitParams &)params | ||||||
|  | { | ||||||
|  |   return nullptr; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | - (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass | ||||||
|  | { | ||||||
|  |   return RCTAppSetupDefaultModuleFromClass(moduleClass); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | @end | ||||||
| @@ -1,42 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |  | ||||||
| <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES"> |  | ||||||
|     <dependencies> |  | ||||||
|         <deployment identifier="iOS"/> |  | ||||||
|         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/> |  | ||||||
|         <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> |  | ||||||
|     </dependencies> |  | ||||||
|     <objects> |  | ||||||
|         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> |  | ||||||
|         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> |  | ||||||
|         <view contentMode="scaleToFill" id="iN0-l3-epB"> |  | ||||||
|             <rect key="frame" x="0.0" y="0.0" width="480" height="480"/> |  | ||||||
|             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |  | ||||||
|             <subviews> |  | ||||||
|                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye"> |  | ||||||
|                     <rect key="frame" x="20" y="439" width="441" height="21"/> |  | ||||||
|                     <fontDescription key="fontDescription" type="system" pointSize="17"/> |  | ||||||
|                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> |  | ||||||
|                     <nil key="highlightedColor"/> |  | ||||||
|                 </label> |  | ||||||
|                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="testHotUpdate" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX"> |  | ||||||
|                     <rect key="frame" x="20" y="140" width="441" height="43"/> |  | ||||||
|                     <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> |  | ||||||
|                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> |  | ||||||
|                     <nil key="highlightedColor"/> |  | ||||||
|                 </label> |  | ||||||
|             </subviews> |  | ||||||
|             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> |  | ||||||
|             <constraints> |  | ||||||
|                 <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/> |  | ||||||
|                 <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/> |  | ||||||
|                 <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/> |  | ||||||
|                 <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/> |  | ||||||
|                 <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/> |  | ||||||
|                 <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/> |  | ||||||
|             </constraints> |  | ||||||
|             <nil key="simulatedStatusBarMetrics"/> |  | ||||||
|             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> |  | ||||||
|             <point key="canvasLocation" x="548" y="455"/> |  | ||||||
|         </view> |  | ||||||
|     </objects> |  | ||||||
| </document> |  | ||||||
| @@ -5,7 +5,7 @@ | |||||||
| 	<key>CFBundleDevelopmentRegion</key> | 	<key>CFBundleDevelopmentRegion</key> | ||||||
| 	<string>en</string> | 	<string>en</string> | ||||||
| 	<key>CFBundleDisplayName</key> | 	<key>CFBundleDisplayName</key> | ||||||
| 	<string>testHotUpdate</string> | 	<string>testHotupdate</string> | ||||||
| 	<key>CFBundleExecutable</key> | 	<key>CFBundleExecutable</key> | ||||||
| 	<string>$(EXECUTABLE_NAME)</string> | 	<string>$(EXECUTABLE_NAME)</string> | ||||||
| 	<key>CFBundleIdentifier</key> | 	<key>CFBundleIdentifier</key> | ||||||
| @@ -26,8 +26,6 @@ | |||||||
| 	<true/> | 	<true/> | ||||||
| 	<key>NSAppTransportSecurity</key> | 	<key>NSAppTransportSecurity</key> | ||||||
| 	<dict> | 	<dict> | ||||||
| 		<key>NSAllowsArbitraryLoads</key> |  | ||||||
| 		<true/> |  | ||||||
| 		<key>NSExceptionDomains</key> | 		<key>NSExceptionDomains</key> | ||||||
| 		<dict> | 		<dict> | ||||||
| 			<key>localhost</key> | 			<key>localhost</key> | ||||||
|   | |||||||
| @@ -0,0 +1,47 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15702" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> | ||||||
|  |     <device id="retina4_7" orientation="portrait" appearance="light"/> | ||||||
|  |     <dependencies> | ||||||
|  |         <deployment identifier="iOS"/> | ||||||
|  |         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/> | ||||||
|  |         <capability name="Safe area layout guides" minToolsVersion="9.0"/> | ||||||
|  |         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> | ||||||
|  |     </dependencies> | ||||||
|  |     <scenes> | ||||||
|  |         <!--View Controller--> | ||||||
|  |         <scene sceneID="EHf-IW-A2E"> | ||||||
|  |             <objects> | ||||||
|  |                 <viewController id="01J-lp-oVM" sceneMemberID="viewController"> | ||||||
|  |                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> | ||||||
|  |                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> | ||||||
|  |                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||||||
|  |                         <subviews> | ||||||
|  |                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="testHotupdate" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="GJd-Yh-RWb"> | ||||||
|  |                                 <rect key="frame" x="0.0" y="202" width="375" height="43"/> | ||||||
|  |                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | ||||||
|  |                                 <nil key="highlightedColor"/> | ||||||
|  |                             </label> | ||||||
|  |                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-I3-ftu"> | ||||||
|  |                                 <rect key="frame" x="0.0" y="626" width="375" height="21"/> | ||||||
|  |                                 <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||||||
|  |                                 <nil key="highlightedColor"/> | ||||||
|  |                             </label> | ||||||
|  |                         </subviews> | ||||||
|  |                         <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> | ||||||
|  |                         <constraints> | ||||||
|  |                             <constraint firstItem="Bcu-3y-fUS" firstAttribute="bottom" secondItem="MN2-I3-ftu" secondAttribute="bottom" constant="20" id="OZV-Vh-mqD"/> | ||||||
|  |                             <constraint firstItem="Bcu-3y-fUS" firstAttribute="centerX" secondItem="GJd-Yh-RWb" secondAttribute="centerX" id="Q3B-4B-g5h"/> | ||||||
|  |                             <constraint firstItem="MN2-I3-ftu" firstAttribute="centerX" secondItem="Bcu-3y-fUS" secondAttribute="centerX" id="akx-eg-2ui"/> | ||||||
|  |                             <constraint firstItem="MN2-I3-ftu" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="i1E-0Y-4RG"/> | ||||||
|  |                             <constraint firstItem="GJd-Yh-RWb" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="bottom" multiplier="1/3" constant="1" id="moa-c2-u7t"/> | ||||||
|  |                             <constraint firstItem="GJd-Yh-RWb" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" symbolic="YES" id="x7j-FC-K8j"/> | ||||||
|  |                         </constraints> | ||||||
|  |                         <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/> | ||||||
|  |                     </view> | ||||||
|  |                 </viewController> | ||||||
|  |                 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> | ||||||
|  |             </objects> | ||||||
|  |             <point key="canvasLocation" x="52.173913043478265" y="375"/> | ||||||
|  |         </scene> | ||||||
|  |     </scenes> | ||||||
|  | </document> | ||||||
| @@ -1,15 +1,9 @@ | |||||||
| /** |  | ||||||
|  * Copyright (c) Facebook, Inc. and its affiliates. |  | ||||||
|  * |  | ||||||
|  * This source code is licensed under the MIT license found in the |  | ||||||
|  * LICENSE file in the root directory of this source tree. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #import <UIKit/UIKit.h> | #import <UIKit/UIKit.h> | ||||||
|  |  | ||||||
| #import "AppDelegate.h" | #import "AppDelegate.h" | ||||||
|  |  | ||||||
| int main(int argc, char * argv[]) { | int main(int argc, char *argv[]) | ||||||
|  | { | ||||||
|   @autoreleasepool { |   @autoreleasepool { | ||||||
|     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); |     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								Example/testHotUpdate/ios/testHotupdateTests/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Example/testHotUpdate/ios/testHotupdateTests/Info.plist
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||||
|  | <plist version="1.0"> | ||||||
|  | <dict> | ||||||
|  | 	<key>CFBundleDevelopmentRegion</key> | ||||||
|  | 	<string>en</string> | ||||||
|  | 	<key>CFBundleExecutable</key> | ||||||
|  | 	<string>$(EXECUTABLE_NAME)</string> | ||||||
|  | 	<key>CFBundleIdentifier</key> | ||||||
|  | 	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||||
|  | 	<key>CFBundleInfoDictionaryVersion</key> | ||||||
|  | 	<string>6.0</string> | ||||||
|  | 	<key>CFBundleName</key> | ||||||
|  | 	<string>$(PRODUCT_NAME)</string> | ||||||
|  | 	<key>CFBundlePackageType</key> | ||||||
|  | 	<string>BNDL</string> | ||||||
|  | 	<key>CFBundleShortVersionString</key> | ||||||
|  | 	<string>1.0</string> | ||||||
|  | 	<key>CFBundleSignature</key> | ||||||
|  | 	<string>????</string> | ||||||
|  | 	<key>CFBundleVersion</key> | ||||||
|  | 	<string>1</string> | ||||||
|  | </dict> | ||||||
|  | </plist> | ||||||
| @@ -0,0 +1,66 @@ | |||||||
|  | #import <UIKit/UIKit.h> | ||||||
|  | #import <XCTest/XCTest.h> | ||||||
|  |  | ||||||
|  | #import <React/RCTLog.h> | ||||||
|  | #import <React/RCTRootView.h> | ||||||
|  |  | ||||||
|  | #define TIMEOUT_SECONDS 600 | ||||||
|  | #define TEXT_TO_LOOK_FOR @"Welcome to React" | ||||||
|  |  | ||||||
|  | @interface testHotupdateTests : XCTestCase | ||||||
|  |  | ||||||
|  | @end | ||||||
|  |  | ||||||
|  | @implementation testHotupdateTests | ||||||
|  |  | ||||||
|  | - (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 | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| { | { | ||||||
|   "name": "testHotUpdate", |   "name": "testhotupdate", | ||||||
|   "version": "0.0.1", |   "version": "0.0.1", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "scripts": { |   "scripts": { | ||||||
| @@ -12,7 +12,7 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "react": "17.0.2", |     "react": "17.0.2", | ||||||
|     "react-native": "0.66.0", |     "react-native": "0.68.2", | ||||||
|     "react-native-update": "link:../.." |     "react-native-update": "link:../.." | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
| @@ -20,9 +20,9 @@ | |||||||
|     "@babel/runtime": "^7.12.5", |     "@babel/runtime": "^7.12.5", | ||||||
|     "@react-native-community/eslint-config": "^2.0.0", |     "@react-native-community/eslint-config": "^2.0.0", | ||||||
|     "babel-jest": "^26.6.3", |     "babel-jest": "^26.6.3", | ||||||
|     "eslint": "7.14.0", |     "eslint": "^7.32.0", | ||||||
|     "jest": "^26.6.3", |     "jest": "^26.6.3", | ||||||
|     "metro-react-native-babel-preset": "^0.66.2", |     "metro-react-native-babel-preset": "^0.67.0", | ||||||
|     "react-test-renderer": "17.0.2" |     "react-test-renderer": "17.0.2" | ||||||
|   }, |   }, | ||||||
|   "jest": { |   "jest": { | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user
	 sunnylqm
					sunnylqm