├── .editorconfig
├── .gitattributes
├── .github
└── FUNDING.yml
├── .gitignore
├── .prettierrc
├── .tool-versions
├── .watchmanconfig
├── Example
├── .bundle
│ └── config
├── .eslintrc.js
├── .gitignore
├── .watchmanconfig
├── App.tsx
├── Gemfile
├── Gemfile.lock
├── README.md
├── __tests__
│ └── App.test.tsx
├── android
│ ├── app
│ │ ├── build.gradle
│ │ ├── debug.keystore
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── debug
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── ReactNativeFlipper.java
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ └── MainApplication.java
│ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ └── rn_edit_text_material.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ └── values
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ └── release
│ │ │ └── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── ReactNativeFlipper.java
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ └── settings.gradle
├── app.json
├── babel.config.js
├── index.js
├── ios
│ ├── .xcode.env
│ ├── Example.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Example.xcscheme
│ ├── Example.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Example
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.mm
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ ├── LaunchScreen.storyboard
│ │ └── main.m
│ ├── ExampleTests
│ │ ├── ExampleTests.m
│ │ └── Info.plist
│ ├── Podfile
│ └── Podfile.lock
├── jest.config.js
├── metro.config.js
├── package.json
├── tsconfig.json
└── yarn.lock
├── LICENSE
├── README.md
├── RNStoreReview.podspec
├── RNStoreReview.xcodeproj
└── project.pbxproj
├── android
├── build.gradle
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── oblador
│ │ └── storereview
│ │ ├── StoreReviewModuleImpl.java
│ │ └── StoreReviewPackage.java
│ ├── newarch
│ └── java
│ │ └── com
│ │ └── oblador
│ │ └── storereview
│ │ └── StoreReviewModule.java
│ └── oldarch
│ └── java
│ └── com
│ └── oblador
│ └── storereview
│ └── StoreReviewModule.java
├── ios
├── RNStoreReview.h
└── RNStoreReview.mm
├── package.json
├── src
├── NativeRNStoreReview.ts
└── index.ts
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [oblador]
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # node.js
6 | #
7 | node_modules/
8 | npm-debug.log
9 | yarn-error.log
10 |
11 |
12 | # Xcode
13 | #
14 | build/
15 | *.pbxuser
16 | !default.pbxuser
17 | *.mode1v3
18 | !default.mode1v3
19 | *.mode2v3
20 | !default.mode2v3
21 | *.perspectivev3
22 | !default.perspectivev3
23 | xcuserdata
24 | *.xccheckout
25 | *.moved-aside
26 | DerivedData
27 | *.hmap
28 | *.ipa
29 | *.xcuserstate
30 | project.xcworkspace
31 |
32 | # Android/IntelliJ
33 | #
34 | build/
35 | .idea
36 | .gradle
37 | local.properties
38 | *.iml
39 | bin/
40 | .project
41 | .classpath
42 | .settings
43 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true
3 | }
4 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | ruby 2.7.4
2 | bundler 2.2.27
3 |
--------------------------------------------------------------------------------
/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {
2 | "ignore_dirs": [
3 | ".git",
4 | "node_modules"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Example/.bundle/config:
--------------------------------------------------------------------------------
1 | BUNDLE_PATH: "vendor/bundle"
2 | BUNDLE_FORCE_RUBY_PLATFORM: 1
3 |
--------------------------------------------------------------------------------
/Example/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: '@react-native',
4 | };
5 |
--------------------------------------------------------------------------------
/Example/.gitignore:
--------------------------------------------------------------------------------
1 | # OSX
2 | #
3 | .DS_Store
4 |
5 | # Xcode
6 | #
7 | build/
8 | *.pbxuser
9 | !default.pbxuser
10 | *.mode1v3
11 | !default.mode1v3
12 | *.mode2v3
13 | !default.mode2v3
14 | *.perspectivev3
15 | !default.perspectivev3
16 | xcuserdata
17 | *.xccheckout
18 | *.moved-aside
19 | DerivedData
20 | *.hmap
21 | *.ipa
22 | *.xcuserstate
23 | ios/.xcode.env.local
24 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 | *.hprof
33 | .cxx/
34 | *.keystore
35 | !debug.keystore
36 |
37 | # node.js
38 | #
39 | node_modules/
40 | npm-debug.log
41 | yarn-error.log
42 |
43 | # fastlane
44 | #
45 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
46 | # screenshots whenever they are needed.
47 | # For more information about the recommended setup visit:
48 | # https://docs.fastlane.tools/best-practices/source-control/
49 |
50 | **/fastlane/report.xml
51 | **/fastlane/Preview.html
52 | **/fastlane/screenshots
53 | **/fastlane/test_output
54 |
55 | # Bundle artifact
56 | *.jsbundle
57 |
58 | # Ruby / CocoaPods
59 | /ios/Pods/
60 | /vendor/bundle/
61 |
62 | # Temporary files created by Metro to check the health of the file watcher
63 | .metro-health-check*
64 |
65 | # testing
66 | /coverage
67 |
--------------------------------------------------------------------------------
/Example/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/Example/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button, StyleSheet, Text, View } from 'react-native';
3 | import { requestReview } from 'react-native-store-review';
4 |
5 | const styles = StyleSheet.create({
6 | container: {
7 | flex: 1,
8 | justifyContent: 'center',
9 | alignItems: 'center',
10 | backgroundColor: '#F5FCFF',
11 | },
12 | welcome: {
13 | fontSize: 20,
14 | textAlign: 'center',
15 | margin: 10,
16 | },
17 | });
18 |
19 | const App = () => (
20 |
21 | Welcome to React Native!
22 |
24 | );
25 |
26 | export default App;
27 |
--------------------------------------------------------------------------------
/Example/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
4 | ruby ">= 2.6.10"
5 |
6 | gem 'cocoapods', '~> 1.12'
7 |
--------------------------------------------------------------------------------
/Example/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (3.0.6)
5 | rexml
6 | activesupport (7.0.6)
7 | concurrent-ruby (~> 1.0, >= 1.0.2)
8 | i18n (>= 1.6, < 2)
9 | minitest (>= 5.1)
10 | tzinfo (~> 2.0)
11 | addressable (2.8.4)
12 | public_suffix (>= 2.0.2, < 6.0)
13 | algoliasearch (1.27.5)
14 | httpclient (~> 2.8, >= 2.8.3)
15 | json (>= 1.5.1)
16 | atomos (0.1.3)
17 | claide (1.1.0)
18 | cocoapods (1.12.1)
19 | addressable (~> 2.8)
20 | claide (>= 1.0.2, < 2.0)
21 | cocoapods-core (= 1.12.1)
22 | cocoapods-deintegrate (>= 1.0.3, < 2.0)
23 | cocoapods-downloader (>= 1.6.0, < 2.0)
24 | cocoapods-plugins (>= 1.0.0, < 2.0)
25 | cocoapods-search (>= 1.0.0, < 2.0)
26 | cocoapods-trunk (>= 1.6.0, < 2.0)
27 | cocoapods-try (>= 1.1.0, < 2.0)
28 | colored2 (~> 3.1)
29 | escape (~> 0.0.4)
30 | fourflusher (>= 2.3.0, < 3.0)
31 | gh_inspector (~> 1.0)
32 | molinillo (~> 0.8.0)
33 | nap (~> 1.0)
34 | ruby-macho (>= 2.3.0, < 3.0)
35 | xcodeproj (>= 1.21.0, < 2.0)
36 | cocoapods-core (1.12.1)
37 | activesupport (>= 5.0, < 8)
38 | addressable (~> 2.8)
39 | algoliasearch (~> 1.0)
40 | concurrent-ruby (~> 1.1)
41 | fuzzy_match (~> 2.0.4)
42 | nap (~> 1.0)
43 | netrc (~> 0.11)
44 | public_suffix (~> 4.0)
45 | typhoeus (~> 1.0)
46 | cocoapods-deintegrate (1.0.5)
47 | cocoapods-downloader (1.6.3)
48 | cocoapods-plugins (1.0.0)
49 | nap
50 | cocoapods-search (1.0.1)
51 | cocoapods-trunk (1.6.0)
52 | nap (>= 0.8, < 2.0)
53 | netrc (~> 0.11)
54 | cocoapods-try (1.2.0)
55 | colored2 (3.1.2)
56 | concurrent-ruby (1.2.2)
57 | escape (0.0.4)
58 | ethon (0.16.0)
59 | ffi (>= 1.15.0)
60 | ffi (1.15.5)
61 | fourflusher (2.3.1)
62 | fuzzy_match (2.0.4)
63 | gh_inspector (1.1.3)
64 | httpclient (2.8.3)
65 | i18n (1.14.1)
66 | concurrent-ruby (~> 1.0)
67 | json (2.6.3)
68 | minitest (5.18.1)
69 | molinillo (0.8.0)
70 | nanaimo (0.3.0)
71 | nap (1.1.0)
72 | netrc (0.11.0)
73 | public_suffix (4.0.7)
74 | rexml (3.2.5)
75 | ruby-macho (2.5.1)
76 | typhoeus (1.4.0)
77 | ethon (>= 0.9.0)
78 | tzinfo (2.0.6)
79 | concurrent-ruby (~> 1.0)
80 | xcodeproj (1.22.0)
81 | CFPropertyList (>= 2.3.3, < 4.0)
82 | atomos (~> 0.1.3)
83 | claide (>= 1.0.2, < 2.0)
84 | colored2 (~> 3.1)
85 | nanaimo (~> 0.3.0)
86 | rexml (~> 3.2.4)
87 |
88 | PLATFORMS
89 | ruby
90 |
91 | DEPENDENCIES
92 | cocoapods (~> 1.12)
93 |
94 | RUBY VERSION
95 | ruby 3.0.3p157
96 |
97 | BUNDLED WITH
98 | 2.2.32
99 |
--------------------------------------------------------------------------------
/Example/README.md:
--------------------------------------------------------------------------------
1 | This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
2 |
3 | # Getting Started
4 |
5 | >**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
6 |
7 | ## Step 1: Start the Metro Server
8 |
9 | First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
10 |
11 | To start Metro, run the following command from the _root_ of your React Native project:
12 |
13 | ```bash
14 | # using npm
15 | npm start
16 |
17 | # OR using Yarn
18 | yarn start
19 | ```
20 |
21 | ## Step 2: Start your Application
22 |
23 | Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
24 |
25 | ### For Android
26 |
27 | ```bash
28 | # using npm
29 | npm run android
30 |
31 | # OR using Yarn
32 | yarn android
33 | ```
34 |
35 | ### For iOS
36 |
37 | ```bash
38 | # using npm
39 | npm run ios
40 |
41 | # OR using Yarn
42 | yarn ios
43 | ```
44 |
45 | If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
46 |
47 | This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
48 |
49 | ## Step 3: Modifying your App
50 |
51 | Now that you have successfully run the app, let's modify it.
52 |
53 | 1. Open `App.tsx` in your text editor of choice and edit some lines.
54 | 2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes!
55 |
56 | For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes!
57 |
58 | ## Congratulations! :tada:
59 |
60 | You've successfully run and modified your React Native App. :partying_face:
61 |
62 | ### Now what?
63 |
64 | - If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
65 | - If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
66 |
67 | # Troubleshooting
68 |
69 | If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
70 |
71 | # Learn More
72 |
73 | To learn more about React Native, take a look at the following resources:
74 |
75 | - [React Native Website](https://reactnative.dev) - learn more about React Native.
76 | - [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
77 | - [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
78 | - [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
79 | - [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
80 |
--------------------------------------------------------------------------------
/Example/__tests__/App.test.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * @format
3 | */
4 |
5 | import 'react-native';
6 | import React from 'react';
7 | import App from '../App';
8 |
9 | // Note: import explicitly to use the types shiped with jest.
10 | import { it } from '@jest/globals';
11 |
12 | // Note: test renderer must be required after react-native.
13 | import renderer from 'react-test-renderer';
14 |
15 | it('renders correctly', () => {
16 | renderer.create();
17 | });
18 |
--------------------------------------------------------------------------------
/Example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: "com.android.application"
2 | apply plugin: "com.facebook.react"
3 |
4 | /**
5 | * This is the configuration block to customize your React Native Android app.
6 | * By default you don't need to apply any configuration, just uncomment the lines you need.
7 | */
8 | react {
9 | /* Folders */
10 | // The root of your project, i.e. where "package.json" lives. Default is '..'
11 | // root = file("../")
12 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native
13 | // reactNativeDir = file("../node_modules/react-native")
14 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
15 | // codegenDir = file("../node_modules/@react-native/codegen")
16 | // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
17 | // cliFile = file("../node_modules/react-native/cli.js")
18 |
19 | /* Variants */
20 | // The list of variants to that are debuggable. For those we're going to
21 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'.
22 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
23 | // debuggableVariants = ["liteDebug", "prodDebug"]
24 |
25 | /* Bundling */
26 | // A list containing the node command and its flags. Default is just 'node'.
27 | // nodeExecutableAndArgs = ["node"]
28 | //
29 | // The command to run when bundling. By default is 'bundle'
30 | // bundleCommand = "ram-bundle"
31 | //
32 | // The path to the CLI configuration file. Default is empty.
33 | // bundleConfig = file(../rn-cli.config.js)
34 | //
35 | // The name of the generated asset file containing your JS bundle
36 | // bundleAssetName = "MyApplication.android.bundle"
37 | //
38 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
39 | // entryFile = file("../js/MyApplication.android.js")
40 | //
41 | // A list of extra flags to pass to the 'bundle' commands.
42 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
43 | // extraPackagerArgs = []
44 |
45 | /* Hermes Commands */
46 | // The hermes compiler command to run. By default it is 'hermesc'
47 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
48 | //
49 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
50 | // hermesFlags = ["-O", "-output-source-map"]
51 | }
52 |
53 | /**
54 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
55 | */
56 | def enableProguardInReleaseBuilds = false
57 |
58 | /**
59 | * The preferred build flavor of JavaScriptCore (JSC)
60 | *
61 | * For example, to use the international variant, you can use:
62 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
63 | *
64 | * The international variant includes ICU i18n library and necessary data
65 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
66 | * give correct results when using with locales other than en-US. Note that
67 | * this variant is about 6MiB larger per architecture than default.
68 | */
69 | def jscFlavor = 'org.webkit:android-jsc:+'
70 |
71 | android {
72 | ndkVersion rootProject.ext.ndkVersion
73 |
74 | compileSdkVersion rootProject.ext.compileSdkVersion
75 |
76 | namespace "com.example"
77 | defaultConfig {
78 | applicationId "com.example"
79 | minSdkVersion rootProject.ext.minSdkVersion
80 | targetSdkVersion rootProject.ext.targetSdkVersion
81 | versionCode 1
82 | versionName "1.0"
83 | }
84 | signingConfigs {
85 | debug {
86 | storeFile file('debug.keystore')
87 | storePassword 'android'
88 | keyAlias 'androiddebugkey'
89 | keyPassword 'android'
90 | }
91 | }
92 | buildTypes {
93 | debug {
94 | signingConfig signingConfigs.debug
95 | }
96 | release {
97 | // Caution! In production, you need to generate your own keystore file.
98 | // see https://reactnative.dev/docs/signed-apk-android.
99 | signingConfig signingConfigs.debug
100 | minifyEnabled enableProguardInReleaseBuilds
101 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
102 | }
103 | }
104 | }
105 |
106 | dependencies {
107 | // The version of react-native is set by the React Native Gradle Plugin
108 | implementation("com.facebook.react:react-android")
109 |
110 | debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
111 | debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
112 | exclude group:'com.squareup.okhttp3', module:'okhttp'
113 | }
114 |
115 | debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
116 | if (hermesEnabled.toBoolean()) {
117 | implementation("com.facebook.react:hermes-android")
118 | } else {
119 | implementation jscFlavor
120 | }
121 | }
122 |
123 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
124 |
--------------------------------------------------------------------------------
/Example/android/app/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/debug.keystore
--------------------------------------------------------------------------------
/Example/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
--------------------------------------------------------------------------------
/Example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Example/android/app/src/debug/java/com/example/ReactNativeFlipper.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Meta Platforms, Inc. and affiliates.
3 | *
4 | *
This source code is licensed under the MIT license found in the LICENSE file in the root
5 | * directory of this source tree.
6 | */
7 | package com.example;
8 |
9 | import android.content.Context;
10 | import com.facebook.flipper.android.AndroidFlipperClient;
11 | import com.facebook.flipper.android.utils.FlipperUtils;
12 | import com.facebook.flipper.core.FlipperClient;
13 | import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
14 | import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
15 | import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
16 | import com.facebook.flipper.plugins.inspector.DescriptorMapping;
17 | import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
18 | import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
19 | import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
20 | import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
21 | import com.facebook.react.ReactInstanceEventListener;
22 | import com.facebook.react.ReactInstanceManager;
23 | import com.facebook.react.bridge.ReactContext;
24 | import com.facebook.react.modules.network.NetworkingModule;
25 | import okhttp3.OkHttpClient;
26 |
27 | /**
28 | * Class responsible of loading Flipper inside your React Native application. This is the debug
29 | * flavor of it. Here you can add your own plugins and customize the Flipper setup.
30 | */
31 | public class ReactNativeFlipper {
32 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
33 | if (FlipperUtils.shouldEnableFlipper(context)) {
34 | final FlipperClient client = AndroidFlipperClient.getInstance(context);
35 |
36 | client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
37 | client.addPlugin(new DatabasesFlipperPlugin(context));
38 | client.addPlugin(new SharedPreferencesFlipperPlugin(context));
39 | client.addPlugin(CrashReporterPlugin.getInstance());
40 |
41 | NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
42 | NetworkingModule.setCustomClientBuilder(
43 | new NetworkingModule.CustomClientBuilder() {
44 | @Override
45 | public void apply(OkHttpClient.Builder builder) {
46 | builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
47 | }
48 | });
49 | client.addPlugin(networkFlipperPlugin);
50 | client.start();
51 |
52 | // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
53 | // Hence we run if after all native modules have been initialized
54 | ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
55 | if (reactContext == null) {
56 | reactInstanceManager.addReactInstanceEventListener(
57 | new ReactInstanceEventListener() {
58 | @Override
59 | public void onReactContextInitialized(ReactContext reactContext) {
60 | reactInstanceManager.removeReactInstanceEventListener(this);
61 | reactContext.runOnNativeModulesQueueThread(
62 | new Runnable() {
63 | @Override
64 | public void run() {
65 | client.addPlugin(new FrescoFlipperPlugin());
66 | }
67 | });
68 | }
69 | });
70 | } else {
71 | client.addPlugin(new FrescoFlipperPlugin());
72 | }
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/java/com/example/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example;
2 |
3 | import com.facebook.react.ReactActivity;
4 | import com.facebook.react.ReactActivityDelegate;
5 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
6 | import com.facebook.react.defaults.DefaultReactActivityDelegate;
7 |
8 | public class MainActivity extends ReactActivity {
9 |
10 | /**
11 | * Returns the name of the main component registered from JavaScript. This is used to schedule
12 | * rendering of the component.
13 | */
14 | @Override
15 | protected String getMainComponentName() {
16 | return "Example";
17 | }
18 |
19 | /**
20 | * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
21 | * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
22 | * (aka React 18) with two boolean flags.
23 | */
24 | @Override
25 | protected ReactActivityDelegate createReactActivityDelegate() {
26 | return new DefaultReactActivityDelegate(
27 | this,
28 | getMainComponentName(),
29 | // If you opted-in for the New Architecture, we enable the Fabric Renderer.
30 | DefaultNewArchitectureEntryPoint.getFabricEnabled());
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/java/com/example/MainApplication.java:
--------------------------------------------------------------------------------
1 | package com.example;
2 |
3 | import android.app.Application;
4 | import com.facebook.react.PackageList;
5 | import com.facebook.react.ReactApplication;
6 | import com.facebook.react.ReactNativeHost;
7 | import com.facebook.react.ReactPackage;
8 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
9 | import com.facebook.react.defaults.DefaultReactNativeHost;
10 | import com.facebook.soloader.SoLoader;
11 | import java.util.List;
12 |
13 | public class MainApplication extends Application implements ReactApplication {
14 |
15 | private final ReactNativeHost mReactNativeHost =
16 | new DefaultReactNativeHost(this) {
17 | @Override
18 | public boolean getUseDeveloperSupport() {
19 | return BuildConfig.DEBUG;
20 | }
21 |
22 | @Override
23 | protected List getPackages() {
24 | @SuppressWarnings("UnnecessaryLocalVariable")
25 | List packages = new PackageList(this).getPackages();
26 | // Packages that cannot be autolinked yet can be added manually here, for example:
27 | // packages.add(new MyReactNativePackage());
28 | return packages;
29 | }
30 |
31 | @Override
32 | protected String getJSMainModuleName() {
33 | return "index";
34 | }
35 |
36 | @Override
37 | protected boolean isNewArchEnabled() {
38 | return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
39 | }
40 |
41 | @Override
42 | protected Boolean isHermesEnabled() {
43 | return BuildConfig.IS_HERMES_ENABLED;
44 | }
45 | };
46 |
47 | @Override
48 | public ReactNativeHost getReactNativeHost() {
49 | return mReactNativeHost;
50 | }
51 |
52 | @Override
53 | public void onCreate() {
54 | super.onCreate();
55 | SoLoader.init(this, /* native exopackage */ false);
56 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
57 | // If you opted-in for the New Architecture, we load the native entry point for this app.
58 | DefaultNewArchitectureEntryPoint.load();
59 | }
60 | ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/drawable/rn_edit_text_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
21 |
22 |
23 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Example
3 |
4 |
--------------------------------------------------------------------------------
/Example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Example/android/app/src/release/java/com/example/ReactNativeFlipper.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Meta Platforms, Inc. and affiliates.
3 | *
4 | * This source code is licensed under the MIT license found in the LICENSE file in the root
5 | * directory of this source tree.
6 | */
7 | package com.example;
8 |
9 | import android.content.Context;
10 | import com.facebook.react.ReactInstanceManager;
11 |
12 | /**
13 | * Class responsible of loading Flipper inside your React Native application. This is the release
14 | * flavor of it so it's empty as we don't want to load Flipper.
15 | */
16 | public class ReactNativeFlipper {
17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
18 | // Do nothing as we don't want to initialize Flipper on Release.
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Example/android/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext {
5 | buildToolsVersion = "33.0.0"
6 | minSdkVersion = 21
7 | compileSdkVersion = 33
8 | targetSdkVersion = 33
9 |
10 | // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
11 | ndkVersion = "23.1.7779620"
12 | }
13 | repositories {
14 | google()
15 | mavenCentral()
16 | }
17 | dependencies {
18 | classpath("com.android.tools.build:gradle")
19 | classpath("com.facebook.react:react-native-gradle-plugin")
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | # AndroidX package structure to make it clearer which packages are bundled with the
21 | # Android operating system, and which are packaged with your app's APK
22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
23 | android.useAndroidX=true
24 | # Automatically convert third-party libraries to use AndroidX
25 | android.enableJetifier=true
26 |
27 | # Version of flipper SDK to use with React Native
28 | FLIPPER_VERSION=0.182.0
29 |
30 | # Use this property to specify which architecture you want to build.
31 | # You can also override it from the CLI using
32 | # ./gradlew -PreactNativeArchitectures=x86_64
33 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
34 |
35 | # Use this property to enable support to the new architecture.
36 | # This will allow you to use TurboModules and the Fabric render in
37 | # your application. You should enable this flag either if you want
38 | # to write custom TurboModules/Fabric components OR use libraries that
39 | # are providing them.
40 | newArchEnabled=true
41 |
42 | # Use this property to enable or disable the Hermes JS engine.
43 | # If set to false, you will be using JSC instead.
44 | hermesEnabled=true
45 |
--------------------------------------------------------------------------------
/Example/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/oblador/react-native-store-review/6d0cfce2d2909973e6cba1391345ae06a090bb53/Example/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/Example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
4 | networkTimeout=10000
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/Example/android/gradlew:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Copyright © 2015-2021 the original authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | #
21 | # Gradle start up script for POSIX generated by Gradle.
22 | #
23 | # Important for running:
24 | #
25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26 | # noncompliant, but you have some other compliant shell such as ksh or
27 | # bash, then to run this script, type that shell name before the whole
28 | # command line, like:
29 | #
30 | # ksh Gradle
31 | #
32 | # Busybox and similar reduced shells will NOT work, because this script
33 | # requires all of these POSIX shell features:
34 | # * functions;
35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37 | # * compound commands having a testable exit status, especially «case»;
38 | # * various built-in commands including «command», «set», and «ulimit».
39 | #
40 | # Important for patching:
41 | #
42 | # (2) This script targets any POSIX shell, so it avoids extensions provided
43 | # by Bash, Ksh, etc; in particular arrays are avoided.
44 | #
45 | # The "traditional" practice of packing multiple parameters into a
46 | # space-separated string is a well documented source of bugs and security
47 | # problems, so this is (mostly) avoided, by progressively accumulating
48 | # options in "$@", and eventually passing that to Java.
49 | #
50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52 | # see the in-line comments for details.
53 | #
54 | # There are tweaks for specific operating systems such as AIX, CygWin,
55 | # Darwin, MinGW, and NonStop.
56 | #
57 | # (3) This script is generated from the Groovy template
58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59 | # within the Gradle project.
60 | #
61 | # You can find Gradle at https://github.com/gradle/gradle/.
62 | #
63 | ##############################################################################
64 |
65 | # Attempt to set APP_HOME
66 |
67 | # Resolve links: $0 may be a link
68 | app_path=$0
69 |
70 | # Need this for daisy-chained symlinks.
71 | while
72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73 | [ -h "$app_path" ]
74 | do
75 | ls=$( ls -ld "$app_path" )
76 | link=${ls#*' -> '}
77 | case $link in #(
78 | /*) app_path=$link ;; #(
79 | *) app_path=$APP_HOME$link ;;
80 | esac
81 | done
82 |
83 | # This is normally unused
84 | # shellcheck disable=SC2034
85 | APP_BASE_NAME=${0##*/}
86 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
87 |
88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90 |
91 | # Use the maximum available, or set MAX_FD != -1 to use that value.
92 | MAX_FD=maximum
93 |
94 | warn () {
95 | echo "$*"
96 | } >&2
97 |
98 | die () {
99 | echo
100 | echo "$*"
101 | echo
102 | exit 1
103 | } >&2
104 |
105 | # OS specific support (must be 'true' or 'false').
106 | cygwin=false
107 | msys=false
108 | darwin=false
109 | nonstop=false
110 | case "$( uname )" in #(
111 | CYGWIN* ) cygwin=true ;; #(
112 | Darwin* ) darwin=true ;; #(
113 | MSYS* | MINGW* ) msys=true ;; #(
114 | NONSTOP* ) nonstop=true ;;
115 | esac
116 |
117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
118 |
119 |
120 | # Determine the Java command to use to start the JVM.
121 | if [ -n "$JAVA_HOME" ] ; then
122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
123 | # IBM's JDK on AIX uses strange locations for the executables
124 | JAVACMD=$JAVA_HOME/jre/sh/java
125 | else
126 | JAVACMD=$JAVA_HOME/bin/java
127 | fi
128 | if [ ! -x "$JAVACMD" ] ; then
129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
130 |
131 | Please set the JAVA_HOME variable in your environment to match the
132 | location of your Java installation."
133 | fi
134 | else
135 | JAVACMD=java
136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137 |
138 | Please set the JAVA_HOME variable in your environment to match the
139 | location of your Java installation."
140 | fi
141 |
142 | # Increase the maximum file descriptors if we can.
143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144 | case $MAX_FD in #(
145 | max*)
146 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
147 | # shellcheck disable=SC3045
148 | MAX_FD=$( ulimit -H -n ) ||
149 | warn "Could not query maximum file descriptor limit"
150 | esac
151 | case $MAX_FD in #(
152 | '' | soft) :;; #(
153 | *)
154 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
155 | # shellcheck disable=SC3045
156 | ulimit -n "$MAX_FD" ||
157 | warn "Could not set maximum file descriptor limit to $MAX_FD"
158 | esac
159 | fi
160 |
161 | # Collect all arguments for the java command, stacking in reverse order:
162 | # * args from the command line
163 | # * the main class name
164 | # * -classpath
165 | # * -D...appname settings
166 | # * --module-path (only if needed)
167 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
168 |
169 | # For Cygwin or MSYS, switch paths to Windows format before running java
170 | if "$cygwin" || "$msys" ; then
171 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
172 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
173 |
174 | JAVACMD=$( cygpath --unix "$JAVACMD" )
175 |
176 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
177 | for arg do
178 | if
179 | case $arg in #(
180 | -*) false ;; # don't mess with options #(
181 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
182 | [ -e "$t" ] ;; #(
183 | *) false ;;
184 | esac
185 | then
186 | arg=$( cygpath --path --ignore --mixed "$arg" )
187 | fi
188 | # Roll the args list around exactly as many times as the number of
189 | # args, so each arg winds up back in the position where it started, but
190 | # possibly modified.
191 | #
192 | # NB: a `for` loop captures its iteration list before it begins, so
193 | # changing the positional parameters here affects neither the number of
194 | # iterations, nor the values presented in `arg`.
195 | shift # remove old arg
196 | set -- "$@" "$arg" # push replacement arg
197 | done
198 | fi
199 |
200 | # Collect all arguments for the java command;
201 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
202 | # shell script including quotes and variable substitutions, so put them in
203 | # double quotes to make sure that they get re-expanded; and
204 | # * put everything else in single quotes, so that it's not re-expanded.
205 |
206 | set -- \
207 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
208 | -classpath "$CLASSPATH" \
209 | org.gradle.wrapper.GradleWrapperMain \
210 | "$@"
211 |
212 | # Stop when "xargs" is not available.
213 | if ! command -v xargs >/dev/null 2>&1
214 | then
215 | die "xargs is not available"
216 | fi
217 |
218 | # Use "xargs" to parse quoted args.
219 | #
220 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
221 | #
222 | # In Bash we could simply go:
223 | #
224 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
225 | # set -- "${ARGS[@]}" "$@"
226 | #
227 | # but POSIX shell has neither arrays nor command substitution, so instead we
228 | # post-process each arg (as a line of input to sed) to backslash-escape any
229 | # character that might be a shell metacharacter, then use eval to reverse
230 | # that process (while maintaining the separation between arguments), and wrap
231 | # the whole thing up as a single "set" statement.
232 | #
233 | # This will of course break if any of these variables contains a newline or
234 | # an unmatched quote.
235 | #
236 |
237 | eval "set -- $(
238 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
239 | xargs -n1 |
240 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
241 | tr '\n' ' '
242 | )" '"$@"'
243 |
244 | exec "$JAVACMD" "$@"
245 |
--------------------------------------------------------------------------------
/Example/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%"=="" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%"=="" set DIRNAME=.
29 | @rem This is normally unused
30 | set APP_BASE_NAME=%~n0
31 | set APP_HOME=%DIRNAME%
32 |
33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
35 |
36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
38 |
39 | @rem Find java.exe
40 | if defined JAVA_HOME goto findJavaFromJavaHome
41 |
42 | set JAVA_EXE=java.exe
43 | %JAVA_EXE% -version >NUL 2>&1
44 | if %ERRORLEVEL% equ 0 goto execute
45 |
46 | echo.
47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
48 | echo.
49 | echo Please set the JAVA_HOME variable in your environment to match the
50 | echo location of your Java installation.
51 |
52 | goto fail
53 |
54 | :findJavaFromJavaHome
55 | set JAVA_HOME=%JAVA_HOME:"=%
56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
57 |
58 | if exist "%JAVA_EXE%" goto execute
59 |
60 | echo.
61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
62 | echo.
63 | echo Please set the JAVA_HOME variable in your environment to match the
64 | echo location of your Java installation.
65 |
66 | goto fail
67 |
68 | :execute
69 | @rem Setup the command line
70 |
71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
72 |
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if %ERRORLEVEL% equ 0 goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | set EXIT_CODE=%ERRORLEVEL%
85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1
86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
87 | exit /b %EXIT_CODE%
88 |
89 | :mainEnd
90 | if "%OS%"=="Windows_NT" endlocal
91 |
92 | :omega
93 |
--------------------------------------------------------------------------------
/Example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'Example'
2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
3 | include ':app'
4 | includeBuild('../node_modules/@react-native/gradle-plugin')
5 |
--------------------------------------------------------------------------------
/Example/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Example",
3 | "displayName": "Example"
4 | }
5 |
--------------------------------------------------------------------------------
/Example/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: ['module:metro-react-native-babel-preset'],
3 | };
4 |
--------------------------------------------------------------------------------
/Example/index.js:
--------------------------------------------------------------------------------
1 | import { AppRegistry } from 'react-native';
2 | import App from './App';
3 | import { name as appName } from './app.json';
4 |
5 | AppRegistry.registerComponent(appName, () => App);
6 |
--------------------------------------------------------------------------------
/Example/ios/.xcode.env:
--------------------------------------------------------------------------------
1 | # This `.xcode.env` file is versioned and is used to source the environment
2 | # used when running script phases inside Xcode.
3 | # To customize your local environment, you can create an `.xcode.env.local`
4 | # file that is not versioned.
5 |
6 | # NODE_BINARY variable contains the PATH to the node executable.
7 | #
8 | # Customize the NODE_BINARY variable here.
9 | # For example, to use nvm with brew, add the following line
10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use
11 | export NODE_BINARY=$(command -v node)
12 |
--------------------------------------------------------------------------------
/Example/ios/Example.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 54;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00E356F31AD99517003FC87E /* ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExampleTests.m */; };
11 | 0C80B921A6F3F58F76C31292 /* libPods-Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */; };
12 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
15 | 7699B88040F8A987B510C191 /* libPods-Example-ExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */; };
16 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXContainerItemProxy section */
20 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
21 | isa = PBXContainerItemProxy;
22 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
23 | proxyType = 1;
24 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
25 | remoteInfo = Example;
26 | };
27 | /* End PBXContainerItemProxy section */
28 |
29 | /* Begin PBXFileReference section */
30 | 00E356EE1AD99517003FC87E /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
31 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
32 | 00E356F21AD99517003FC87E /* ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleTests.m; sourceTree = ""; };
33 | 13B07F961A680F5B00A75B9A /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
34 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Example/AppDelegate.h; sourceTree = ""; };
35 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Example/AppDelegate.mm; sourceTree = ""; };
36 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Example/Images.xcassets; sourceTree = ""; };
37 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Example/Info.plist; sourceTree = ""; };
38 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Example/main.m; sourceTree = ""; };
39 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Example-ExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
40 | 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; };
41 | 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; };
42 | 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-ExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests.debug.xcconfig"; sourceTree = ""; };
43 | 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
44 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = Example/LaunchScreen.storyboard; sourceTree = ""; };
45 | 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-ExampleTests.release.xcconfig"; path = "Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests.release.xcconfig"; sourceTree = ""; };
46 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
47 | /* End PBXFileReference section */
48 |
49 | /* Begin PBXFrameworksBuildPhase section */
50 | 00E356EB1AD99517003FC87E /* Frameworks */ = {
51 | isa = PBXFrameworksBuildPhase;
52 | buildActionMask = 2147483647;
53 | files = (
54 | 7699B88040F8A987B510C191 /* libPods-Example-ExampleTests.a in Frameworks */,
55 | );
56 | runOnlyForDeploymentPostprocessing = 0;
57 | };
58 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
59 | isa = PBXFrameworksBuildPhase;
60 | buildActionMask = 2147483647;
61 | files = (
62 | 0C80B921A6F3F58F76C31292 /* libPods-Example.a in Frameworks */,
63 | );
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | /* End PBXFrameworksBuildPhase section */
67 |
68 | /* Begin PBXGroup section */
69 | 00E356EF1AD99517003FC87E /* ExampleTests */ = {
70 | isa = PBXGroup;
71 | children = (
72 | 00E356F21AD99517003FC87E /* ExampleTests.m */,
73 | 00E356F01AD99517003FC87E /* Supporting Files */,
74 | );
75 | path = ExampleTests;
76 | sourceTree = "";
77 | };
78 | 00E356F01AD99517003FC87E /* Supporting Files */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 00E356F11AD99517003FC87E /* Info.plist */,
82 | );
83 | name = "Supporting Files";
84 | sourceTree = "";
85 | };
86 | 13B07FAE1A68108700A75B9A /* Example */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
90 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
91 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
92 | 13B07FB61A68108700A75B9A /* Info.plist */,
93 | 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
94 | 13B07FB71A68108700A75B9A /* main.m */,
95 | );
96 | name = Example;
97 | sourceTree = "";
98 | };
99 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
100 | isa = PBXGroup;
101 | children = (
102 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
103 | 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */,
104 | 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */,
105 | );
106 | name = Frameworks;
107 | sourceTree = "";
108 | };
109 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
110 | isa = PBXGroup;
111 | children = (
112 | );
113 | name = Libraries;
114 | sourceTree = "";
115 | };
116 | 83CBB9F61A601CBA00E9B192 = {
117 | isa = PBXGroup;
118 | children = (
119 | 13B07FAE1A68108700A75B9A /* Example */,
120 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
121 | 00E356EF1AD99517003FC87E /* ExampleTests */,
122 | 83CBBA001A601CBA00E9B192 /* Products */,
123 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
124 | BBD78D7AC51CEA395F1C20DB /* Pods */,
125 | );
126 | indentWidth = 2;
127 | sourceTree = "";
128 | tabWidth = 2;
129 | usesTabs = 0;
130 | };
131 | 83CBBA001A601CBA00E9B192 /* Products */ = {
132 | isa = PBXGroup;
133 | children = (
134 | 13B07F961A680F5B00A75B9A /* Example.app */,
135 | 00E356EE1AD99517003FC87E /* ExampleTests.xctest */,
136 | );
137 | name = Products;
138 | sourceTree = "";
139 | };
140 | BBD78D7AC51CEA395F1C20DB /* Pods */ = {
141 | isa = PBXGroup;
142 | children = (
143 | 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */,
144 | 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */,
145 | 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */,
146 | 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */,
147 | );
148 | path = Pods;
149 | sourceTree = "";
150 | };
151 | /* End PBXGroup section */
152 |
153 | /* Begin PBXNativeTarget section */
154 | 00E356ED1AD99517003FC87E /* ExampleTests */ = {
155 | isa = PBXNativeTarget;
156 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExampleTests" */;
157 | buildPhases = (
158 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
159 | 00E356EA1AD99517003FC87E /* Sources */,
160 | 00E356EB1AD99517003FC87E /* Frameworks */,
161 | 00E356EC1AD99517003FC87E /* Resources */,
162 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
163 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
164 | );
165 | buildRules = (
166 | );
167 | dependencies = (
168 | 00E356F51AD99517003FC87E /* PBXTargetDependency */,
169 | );
170 | name = ExampleTests;
171 | productName = ExampleTests;
172 | productReference = 00E356EE1AD99517003FC87E /* ExampleTests.xctest */;
173 | productType = "com.apple.product-type.bundle.unit-test";
174 | };
175 | 13B07F861A680F5B00A75B9A /* Example */ = {
176 | isa = PBXNativeTarget;
177 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Example" */;
178 | buildPhases = (
179 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
180 | FD10A7F022414F080027D42C /* Start Packager */,
181 | 13B07F871A680F5B00A75B9A /* Sources */,
182 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
183 | 13B07F8E1A680F5B00A75B9A /* Resources */,
184 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
185 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
186 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
187 | );
188 | buildRules = (
189 | );
190 | dependencies = (
191 | );
192 | name = Example;
193 | productName = Example;
194 | productReference = 13B07F961A680F5B00A75B9A /* Example.app */;
195 | productType = "com.apple.product-type.application";
196 | };
197 | /* End PBXNativeTarget section */
198 |
199 | /* Begin PBXProject section */
200 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
201 | isa = PBXProject;
202 | attributes = {
203 | LastUpgradeCheck = 1210;
204 | TargetAttributes = {
205 | 00E356ED1AD99517003FC87E = {
206 | CreatedOnToolsVersion = 6.2;
207 | TestTargetID = 13B07F861A680F5B00A75B9A;
208 | };
209 | 13B07F861A680F5B00A75B9A = {
210 | LastSwiftMigration = 1120;
211 | };
212 | };
213 | };
214 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Example" */;
215 | compatibilityVersion = "Xcode 12.0";
216 | developmentRegion = en;
217 | hasScannedForEncodings = 0;
218 | knownRegions = (
219 | en,
220 | Base,
221 | );
222 | mainGroup = 83CBB9F61A601CBA00E9B192;
223 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
224 | projectDirPath = "";
225 | projectRoot = "";
226 | targets = (
227 | 13B07F861A680F5B00A75B9A /* Example */,
228 | 00E356ED1AD99517003FC87E /* ExampleTests */,
229 | );
230 | };
231 | /* End PBXProject section */
232 |
233 | /* Begin PBXResourcesBuildPhase section */
234 | 00E356EC1AD99517003FC87E /* Resources */ = {
235 | isa = PBXResourcesBuildPhase;
236 | buildActionMask = 2147483647;
237 | files = (
238 | );
239 | runOnlyForDeploymentPostprocessing = 0;
240 | };
241 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
242 | isa = PBXResourcesBuildPhase;
243 | buildActionMask = 2147483647;
244 | files = (
245 | 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
246 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
247 | );
248 | runOnlyForDeploymentPostprocessing = 0;
249 | };
250 | /* End PBXResourcesBuildPhase section */
251 |
252 | /* Begin PBXShellScriptBuildPhase section */
253 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
254 | isa = PBXShellScriptBuildPhase;
255 | buildActionMask = 2147483647;
256 | files = (
257 | );
258 | inputPaths = (
259 | "$(SRCROOT)/.xcode.env.local",
260 | "$(SRCROOT)/.xcode.env",
261 | );
262 | name = "Bundle React Native code and images";
263 | outputPaths = (
264 | );
265 | runOnlyForDeploymentPostprocessing = 0;
266 | shellPath = /bin/sh;
267 | shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
268 | };
269 | 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
270 | isa = PBXShellScriptBuildPhase;
271 | buildActionMask = 2147483647;
272 | files = (
273 | );
274 | inputFileListPaths = (
275 | "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-input-files.xcfilelist",
276 | );
277 | name = "[CP] Embed Pods Frameworks";
278 | outputFileListPaths = (
279 | "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-output-files.xcfilelist",
280 | );
281 | runOnlyForDeploymentPostprocessing = 0;
282 | shellPath = /bin/sh;
283 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n";
284 | showEnvVarsInLog = 0;
285 | };
286 | A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
287 | isa = PBXShellScriptBuildPhase;
288 | buildActionMask = 2147483647;
289 | files = (
290 | );
291 | inputFileListPaths = (
292 | );
293 | inputPaths = (
294 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
295 | "${PODS_ROOT}/Manifest.lock",
296 | );
297 | name = "[CP] Check Pods Manifest.lock";
298 | outputFileListPaths = (
299 | );
300 | outputPaths = (
301 | "$(DERIVED_FILE_DIR)/Pods-Example-ExampleTests-checkManifestLockResult.txt",
302 | );
303 | runOnlyForDeploymentPostprocessing = 0;
304 | shellPath = /bin/sh;
305 | 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";
306 | showEnvVarsInLog = 0;
307 | };
308 | C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
309 | isa = PBXShellScriptBuildPhase;
310 | buildActionMask = 2147483647;
311 | files = (
312 | );
313 | inputFileListPaths = (
314 | );
315 | inputPaths = (
316 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
317 | "${PODS_ROOT}/Manifest.lock",
318 | );
319 | name = "[CP] Check Pods Manifest.lock";
320 | outputFileListPaths = (
321 | );
322 | outputPaths = (
323 | "$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt",
324 | );
325 | runOnlyForDeploymentPostprocessing = 0;
326 | shellPath = /bin/sh;
327 | 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";
328 | showEnvVarsInLog = 0;
329 | };
330 | C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
331 | isa = PBXShellScriptBuildPhase;
332 | buildActionMask = 2147483647;
333 | files = (
334 | );
335 | inputFileListPaths = (
336 | "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
337 | );
338 | name = "[CP] Embed Pods Frameworks";
339 | outputFileListPaths = (
340 | "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
341 | );
342 | runOnlyForDeploymentPostprocessing = 0;
343 | shellPath = /bin/sh;
344 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks.sh\"\n";
345 | showEnvVarsInLog = 0;
346 | };
347 | E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
348 | isa = PBXShellScriptBuildPhase;
349 | buildActionMask = 2147483647;
350 | files = (
351 | );
352 | inputFileListPaths = (
353 | "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources-${CONFIGURATION}-input-files.xcfilelist",
354 | );
355 | name = "[CP] Copy Pods Resources";
356 | outputFileListPaths = (
357 | "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources-${CONFIGURATION}-output-files.xcfilelist",
358 | );
359 | runOnlyForDeploymentPostprocessing = 0;
360 | shellPath = /bin/sh;
361 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources.sh\"\n";
362 | showEnvVarsInLog = 0;
363 | };
364 | F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
365 | isa = PBXShellScriptBuildPhase;
366 | buildActionMask = 2147483647;
367 | files = (
368 | );
369 | inputFileListPaths = (
370 | "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist",
371 | );
372 | name = "[CP] Copy Pods Resources";
373 | outputFileListPaths = (
374 | "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist",
375 | );
376 | runOnlyForDeploymentPostprocessing = 0;
377 | shellPath = /bin/sh;
378 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources.sh\"\n";
379 | showEnvVarsInLog = 0;
380 | };
381 | FD10A7F022414F080027D42C /* Start Packager */ = {
382 | isa = PBXShellScriptBuildPhase;
383 | buildActionMask = 2147483647;
384 | files = (
385 | );
386 | inputFileListPaths = (
387 | );
388 | inputPaths = (
389 | );
390 | name = "Start Packager";
391 | outputFileListPaths = (
392 | );
393 | outputPaths = (
394 | );
395 | runOnlyForDeploymentPostprocessing = 0;
396 | shellPath = /bin/sh;
397 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
398 | showEnvVarsInLog = 0;
399 | };
400 | /* End PBXShellScriptBuildPhase section */
401 |
402 | /* Begin PBXSourcesBuildPhase section */
403 | 00E356EA1AD99517003FC87E /* Sources */ = {
404 | isa = PBXSourcesBuildPhase;
405 | buildActionMask = 2147483647;
406 | files = (
407 | 00E356F31AD99517003FC87E /* ExampleTests.m in Sources */,
408 | );
409 | runOnlyForDeploymentPostprocessing = 0;
410 | };
411 | 13B07F871A680F5B00A75B9A /* Sources */ = {
412 | isa = PBXSourcesBuildPhase;
413 | buildActionMask = 2147483647;
414 | files = (
415 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
416 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
417 | );
418 | runOnlyForDeploymentPostprocessing = 0;
419 | };
420 | /* End PBXSourcesBuildPhase section */
421 |
422 | /* Begin PBXTargetDependency section */
423 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
424 | isa = PBXTargetDependency;
425 | target = 13B07F861A680F5B00A75B9A /* Example */;
426 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
427 | };
428 | /* End PBXTargetDependency section */
429 |
430 | /* Begin XCBuildConfiguration section */
431 | 00E356F61AD99517003FC87E /* Debug */ = {
432 | isa = XCBuildConfiguration;
433 | baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */;
434 | buildSettings = {
435 | BUNDLE_LOADER = "$(TEST_HOST)";
436 | GCC_PREPROCESSOR_DEFINITIONS = (
437 | "DEBUG=1",
438 | "$(inherited)",
439 | );
440 | INFOPLIST_FILE = ExampleTests/Info.plist;
441 | IPHONEOS_DEPLOYMENT_TARGET = 12.4;
442 | LD_RUNPATH_SEARCH_PATHS = (
443 | "$(inherited)",
444 | "@executable_path/Frameworks",
445 | "@loader_path/Frameworks",
446 | );
447 | OTHER_LDFLAGS = (
448 | "-ObjC",
449 | "-lc++",
450 | "$(inherited)",
451 | );
452 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
453 | PRODUCT_NAME = "$(TARGET_NAME)";
454 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
455 | };
456 | name = Debug;
457 | };
458 | 00E356F71AD99517003FC87E /* Release */ = {
459 | isa = XCBuildConfiguration;
460 | baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */;
461 | buildSettings = {
462 | BUNDLE_LOADER = "$(TEST_HOST)";
463 | COPY_PHASE_STRIP = NO;
464 | INFOPLIST_FILE = ExampleTests/Info.plist;
465 | IPHONEOS_DEPLOYMENT_TARGET = 12.4;
466 | LD_RUNPATH_SEARCH_PATHS = (
467 | "$(inherited)",
468 | "@executable_path/Frameworks",
469 | "@loader_path/Frameworks",
470 | );
471 | OTHER_LDFLAGS = (
472 | "-ObjC",
473 | "-lc++",
474 | "$(inherited)",
475 | );
476 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
477 | PRODUCT_NAME = "$(TARGET_NAME)";
478 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example";
479 | };
480 | name = Release;
481 | };
482 | 13B07F941A680F5B00A75B9A /* Debug */ = {
483 | isa = XCBuildConfiguration;
484 | baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */;
485 | buildSettings = {
486 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
487 | CLANG_ENABLE_MODULES = YES;
488 | CURRENT_PROJECT_VERSION = 1;
489 | ENABLE_BITCODE = NO;
490 | INFOPLIST_FILE = Example/Info.plist;
491 | LD_RUNPATH_SEARCH_PATHS = (
492 | "$(inherited)",
493 | "@executable_path/Frameworks",
494 | );
495 | MARKETING_VERSION = 1.0;
496 | OTHER_LDFLAGS = (
497 | "$(inherited)",
498 | "-ObjC",
499 | "-lc++",
500 | );
501 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
502 | PRODUCT_NAME = Example;
503 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
504 | SWIFT_VERSION = 5.0;
505 | VERSIONING_SYSTEM = "apple-generic";
506 | };
507 | name = Debug;
508 | };
509 | 13B07F951A680F5B00A75B9A /* Release */ = {
510 | isa = XCBuildConfiguration;
511 | baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */;
512 | buildSettings = {
513 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
514 | CLANG_ENABLE_MODULES = YES;
515 | CURRENT_PROJECT_VERSION = 1;
516 | INFOPLIST_FILE = Example/Info.plist;
517 | LD_RUNPATH_SEARCH_PATHS = (
518 | "$(inherited)",
519 | "@executable_path/Frameworks",
520 | );
521 | MARKETING_VERSION = 1.0;
522 | OTHER_LDFLAGS = (
523 | "$(inherited)",
524 | "-ObjC",
525 | "-lc++",
526 | );
527 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
528 | PRODUCT_NAME = Example;
529 | SWIFT_VERSION = 5.0;
530 | VERSIONING_SYSTEM = "apple-generic";
531 | };
532 | name = Release;
533 | };
534 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
535 | isa = XCBuildConfiguration;
536 | buildSettings = {
537 | ALWAYS_SEARCH_USER_PATHS = NO;
538 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
539 | CLANG_CXX_LANGUAGE_STANDARD = "c++17";
540 | CLANG_CXX_LIBRARY = "libc++";
541 | CLANG_ENABLE_MODULES = YES;
542 | CLANG_ENABLE_OBJC_ARC = YES;
543 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
544 | CLANG_WARN_BOOL_CONVERSION = YES;
545 | CLANG_WARN_COMMA = YES;
546 | CLANG_WARN_CONSTANT_CONVERSION = YES;
547 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
548 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
549 | CLANG_WARN_EMPTY_BODY = YES;
550 | CLANG_WARN_ENUM_CONVERSION = YES;
551 | CLANG_WARN_INFINITE_RECURSION = YES;
552 | CLANG_WARN_INT_CONVERSION = YES;
553 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
554 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
555 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
556 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
557 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
558 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
559 | CLANG_WARN_STRICT_PROTOTYPES = YES;
560 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
561 | CLANG_WARN_UNREACHABLE_CODE = YES;
562 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
563 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
564 | COPY_PHASE_STRIP = NO;
565 | ENABLE_STRICT_OBJC_MSGSEND = YES;
566 | ENABLE_TESTABILITY = YES;
567 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
568 | GCC_C_LANGUAGE_STANDARD = gnu99;
569 | GCC_DYNAMIC_NO_PIC = NO;
570 | GCC_NO_COMMON_BLOCKS = YES;
571 | GCC_OPTIMIZATION_LEVEL = 0;
572 | GCC_PREPROCESSOR_DEFINITIONS = (
573 | "DEBUG=1",
574 | "$(inherited)",
575 | );
576 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
577 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
578 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
579 | GCC_WARN_UNDECLARED_SELECTOR = YES;
580 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
581 | GCC_WARN_UNUSED_FUNCTION = YES;
582 | GCC_WARN_UNUSED_VARIABLE = YES;
583 | IPHONEOS_DEPLOYMENT_TARGET = 12.4;
584 | LD_RUNPATH_SEARCH_PATHS = (
585 | /usr/lib/swift,
586 | "$(inherited)",
587 | );
588 | LIBRARY_SEARCH_PATHS = (
589 | "\"$(SDKROOT)/usr/lib/swift\"",
590 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
591 | "\"$(inherited)\"",
592 | );
593 | MTL_ENABLE_DEBUG_INFO = YES;
594 | ONLY_ACTIVE_ARCH = YES;
595 | OTHER_CFLAGS = (
596 | "$(inherited)",
597 | "-DRN_FABRIC_ENABLED",
598 | );
599 | OTHER_CPLUSPLUSFLAGS = (
600 | "$(OTHER_CFLAGS)",
601 | "-DFOLLY_NO_CONFIG",
602 | "-DFOLLY_MOBILE=1",
603 | "-DFOLLY_USE_LIBCPP=1",
604 | "-DRN_FABRIC_ENABLED",
605 | );
606 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
607 | SDKROOT = iphoneos;
608 | };
609 | name = Debug;
610 | };
611 | 83CBBA211A601CBA00E9B192 /* Release */ = {
612 | isa = XCBuildConfiguration;
613 | buildSettings = {
614 | ALWAYS_SEARCH_USER_PATHS = NO;
615 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
616 | CLANG_CXX_LANGUAGE_STANDARD = "c++17";
617 | CLANG_CXX_LIBRARY = "libc++";
618 | CLANG_ENABLE_MODULES = YES;
619 | CLANG_ENABLE_OBJC_ARC = YES;
620 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
621 | CLANG_WARN_BOOL_CONVERSION = YES;
622 | CLANG_WARN_COMMA = YES;
623 | CLANG_WARN_CONSTANT_CONVERSION = YES;
624 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
625 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
626 | CLANG_WARN_EMPTY_BODY = YES;
627 | CLANG_WARN_ENUM_CONVERSION = YES;
628 | CLANG_WARN_INFINITE_RECURSION = YES;
629 | CLANG_WARN_INT_CONVERSION = YES;
630 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
631 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
632 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
633 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
634 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
635 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
636 | CLANG_WARN_STRICT_PROTOTYPES = YES;
637 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
638 | CLANG_WARN_UNREACHABLE_CODE = YES;
639 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
640 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
641 | COPY_PHASE_STRIP = YES;
642 | ENABLE_NS_ASSERTIONS = NO;
643 | ENABLE_STRICT_OBJC_MSGSEND = YES;
644 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
645 | GCC_C_LANGUAGE_STANDARD = gnu99;
646 | GCC_NO_COMMON_BLOCKS = YES;
647 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
648 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
649 | GCC_WARN_UNDECLARED_SELECTOR = YES;
650 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
651 | GCC_WARN_UNUSED_FUNCTION = YES;
652 | GCC_WARN_UNUSED_VARIABLE = YES;
653 | IPHONEOS_DEPLOYMENT_TARGET = 12.4;
654 | LD_RUNPATH_SEARCH_PATHS = (
655 | /usr/lib/swift,
656 | "$(inherited)",
657 | );
658 | LIBRARY_SEARCH_PATHS = (
659 | "\"$(SDKROOT)/usr/lib/swift\"",
660 | "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
661 | "\"$(inherited)\"",
662 | );
663 | MTL_ENABLE_DEBUG_INFO = NO;
664 | OTHER_CFLAGS = (
665 | "$(inherited)",
666 | "-DRN_FABRIC_ENABLED",
667 | );
668 | OTHER_CPLUSPLUSFLAGS = (
669 | "$(OTHER_CFLAGS)",
670 | "-DFOLLY_NO_CONFIG",
671 | "-DFOLLY_MOBILE=1",
672 | "-DFOLLY_USE_LIBCPP=1",
673 | "-DRN_FABRIC_ENABLED",
674 | );
675 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
676 | SDKROOT = iphoneos;
677 | VALIDATE_PRODUCT = YES;
678 | };
679 | name = Release;
680 | };
681 | /* End XCBuildConfiguration section */
682 |
683 | /* Begin XCConfigurationList section */
684 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExampleTests" */ = {
685 | isa = XCConfigurationList;
686 | buildConfigurations = (
687 | 00E356F61AD99517003FC87E /* Debug */,
688 | 00E356F71AD99517003FC87E /* Release */,
689 | );
690 | defaultConfigurationIsVisible = 0;
691 | defaultConfigurationName = Release;
692 | };
693 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Example" */ = {
694 | isa = XCConfigurationList;
695 | buildConfigurations = (
696 | 13B07F941A680F5B00A75B9A /* Debug */,
697 | 13B07F951A680F5B00A75B9A /* Release */,
698 | );
699 | defaultConfigurationIsVisible = 0;
700 | defaultConfigurationName = Release;
701 | };
702 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Example" */ = {
703 | isa = XCConfigurationList;
704 | buildConfigurations = (
705 | 83CBBA201A601CBA00E9B192 /* Debug */,
706 | 83CBBA211A601CBA00E9B192 /* Release */,
707 | );
708 | defaultConfigurationIsVisible = 0;
709 | defaultConfigurationName = Release;
710 | };
711 | /* End XCConfigurationList section */
712 | };
713 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
714 | }
715 |
--------------------------------------------------------------------------------
/Example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
70 |
72 |
78 |
79 |
80 |
81 |
83 |
84 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/Example/ios/Example.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/ios/Example/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : RCTAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/Example/ios/Example/AppDelegate.mm:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 |
3 | #import
4 |
5 | @implementation AppDelegate
6 |
7 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
8 | {
9 | self.moduleName = @"Example";
10 | // You can add your custom initial props in the dictionary below.
11 | // They will be passed down to the ViewController used by React Native.
12 | self.initialProps = @{};
13 |
14 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
15 | }
16 |
17 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
18 | {
19 | #if DEBUG
20 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
21 | #else
22 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
23 | #endif
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Example/ios/Example/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "scale" : "1x",
46 | "size" : "1024x1024"
47 | }
48 | ],
49 | "info" : {
50 | "author" : "xcode",
51 | "version" : 1
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/ios/Example/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/ios/Example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | Example
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(CURRENT_PROJECT_VERSION)
25 | LSRequiresIPhoneOS
26 |
27 | NSAppTransportSecurity
28 |
29 | NSExceptionDomains
30 |
31 | localhost
32 |
33 | NSExceptionAllowsInsecureHTTPLoads
34 |
35 |
36 |
37 |
38 | NSLocationWhenInUseUsageDescription
39 |
40 | UILaunchStoryboardName
41 | LaunchScreen
42 | UIRequiredDeviceCapabilities
43 |
44 | armv7
45 |
46 | UISupportedInterfaceOrientations
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 | UIViewControllerBasedStatusBarAppearance
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Example/ios/Example/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Example/ios/Example/main.m:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char *argv[])
6 | {
7 | @autoreleasepool {
8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Example/ios/ExampleTests/ExampleTests.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | #import
5 | #import
6 |
7 | #define TIMEOUT_SECONDS 600
8 | #define TEXT_TO_LOOK_FOR @"Welcome to React"
9 |
10 | @interface ExampleTests : XCTestCase
11 |
12 | @end
13 |
14 | @implementation ExampleTests
15 |
16 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
17 | {
18 | if (test(view)) {
19 | return YES;
20 | }
21 | for (UIView *subview in [view subviews]) {
22 | if ([self findSubviewInView:subview matching:test]) {
23 | return YES;
24 | }
25 | }
26 | return NO;
27 | }
28 |
29 | - (void)testRendersWelcomeScreen
30 | {
31 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
32 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
33 | BOOL foundElement = NO;
34 |
35 | __block NSString *redboxError = nil;
36 | #ifdef DEBUG
37 | RCTSetLogFunction(
38 | ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
39 | if (level >= RCTLogLevelError) {
40 | redboxError = message;
41 | }
42 | });
43 | #endif
44 |
45 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
46 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
47 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
48 |
49 | foundElement = [self findSubviewInView:vc.view
50 | matching:^BOOL(UIView *view) {
51 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
52 | return YES;
53 | }
54 | return NO;
55 | }];
56 | }
57 |
58 | #ifdef DEBUG
59 | RCTSetLogFunction(RCTDefaultLogFunction);
60 | #endif
61 |
62 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
63 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
64 | }
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/Example/ios/ExampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/ios/Podfile:
--------------------------------------------------------------------------------
1 | ENV['RCT_NEW_ARCH_ENABLED'] = '1'
2 |
3 | # Resolve react_native_pods.rb with node to allow for hoisting
4 | require Pod::Executable.execute_command('node', ['-p',
5 | 'require.resolve(
6 | "react-native/scripts/react_native_pods.rb",
7 | {paths: [process.argv[1]]},
8 | )', __dir__]).strip
9 |
10 | platform :ios, min_ios_version_supported
11 | prepare_react_native_project!
12 |
13 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
14 | # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
15 | #
16 | # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
17 | # ```js
18 | # module.exports = {
19 | # dependencies: {
20 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
21 | # ```
22 | flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
23 |
24 | linkage = ENV['USE_FRAMEWORKS']
25 | if linkage != nil
26 | Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
27 | use_frameworks! :linkage => linkage.to_sym
28 | end
29 |
30 | target 'Example' do
31 | config = use_native_modules!
32 |
33 | # Flags change depending on the env values.
34 | flags = get_default_flags()
35 |
36 | use_react_native!(
37 | :path => config[:reactNativePath],
38 | # Hermes is now enabled by default. Disable by setting this flag to false.
39 | :hermes_enabled => flags[:hermes_enabled],
40 | :fabric_enabled => flags[:fabric_enabled],
41 | # Enables Flipper.
42 | #
43 | # Note that if you have use_frameworks! enabled, Flipper will not work and
44 | # you should disable the next line.
45 | :flipper_configuration => flipper_config,
46 | # An absolute path to your application root.
47 | :app_path => "#{Pod::Config.instance.installation_root}/.."
48 | )
49 |
50 | target 'ExampleTests' do
51 | inherit! :complete
52 | # Pods for testing
53 | end
54 |
55 | post_install do |installer|
56 | # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
57 | react_native_post_install(
58 | installer,
59 | config[:reactNativePath],
60 | :mac_catalyst_enabled => false
61 | )
62 | __apply_Xcode_12_5_M1_post_install_workaround(installer)
63 | end
64 | end
65 |
--------------------------------------------------------------------------------
/Example/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - boost (1.76.0)
3 | - CocoaAsyncSocket (7.6.5)
4 | - DoubleConversion (1.1.6)
5 | - FBLazyVector (0.72.1)
6 | - Flipper (0.182.0):
7 | - Flipper-Folly (~> 2.6)
8 | - Flipper-Boost-iOSX (1.76.0.1.11)
9 | - Flipper-DoubleConversion (3.2.0.1)
10 | - Flipper-Fmt (7.1.7)
11 | - Flipper-Folly (2.6.10):
12 | - Flipper-Boost-iOSX
13 | - Flipper-DoubleConversion
14 | - Flipper-Fmt (= 7.1.7)
15 | - Flipper-Glog
16 | - libevent (~> 2.1.12)
17 | - OpenSSL-Universal (= 1.1.1100)
18 | - Flipper-Glog (0.5.0.5)
19 | - Flipper-PeerTalk (0.0.4)
20 | - FlipperKit (0.182.0):
21 | - FlipperKit/Core (= 0.182.0)
22 | - FlipperKit/Core (0.182.0):
23 | - Flipper (~> 0.182.0)
24 | - FlipperKit/CppBridge
25 | - FlipperKit/FBCxxFollyDynamicConvert
26 | - FlipperKit/FBDefines
27 | - FlipperKit/FKPortForwarding
28 | - SocketRocket (~> 0.6.0)
29 | - FlipperKit/CppBridge (0.182.0):
30 | - Flipper (~> 0.182.0)
31 | - FlipperKit/FBCxxFollyDynamicConvert (0.182.0):
32 | - Flipper-Folly (~> 2.6)
33 | - FlipperKit/FBDefines (0.182.0)
34 | - FlipperKit/FKPortForwarding (0.182.0):
35 | - CocoaAsyncSocket (~> 7.6)
36 | - Flipper-PeerTalk (~> 0.0.4)
37 | - FlipperKit/FlipperKitHighlightOverlay (0.182.0)
38 | - FlipperKit/FlipperKitLayoutHelpers (0.182.0):
39 | - FlipperKit/Core
40 | - FlipperKit/FlipperKitHighlightOverlay
41 | - FlipperKit/FlipperKitLayoutTextSearchable
42 | - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0):
43 | - FlipperKit/Core
44 | - FlipperKit/FlipperKitHighlightOverlay
45 | - FlipperKit/FlipperKitLayoutHelpers
46 | - YogaKit (~> 1.18)
47 | - FlipperKit/FlipperKitLayoutPlugin (0.182.0):
48 | - FlipperKit/Core
49 | - FlipperKit/FlipperKitHighlightOverlay
50 | - FlipperKit/FlipperKitLayoutHelpers
51 | - FlipperKit/FlipperKitLayoutIOSDescriptors
52 | - FlipperKit/FlipperKitLayoutTextSearchable
53 | - YogaKit (~> 1.18)
54 | - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0)
55 | - FlipperKit/FlipperKitNetworkPlugin (0.182.0):
56 | - FlipperKit/Core
57 | - FlipperKit/FlipperKitReactPlugin (0.182.0):
58 | - FlipperKit/Core
59 | - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0):
60 | - FlipperKit/Core
61 | - FlipperKit/SKIOSNetworkPlugin (0.182.0):
62 | - FlipperKit/Core
63 | - FlipperKit/FlipperKitNetworkPlugin
64 | - fmt (6.2.1)
65 | - glog (0.3.5)
66 | - hermes-engine (0.72.1):
67 | - hermes-engine/Pre-built (= 0.72.1)
68 | - hermes-engine/Pre-built (0.72.1)
69 | - libevent (2.1.12)
70 | - OpenSSL-Universal (1.1.1100)
71 | - RCT-Folly (2021.07.22.00):
72 | - boost
73 | - DoubleConversion
74 | - fmt (~> 6.2.1)
75 | - glog
76 | - RCT-Folly/Default (= 2021.07.22.00)
77 | - RCT-Folly/Default (2021.07.22.00):
78 | - boost
79 | - DoubleConversion
80 | - fmt (~> 6.2.1)
81 | - glog
82 | - RCT-Folly/Fabric (2021.07.22.00):
83 | - boost
84 | - DoubleConversion
85 | - fmt (~> 6.2.1)
86 | - glog
87 | - RCT-Folly/Futures (2021.07.22.00):
88 | - boost
89 | - DoubleConversion
90 | - fmt (~> 6.2.1)
91 | - glog
92 | - libevent
93 | - RCTRequired (0.72.1)
94 | - RCTTypeSafety (0.72.1):
95 | - FBLazyVector (= 0.72.1)
96 | - RCTRequired (= 0.72.1)
97 | - React-Core (= 0.72.1)
98 | - React (0.72.1):
99 | - React-Core (= 0.72.1)
100 | - React-Core/DevSupport (= 0.72.1)
101 | - React-Core/RCTWebSocket (= 0.72.1)
102 | - React-RCTActionSheet (= 0.72.1)
103 | - React-RCTAnimation (= 0.72.1)
104 | - React-RCTBlob (= 0.72.1)
105 | - React-RCTImage (= 0.72.1)
106 | - React-RCTLinking (= 0.72.1)
107 | - React-RCTNetwork (= 0.72.1)
108 | - React-RCTSettings (= 0.72.1)
109 | - React-RCTText (= 0.72.1)
110 | - React-RCTVibration (= 0.72.1)
111 | - React-callinvoker (0.72.1)
112 | - React-Codegen (0.72.1):
113 | - DoubleConversion
114 | - glog
115 | - hermes-engine
116 | - RCT-Folly
117 | - RCTRequired
118 | - RCTTypeSafety
119 | - React-Core
120 | - React-debug
121 | - React-Fabric
122 | - React-graphics
123 | - React-jsi
124 | - React-jsiexecutor
125 | - React-NativeModulesApple
126 | - React-utils
127 | - ReactCommon/turbomodule/bridging
128 | - ReactCommon/turbomodule/core
129 | - React-Core (0.72.1):
130 | - glog
131 | - hermes-engine
132 | - RCT-Folly (= 2021.07.22.00)
133 | - React-Core/Default (= 0.72.1)
134 | - React-cxxreact
135 | - React-hermes
136 | - React-jsi
137 | - React-jsiexecutor
138 | - React-perflogger
139 | - React-runtimeexecutor
140 | - React-utils
141 | - SocketRocket (= 0.6.1)
142 | - Yoga
143 | - React-Core/CoreModulesHeaders (0.72.1):
144 | - glog
145 | - hermes-engine
146 | - RCT-Folly (= 2021.07.22.00)
147 | - React-Core/Default
148 | - React-cxxreact
149 | - React-hermes
150 | - React-jsi
151 | - React-jsiexecutor
152 | - React-perflogger
153 | - React-runtimeexecutor
154 | - React-utils
155 | - SocketRocket (= 0.6.1)
156 | - Yoga
157 | - React-Core/Default (0.72.1):
158 | - glog
159 | - hermes-engine
160 | - RCT-Folly (= 2021.07.22.00)
161 | - React-cxxreact
162 | - React-hermes
163 | - React-jsi
164 | - React-jsiexecutor
165 | - React-perflogger
166 | - React-runtimeexecutor
167 | - React-utils
168 | - SocketRocket (= 0.6.1)
169 | - Yoga
170 | - React-Core/DevSupport (0.72.1):
171 | - glog
172 | - hermes-engine
173 | - RCT-Folly (= 2021.07.22.00)
174 | - React-Core/Default (= 0.72.1)
175 | - React-Core/RCTWebSocket (= 0.72.1)
176 | - React-cxxreact
177 | - React-hermes
178 | - React-jsi
179 | - React-jsiexecutor
180 | - React-jsinspector (= 0.72.1)
181 | - React-perflogger
182 | - React-runtimeexecutor
183 | - React-utils
184 | - SocketRocket (= 0.6.1)
185 | - Yoga
186 | - React-Core/RCTActionSheetHeaders (0.72.1):
187 | - glog
188 | - hermes-engine
189 | - RCT-Folly (= 2021.07.22.00)
190 | - React-Core/Default
191 | - React-cxxreact
192 | - React-hermes
193 | - React-jsi
194 | - React-jsiexecutor
195 | - React-perflogger
196 | - React-runtimeexecutor
197 | - React-utils
198 | - SocketRocket (= 0.6.1)
199 | - Yoga
200 | - React-Core/RCTAnimationHeaders (0.72.1):
201 | - glog
202 | - hermes-engine
203 | - RCT-Folly (= 2021.07.22.00)
204 | - React-Core/Default
205 | - React-cxxreact
206 | - React-hermes
207 | - React-jsi
208 | - React-jsiexecutor
209 | - React-perflogger
210 | - React-runtimeexecutor
211 | - React-utils
212 | - SocketRocket (= 0.6.1)
213 | - Yoga
214 | - React-Core/RCTBlobHeaders (0.72.1):
215 | - glog
216 | - hermes-engine
217 | - RCT-Folly (= 2021.07.22.00)
218 | - React-Core/Default
219 | - React-cxxreact
220 | - React-hermes
221 | - React-jsi
222 | - React-jsiexecutor
223 | - React-perflogger
224 | - React-runtimeexecutor
225 | - React-utils
226 | - SocketRocket (= 0.6.1)
227 | - Yoga
228 | - React-Core/RCTImageHeaders (0.72.1):
229 | - glog
230 | - hermes-engine
231 | - RCT-Folly (= 2021.07.22.00)
232 | - React-Core/Default
233 | - React-cxxreact
234 | - React-hermes
235 | - React-jsi
236 | - React-jsiexecutor
237 | - React-perflogger
238 | - React-runtimeexecutor
239 | - React-utils
240 | - SocketRocket (= 0.6.1)
241 | - Yoga
242 | - React-Core/RCTLinkingHeaders (0.72.1):
243 | - glog
244 | - hermes-engine
245 | - RCT-Folly (= 2021.07.22.00)
246 | - React-Core/Default
247 | - React-cxxreact
248 | - React-hermes
249 | - React-jsi
250 | - React-jsiexecutor
251 | - React-perflogger
252 | - React-runtimeexecutor
253 | - React-utils
254 | - SocketRocket (= 0.6.1)
255 | - Yoga
256 | - React-Core/RCTNetworkHeaders (0.72.1):
257 | - glog
258 | - hermes-engine
259 | - RCT-Folly (= 2021.07.22.00)
260 | - React-Core/Default
261 | - React-cxxreact
262 | - React-hermes
263 | - React-jsi
264 | - React-jsiexecutor
265 | - React-perflogger
266 | - React-runtimeexecutor
267 | - React-utils
268 | - SocketRocket (= 0.6.1)
269 | - Yoga
270 | - React-Core/RCTSettingsHeaders (0.72.1):
271 | - glog
272 | - hermes-engine
273 | - RCT-Folly (= 2021.07.22.00)
274 | - React-Core/Default
275 | - React-cxxreact
276 | - React-hermes
277 | - React-jsi
278 | - React-jsiexecutor
279 | - React-perflogger
280 | - React-runtimeexecutor
281 | - React-utils
282 | - SocketRocket (= 0.6.1)
283 | - Yoga
284 | - React-Core/RCTTextHeaders (0.72.1):
285 | - glog
286 | - hermes-engine
287 | - RCT-Folly (= 2021.07.22.00)
288 | - React-Core/Default
289 | - React-cxxreact
290 | - React-hermes
291 | - React-jsi
292 | - React-jsiexecutor
293 | - React-perflogger
294 | - React-runtimeexecutor
295 | - React-utils
296 | - SocketRocket (= 0.6.1)
297 | - Yoga
298 | - React-Core/RCTVibrationHeaders (0.72.1):
299 | - glog
300 | - hermes-engine
301 | - RCT-Folly (= 2021.07.22.00)
302 | - React-Core/Default
303 | - React-cxxreact
304 | - React-hermes
305 | - React-jsi
306 | - React-jsiexecutor
307 | - React-perflogger
308 | - React-runtimeexecutor
309 | - React-utils
310 | - SocketRocket (= 0.6.1)
311 | - Yoga
312 | - React-Core/RCTWebSocket (0.72.1):
313 | - glog
314 | - hermes-engine
315 | - RCT-Folly (= 2021.07.22.00)
316 | - React-Core/Default (= 0.72.1)
317 | - React-cxxreact
318 | - React-hermes
319 | - React-jsi
320 | - React-jsiexecutor
321 | - React-perflogger
322 | - React-runtimeexecutor
323 | - React-utils
324 | - SocketRocket (= 0.6.1)
325 | - Yoga
326 | - React-CoreModules (0.72.1):
327 | - RCT-Folly (= 2021.07.22.00)
328 | - RCTTypeSafety (= 0.72.1)
329 | - React-Codegen (= 0.72.1)
330 | - React-Core/CoreModulesHeaders (= 0.72.1)
331 | - React-jsi (= 0.72.1)
332 | - React-RCTBlob
333 | - React-RCTImage (= 0.72.1)
334 | - ReactCommon/turbomodule/core (= 0.72.1)
335 | - SocketRocket (= 0.6.1)
336 | - React-cxxreact (0.72.1):
337 | - boost (= 1.76.0)
338 | - DoubleConversion
339 | - glog
340 | - hermes-engine
341 | - RCT-Folly (= 2021.07.22.00)
342 | - React-callinvoker (= 0.72.1)
343 | - React-jsi (= 0.72.1)
344 | - React-jsinspector (= 0.72.1)
345 | - React-logger (= 0.72.1)
346 | - React-perflogger (= 0.72.1)
347 | - React-runtimeexecutor (= 0.72.1)
348 | - React-debug (0.72.1)
349 | - React-Fabric (0.72.1):
350 | - DoubleConversion
351 | - glog
352 | - hermes-engine
353 | - RCT-Folly/Fabric (= 2021.07.22.00)
354 | - RCTRequired (= 0.72.1)
355 | - RCTTypeSafety (= 0.72.1)
356 | - React-Core
357 | - React-debug
358 | - React-Fabric/animations (= 0.72.1)
359 | - React-Fabric/attributedstring (= 0.72.1)
360 | - React-Fabric/butter (= 0.72.1)
361 | - React-Fabric/componentregistry (= 0.72.1)
362 | - React-Fabric/componentregistrynative (= 0.72.1)
363 | - React-Fabric/components (= 0.72.1)
364 | - React-Fabric/config (= 0.72.1)
365 | - React-Fabric/core (= 0.72.1)
366 | - React-Fabric/debug_renderer (= 0.72.1)
367 | - React-Fabric/imagemanager (= 0.72.1)
368 | - React-Fabric/leakchecker (= 0.72.1)
369 | - React-Fabric/mapbuffer (= 0.72.1)
370 | - React-Fabric/mounting (= 0.72.1)
371 | - React-Fabric/scheduler (= 0.72.1)
372 | - React-Fabric/telemetry (= 0.72.1)
373 | - React-Fabric/templateprocessor (= 0.72.1)
374 | - React-Fabric/textlayoutmanager (= 0.72.1)
375 | - React-Fabric/uimanager (= 0.72.1)
376 | - React-graphics (= 0.72.1)
377 | - React-jsi (= 0.72.1)
378 | - React-jsiexecutor (= 0.72.1)
379 | - React-logger
380 | - React-runtimescheduler
381 | - React-utils
382 | - ReactCommon/turbomodule/core (= 0.72.1)
383 | - React-Fabric/animations (0.72.1):
384 | - DoubleConversion
385 | - glog
386 | - hermes-engine
387 | - RCT-Folly/Fabric (= 2021.07.22.00)
388 | - RCTRequired (= 0.72.1)
389 | - RCTTypeSafety (= 0.72.1)
390 | - React-Core
391 | - React-debug
392 | - React-graphics (= 0.72.1)
393 | - React-jsi (= 0.72.1)
394 | - React-jsiexecutor (= 0.72.1)
395 | - React-logger
396 | - React-runtimescheduler
397 | - React-utils
398 | - ReactCommon/turbomodule/core (= 0.72.1)
399 | - React-Fabric/attributedstring (0.72.1):
400 | - DoubleConversion
401 | - glog
402 | - hermes-engine
403 | - RCT-Folly/Fabric (= 2021.07.22.00)
404 | - RCTRequired (= 0.72.1)
405 | - RCTTypeSafety (= 0.72.1)
406 | - React-Core
407 | - React-debug
408 | - React-graphics (= 0.72.1)
409 | - React-jsi (= 0.72.1)
410 | - React-jsiexecutor (= 0.72.1)
411 | - React-logger
412 | - React-runtimescheduler
413 | - React-utils
414 | - ReactCommon/turbomodule/core (= 0.72.1)
415 | - React-Fabric/butter (0.72.1):
416 | - DoubleConversion
417 | - glog
418 | - hermes-engine
419 | - RCT-Folly/Fabric (= 2021.07.22.00)
420 | - RCTRequired (= 0.72.1)
421 | - RCTTypeSafety (= 0.72.1)
422 | - React-Core
423 | - React-debug
424 | - React-graphics (= 0.72.1)
425 | - React-jsi (= 0.72.1)
426 | - React-jsiexecutor (= 0.72.1)
427 | - React-logger
428 | - React-runtimescheduler
429 | - React-utils
430 | - ReactCommon/turbomodule/core (= 0.72.1)
431 | - React-Fabric/componentregistry (0.72.1):
432 | - DoubleConversion
433 | - glog
434 | - hermes-engine
435 | - RCT-Folly/Fabric (= 2021.07.22.00)
436 | - RCTRequired (= 0.72.1)
437 | - RCTTypeSafety (= 0.72.1)
438 | - React-Core
439 | - React-debug
440 | - React-graphics (= 0.72.1)
441 | - React-jsi (= 0.72.1)
442 | - React-jsiexecutor (= 0.72.1)
443 | - React-logger
444 | - React-runtimescheduler
445 | - React-utils
446 | - ReactCommon/turbomodule/core (= 0.72.1)
447 | - React-Fabric/componentregistrynative (0.72.1):
448 | - DoubleConversion
449 | - glog
450 | - hermes-engine
451 | - RCT-Folly/Fabric (= 2021.07.22.00)
452 | - RCTRequired (= 0.72.1)
453 | - RCTTypeSafety (= 0.72.1)
454 | - React-Core
455 | - React-debug
456 | - React-graphics (= 0.72.1)
457 | - React-jsi (= 0.72.1)
458 | - React-jsiexecutor (= 0.72.1)
459 | - React-logger
460 | - React-runtimescheduler
461 | - React-utils
462 | - ReactCommon/turbomodule/core (= 0.72.1)
463 | - React-Fabric/components (0.72.1):
464 | - DoubleConversion
465 | - glog
466 | - hermes-engine
467 | - RCT-Folly/Fabric (= 2021.07.22.00)
468 | - RCTRequired (= 0.72.1)
469 | - RCTTypeSafety (= 0.72.1)
470 | - React-Core
471 | - React-debug
472 | - React-Fabric/components/activityindicator (= 0.72.1)
473 | - React-Fabric/components/image (= 0.72.1)
474 | - React-Fabric/components/inputaccessory (= 0.72.1)
475 | - React-Fabric/components/legacyviewmanagerinterop (= 0.72.1)
476 | - React-Fabric/components/modal (= 0.72.1)
477 | - React-Fabric/components/rncore (= 0.72.1)
478 | - React-Fabric/components/root (= 0.72.1)
479 | - React-Fabric/components/safeareaview (= 0.72.1)
480 | - React-Fabric/components/scrollview (= 0.72.1)
481 | - React-Fabric/components/text (= 0.72.1)
482 | - React-Fabric/components/textinput (= 0.72.1)
483 | - React-Fabric/components/unimplementedview (= 0.72.1)
484 | - React-Fabric/components/view (= 0.72.1)
485 | - React-graphics (= 0.72.1)
486 | - React-jsi (= 0.72.1)
487 | - React-jsiexecutor (= 0.72.1)
488 | - React-logger
489 | - React-runtimescheduler
490 | - React-utils
491 | - ReactCommon/turbomodule/core (= 0.72.1)
492 | - React-Fabric/components/activityindicator (0.72.1):
493 | - DoubleConversion
494 | - glog
495 | - hermes-engine
496 | - RCT-Folly/Fabric (= 2021.07.22.00)
497 | - RCTRequired (= 0.72.1)
498 | - RCTTypeSafety (= 0.72.1)
499 | - React-Core
500 | - React-debug
501 | - React-graphics (= 0.72.1)
502 | - React-jsi (= 0.72.1)
503 | - React-jsiexecutor (= 0.72.1)
504 | - React-logger
505 | - React-runtimescheduler
506 | - React-utils
507 | - ReactCommon/turbomodule/core (= 0.72.1)
508 | - React-Fabric/components/image (0.72.1):
509 | - DoubleConversion
510 | - glog
511 | - hermes-engine
512 | - RCT-Folly/Fabric (= 2021.07.22.00)
513 | - RCTRequired (= 0.72.1)
514 | - RCTTypeSafety (= 0.72.1)
515 | - React-Core
516 | - React-debug
517 | - React-graphics (= 0.72.1)
518 | - React-jsi (= 0.72.1)
519 | - React-jsiexecutor (= 0.72.1)
520 | - React-logger
521 | - React-runtimescheduler
522 | - React-utils
523 | - ReactCommon/turbomodule/core (= 0.72.1)
524 | - React-Fabric/components/inputaccessory (0.72.1):
525 | - DoubleConversion
526 | - glog
527 | - hermes-engine
528 | - RCT-Folly/Fabric (= 2021.07.22.00)
529 | - RCTRequired (= 0.72.1)
530 | - RCTTypeSafety (= 0.72.1)
531 | - React-Core
532 | - React-debug
533 | - React-graphics (= 0.72.1)
534 | - React-jsi (= 0.72.1)
535 | - React-jsiexecutor (= 0.72.1)
536 | - React-logger
537 | - React-runtimescheduler
538 | - React-utils
539 | - ReactCommon/turbomodule/core (= 0.72.1)
540 | - React-Fabric/components/legacyviewmanagerinterop (0.72.1):
541 | - DoubleConversion
542 | - glog
543 | - hermes-engine
544 | - RCT-Folly/Fabric (= 2021.07.22.00)
545 | - RCTRequired (= 0.72.1)
546 | - RCTTypeSafety (= 0.72.1)
547 | - React-Core
548 | - React-debug
549 | - React-graphics (= 0.72.1)
550 | - React-jsi (= 0.72.1)
551 | - React-jsiexecutor (= 0.72.1)
552 | - React-logger
553 | - React-runtimescheduler
554 | - React-utils
555 | - ReactCommon/turbomodule/core (= 0.72.1)
556 | - React-Fabric/components/modal (0.72.1):
557 | - DoubleConversion
558 | - glog
559 | - hermes-engine
560 | - RCT-Folly/Fabric (= 2021.07.22.00)
561 | - RCTRequired (= 0.72.1)
562 | - RCTTypeSafety (= 0.72.1)
563 | - React-Core
564 | - React-debug
565 | - React-graphics (= 0.72.1)
566 | - React-jsi (= 0.72.1)
567 | - React-jsiexecutor (= 0.72.1)
568 | - React-logger
569 | - React-runtimescheduler
570 | - React-utils
571 | - ReactCommon/turbomodule/core (= 0.72.1)
572 | - React-Fabric/components/rncore (0.72.1):
573 | - DoubleConversion
574 | - glog
575 | - hermes-engine
576 | - RCT-Folly/Fabric (= 2021.07.22.00)
577 | - RCTRequired (= 0.72.1)
578 | - RCTTypeSafety (= 0.72.1)
579 | - React-Core
580 | - React-debug
581 | - React-graphics (= 0.72.1)
582 | - React-jsi (= 0.72.1)
583 | - React-jsiexecutor (= 0.72.1)
584 | - React-logger
585 | - React-runtimescheduler
586 | - React-utils
587 | - ReactCommon/turbomodule/core (= 0.72.1)
588 | - React-Fabric/components/root (0.72.1):
589 | - DoubleConversion
590 | - glog
591 | - hermes-engine
592 | - RCT-Folly/Fabric (= 2021.07.22.00)
593 | - RCTRequired (= 0.72.1)
594 | - RCTTypeSafety (= 0.72.1)
595 | - React-Core
596 | - React-debug
597 | - React-graphics (= 0.72.1)
598 | - React-jsi (= 0.72.1)
599 | - React-jsiexecutor (= 0.72.1)
600 | - React-logger
601 | - React-runtimescheduler
602 | - React-utils
603 | - ReactCommon/turbomodule/core (= 0.72.1)
604 | - React-Fabric/components/safeareaview (0.72.1):
605 | - DoubleConversion
606 | - glog
607 | - hermes-engine
608 | - RCT-Folly/Fabric (= 2021.07.22.00)
609 | - RCTRequired (= 0.72.1)
610 | - RCTTypeSafety (= 0.72.1)
611 | - React-Core
612 | - React-debug
613 | - React-graphics (= 0.72.1)
614 | - React-jsi (= 0.72.1)
615 | - React-jsiexecutor (= 0.72.1)
616 | - React-logger
617 | - React-runtimescheduler
618 | - React-utils
619 | - ReactCommon/turbomodule/core (= 0.72.1)
620 | - React-Fabric/components/scrollview (0.72.1):
621 | - DoubleConversion
622 | - glog
623 | - hermes-engine
624 | - RCT-Folly/Fabric (= 2021.07.22.00)
625 | - RCTRequired (= 0.72.1)
626 | - RCTTypeSafety (= 0.72.1)
627 | - React-Core
628 | - React-debug
629 | - React-graphics (= 0.72.1)
630 | - React-jsi (= 0.72.1)
631 | - React-jsiexecutor (= 0.72.1)
632 | - React-logger
633 | - React-runtimescheduler
634 | - React-utils
635 | - ReactCommon/turbomodule/core (= 0.72.1)
636 | - React-Fabric/components/text (0.72.1):
637 | - DoubleConversion
638 | - glog
639 | - hermes-engine
640 | - RCT-Folly/Fabric (= 2021.07.22.00)
641 | - RCTRequired (= 0.72.1)
642 | - RCTTypeSafety (= 0.72.1)
643 | - React-Core
644 | - React-debug
645 | - React-graphics (= 0.72.1)
646 | - React-jsi (= 0.72.1)
647 | - React-jsiexecutor (= 0.72.1)
648 | - React-logger
649 | - React-runtimescheduler
650 | - React-utils
651 | - ReactCommon/turbomodule/core (= 0.72.1)
652 | - React-Fabric/components/textinput (0.72.1):
653 | - DoubleConversion
654 | - glog
655 | - hermes-engine
656 | - RCT-Folly/Fabric (= 2021.07.22.00)
657 | - RCTRequired (= 0.72.1)
658 | - RCTTypeSafety (= 0.72.1)
659 | - React-Core
660 | - React-debug
661 | - React-graphics (= 0.72.1)
662 | - React-jsi (= 0.72.1)
663 | - React-jsiexecutor (= 0.72.1)
664 | - React-logger
665 | - React-runtimescheduler
666 | - React-utils
667 | - ReactCommon/turbomodule/core (= 0.72.1)
668 | - React-Fabric/components/unimplementedview (0.72.1):
669 | - DoubleConversion
670 | - glog
671 | - hermes-engine
672 | - RCT-Folly/Fabric (= 2021.07.22.00)
673 | - RCTRequired (= 0.72.1)
674 | - RCTTypeSafety (= 0.72.1)
675 | - React-Core
676 | - React-debug
677 | - React-graphics (= 0.72.1)
678 | - React-jsi (= 0.72.1)
679 | - React-jsiexecutor (= 0.72.1)
680 | - React-logger
681 | - React-runtimescheduler
682 | - React-utils
683 | - ReactCommon/turbomodule/core (= 0.72.1)
684 | - React-Fabric/components/view (0.72.1):
685 | - DoubleConversion
686 | - glog
687 | - hermes-engine
688 | - RCT-Folly/Fabric (= 2021.07.22.00)
689 | - RCTRequired (= 0.72.1)
690 | - RCTTypeSafety (= 0.72.1)
691 | - React-Core
692 | - React-debug
693 | - React-graphics (= 0.72.1)
694 | - React-jsi (= 0.72.1)
695 | - React-jsiexecutor (= 0.72.1)
696 | - React-logger
697 | - React-runtimescheduler
698 | - React-utils
699 | - ReactCommon/turbomodule/core (= 0.72.1)
700 | - Yoga
701 | - React-Fabric/config (0.72.1):
702 | - DoubleConversion
703 | - glog
704 | - hermes-engine
705 | - RCT-Folly/Fabric (= 2021.07.22.00)
706 | - RCTRequired (= 0.72.1)
707 | - RCTTypeSafety (= 0.72.1)
708 | - React-Core
709 | - React-debug
710 | - React-graphics (= 0.72.1)
711 | - React-jsi (= 0.72.1)
712 | - React-jsiexecutor (= 0.72.1)
713 | - React-logger
714 | - React-runtimescheduler
715 | - React-utils
716 | - ReactCommon/turbomodule/core (= 0.72.1)
717 | - React-Fabric/core (0.72.1):
718 | - DoubleConversion
719 | - glog
720 | - hermes-engine
721 | - RCT-Folly/Fabric (= 2021.07.22.00)
722 | - RCTRequired (= 0.72.1)
723 | - RCTTypeSafety (= 0.72.1)
724 | - React-Core
725 | - React-debug
726 | - React-graphics (= 0.72.1)
727 | - React-jsi (= 0.72.1)
728 | - React-jsiexecutor (= 0.72.1)
729 | - React-logger
730 | - React-runtimescheduler
731 | - React-utils
732 | - ReactCommon/turbomodule/core (= 0.72.1)
733 | - React-Fabric/debug_renderer (0.72.1):
734 | - DoubleConversion
735 | - glog
736 | - hermes-engine
737 | - RCT-Folly/Fabric (= 2021.07.22.00)
738 | - RCTRequired (= 0.72.1)
739 | - RCTTypeSafety (= 0.72.1)
740 | - React-Core
741 | - React-debug
742 | - React-graphics (= 0.72.1)
743 | - React-jsi (= 0.72.1)
744 | - React-jsiexecutor (= 0.72.1)
745 | - React-logger
746 | - React-runtimescheduler
747 | - React-utils
748 | - ReactCommon/turbomodule/core (= 0.72.1)
749 | - React-Fabric/imagemanager (0.72.1):
750 | - DoubleConversion
751 | - glog
752 | - hermes-engine
753 | - RCT-Folly/Fabric (= 2021.07.22.00)
754 | - RCTRequired (= 0.72.1)
755 | - RCTTypeSafety (= 0.72.1)
756 | - React-Core
757 | - React-debug
758 | - React-graphics (= 0.72.1)
759 | - React-jsi (= 0.72.1)
760 | - React-jsiexecutor (= 0.72.1)
761 | - React-logger
762 | - React-runtimescheduler
763 | - React-utils
764 | - ReactCommon/turbomodule/core (= 0.72.1)
765 | - React-Fabric/leakchecker (0.72.1):
766 | - DoubleConversion
767 | - glog
768 | - hermes-engine
769 | - RCT-Folly/Fabric (= 2021.07.22.00)
770 | - RCTRequired (= 0.72.1)
771 | - RCTTypeSafety (= 0.72.1)
772 | - React-Core
773 | - React-debug
774 | - React-graphics (= 0.72.1)
775 | - React-jsi (= 0.72.1)
776 | - React-jsiexecutor (= 0.72.1)
777 | - React-logger
778 | - React-runtimescheduler
779 | - React-utils
780 | - ReactCommon/turbomodule/core (= 0.72.1)
781 | - React-Fabric/mapbuffer (0.72.1):
782 | - DoubleConversion
783 | - glog
784 | - hermes-engine
785 | - RCT-Folly/Fabric (= 2021.07.22.00)
786 | - RCTRequired (= 0.72.1)
787 | - RCTTypeSafety (= 0.72.1)
788 | - React-Core
789 | - React-debug
790 | - React-graphics (= 0.72.1)
791 | - React-jsi (= 0.72.1)
792 | - React-jsiexecutor (= 0.72.1)
793 | - React-logger
794 | - React-runtimescheduler
795 | - React-utils
796 | - ReactCommon/turbomodule/core (= 0.72.1)
797 | - React-Fabric/mounting (0.72.1):
798 | - DoubleConversion
799 | - glog
800 | - hermes-engine
801 | - RCT-Folly/Fabric (= 2021.07.22.00)
802 | - RCTRequired (= 0.72.1)
803 | - RCTTypeSafety (= 0.72.1)
804 | - React-Core
805 | - React-debug
806 | - React-graphics (= 0.72.1)
807 | - React-jsi (= 0.72.1)
808 | - React-jsiexecutor (= 0.72.1)
809 | - React-logger
810 | - React-runtimescheduler
811 | - React-utils
812 | - ReactCommon/turbomodule/core (= 0.72.1)
813 | - React-Fabric/scheduler (0.72.1):
814 | - DoubleConversion
815 | - glog
816 | - hermes-engine
817 | - RCT-Folly/Fabric (= 2021.07.22.00)
818 | - RCTRequired (= 0.72.1)
819 | - RCTTypeSafety (= 0.72.1)
820 | - React-Core
821 | - React-debug
822 | - React-graphics (= 0.72.1)
823 | - React-jsi (= 0.72.1)
824 | - React-jsiexecutor (= 0.72.1)
825 | - React-logger
826 | - React-runtimescheduler
827 | - React-utils
828 | - ReactCommon/turbomodule/core (= 0.72.1)
829 | - React-Fabric/telemetry (0.72.1):
830 | - DoubleConversion
831 | - glog
832 | - hermes-engine
833 | - RCT-Folly/Fabric (= 2021.07.22.00)
834 | - RCTRequired (= 0.72.1)
835 | - RCTTypeSafety (= 0.72.1)
836 | - React-Core
837 | - React-debug
838 | - React-graphics (= 0.72.1)
839 | - React-jsi (= 0.72.1)
840 | - React-jsiexecutor (= 0.72.1)
841 | - React-logger
842 | - React-runtimescheduler
843 | - React-utils
844 | - ReactCommon/turbomodule/core (= 0.72.1)
845 | - React-Fabric/templateprocessor (0.72.1):
846 | - DoubleConversion
847 | - glog
848 | - hermes-engine
849 | - RCT-Folly/Fabric (= 2021.07.22.00)
850 | - RCTRequired (= 0.72.1)
851 | - RCTTypeSafety (= 0.72.1)
852 | - React-Core
853 | - React-debug
854 | - React-graphics (= 0.72.1)
855 | - React-jsi (= 0.72.1)
856 | - React-jsiexecutor (= 0.72.1)
857 | - React-logger
858 | - React-runtimescheduler
859 | - React-utils
860 | - ReactCommon/turbomodule/core (= 0.72.1)
861 | - React-Fabric/textlayoutmanager (0.72.1):
862 | - DoubleConversion
863 | - glog
864 | - hermes-engine
865 | - RCT-Folly/Fabric (= 2021.07.22.00)
866 | - RCTRequired (= 0.72.1)
867 | - RCTTypeSafety (= 0.72.1)
868 | - React-Core
869 | - React-debug
870 | - React-Fabric/uimanager
871 | - React-graphics (= 0.72.1)
872 | - React-jsi (= 0.72.1)
873 | - React-jsiexecutor (= 0.72.1)
874 | - React-logger
875 | - React-runtimescheduler
876 | - React-utils
877 | - ReactCommon/turbomodule/core (= 0.72.1)
878 | - React-Fabric/uimanager (0.72.1):
879 | - DoubleConversion
880 | - glog
881 | - hermes-engine
882 | - RCT-Folly/Fabric (= 2021.07.22.00)
883 | - RCTRequired (= 0.72.1)
884 | - RCTTypeSafety (= 0.72.1)
885 | - React-Core
886 | - React-debug
887 | - React-graphics (= 0.72.1)
888 | - React-jsi (= 0.72.1)
889 | - React-jsiexecutor (= 0.72.1)
890 | - React-logger
891 | - React-runtimescheduler
892 | - React-utils
893 | - ReactCommon/turbomodule/core (= 0.72.1)
894 | - React-graphics (0.72.1):
895 | - glog
896 | - RCT-Folly/Fabric (= 2021.07.22.00)
897 | - React-Core/Default (= 0.72.1)
898 | - React-hermes (0.72.1):
899 | - DoubleConversion
900 | - glog
901 | - hermes-engine
902 | - RCT-Folly (= 2021.07.22.00)
903 | - RCT-Folly/Futures (= 2021.07.22.00)
904 | - React-cxxreact (= 0.72.1)
905 | - React-jsi
906 | - React-jsiexecutor (= 0.72.1)
907 | - React-jsinspector (= 0.72.1)
908 | - React-perflogger (= 0.72.1)
909 | - React-ImageManager (0.72.1):
910 | - glog
911 | - RCT-Folly/Fabric
912 | - React-Core/Default
913 | - React-debug
914 | - React-Fabric
915 | - React-RCTImage
916 | - React-utils
917 | - React-jsi (0.72.1):
918 | - boost (= 1.76.0)
919 | - DoubleConversion
920 | - glog
921 | - hermes-engine
922 | - RCT-Folly (= 2021.07.22.00)
923 | - React-jsiexecutor (0.72.1):
924 | - DoubleConversion
925 | - glog
926 | - hermes-engine
927 | - RCT-Folly (= 2021.07.22.00)
928 | - React-cxxreact (= 0.72.1)
929 | - React-jsi (= 0.72.1)
930 | - React-perflogger (= 0.72.1)
931 | - React-jsinspector (0.72.1)
932 | - React-logger (0.72.1):
933 | - glog
934 | - React-NativeModulesApple (0.72.1):
935 | - hermes-engine
936 | - React-callinvoker
937 | - React-Core
938 | - React-cxxreact
939 | - React-jsi
940 | - React-runtimeexecutor
941 | - ReactCommon/turbomodule/bridging
942 | - ReactCommon/turbomodule/core
943 | - React-perflogger (0.72.1)
944 | - React-RCTActionSheet (0.72.1):
945 | - React-Core/RCTActionSheetHeaders (= 0.72.1)
946 | - React-RCTAnimation (0.72.1):
947 | - RCT-Folly (= 2021.07.22.00)
948 | - RCTTypeSafety (= 0.72.1)
949 | - React-Codegen (= 0.72.1)
950 | - React-Core/RCTAnimationHeaders (= 0.72.1)
951 | - React-jsi (= 0.72.1)
952 | - ReactCommon/turbomodule/core (= 0.72.1)
953 | - React-RCTAppDelegate (0.72.1):
954 | - RCT-Folly
955 | - RCTRequired
956 | - RCTTypeSafety
957 | - React-Core
958 | - React-CoreModules
959 | - React-debug
960 | - React-graphics
961 | - React-hermes
962 | - React-NativeModulesApple
963 | - React-RCTFabric
964 | - React-RCTImage
965 | - React-RCTNetwork
966 | - React-runtimescheduler
967 | - React-utils
968 | - ReactCommon/turbomodule/core
969 | - React-RCTBlob (0.72.1):
970 | - hermes-engine
971 | - RCT-Folly (= 2021.07.22.00)
972 | - React-Codegen (= 0.72.1)
973 | - React-Core/RCTBlobHeaders (= 0.72.1)
974 | - React-Core/RCTWebSocket (= 0.72.1)
975 | - React-jsi (= 0.72.1)
976 | - React-RCTNetwork (= 0.72.1)
977 | - ReactCommon/turbomodule/core (= 0.72.1)
978 | - React-RCTFabric (0.72.1):
979 | - glog
980 | - hermes-engine
981 | - RCT-Folly/Fabric (= 2021.07.22.00)
982 | - React-Core (= 0.72.1)
983 | - React-Fabric (= 0.72.1)
984 | - React-ImageManager
985 | - React-RCTImage (= 0.72.1)
986 | - React-RCTText
987 | - React-runtimescheduler
988 | - React-utils
989 | - Yoga
990 | - React-RCTImage (0.72.1):
991 | - RCT-Folly (= 2021.07.22.00)
992 | - RCTTypeSafety (= 0.72.1)
993 | - React-Codegen (= 0.72.1)
994 | - React-Core/RCTImageHeaders (= 0.72.1)
995 | - React-jsi (= 0.72.1)
996 | - React-RCTNetwork (= 0.72.1)
997 | - ReactCommon/turbomodule/core (= 0.72.1)
998 | - React-RCTLinking (0.72.1):
999 | - React-Codegen (= 0.72.1)
1000 | - React-Core/RCTLinkingHeaders (= 0.72.1)
1001 | - React-jsi (= 0.72.1)
1002 | - ReactCommon/turbomodule/core (= 0.72.1)
1003 | - React-RCTNetwork (0.72.1):
1004 | - RCT-Folly (= 2021.07.22.00)
1005 | - RCTTypeSafety (= 0.72.1)
1006 | - React-Codegen (= 0.72.1)
1007 | - React-Core/RCTNetworkHeaders (= 0.72.1)
1008 | - React-jsi (= 0.72.1)
1009 | - ReactCommon/turbomodule/core (= 0.72.1)
1010 | - React-RCTSettings (0.72.1):
1011 | - RCT-Folly (= 2021.07.22.00)
1012 | - RCTTypeSafety (= 0.72.1)
1013 | - React-Codegen (= 0.72.1)
1014 | - React-Core/RCTSettingsHeaders (= 0.72.1)
1015 | - React-jsi (= 0.72.1)
1016 | - ReactCommon/turbomodule/core (= 0.72.1)
1017 | - React-RCTText (0.72.1):
1018 | - React-Core/RCTTextHeaders (= 0.72.1)
1019 | - React-RCTVibration (0.72.1):
1020 | - RCT-Folly (= 2021.07.22.00)
1021 | - React-Codegen (= 0.72.1)
1022 | - React-Core/RCTVibrationHeaders (= 0.72.1)
1023 | - React-jsi (= 0.72.1)
1024 | - ReactCommon/turbomodule/core (= 0.72.1)
1025 | - React-rncore (0.72.1)
1026 | - React-runtimeexecutor (0.72.1):
1027 | - React-jsi (= 0.72.1)
1028 | - React-runtimescheduler (0.72.1):
1029 | - glog
1030 | - hermes-engine
1031 | - RCT-Folly (= 2021.07.22.00)
1032 | - React-callinvoker
1033 | - React-debug
1034 | - React-jsi
1035 | - React-runtimeexecutor
1036 | - React-utils (0.72.1):
1037 | - glog
1038 | - RCT-Folly (= 2021.07.22.00)
1039 | - React-debug
1040 | - ReactCommon/turbomodule/bridging (0.72.1):
1041 | - DoubleConversion
1042 | - glog
1043 | - hermes-engine
1044 | - RCT-Folly (= 2021.07.22.00)
1045 | - React-callinvoker (= 0.72.1)
1046 | - React-cxxreact (= 0.72.1)
1047 | - React-jsi (= 0.72.1)
1048 | - React-logger (= 0.72.1)
1049 | - React-perflogger (= 0.72.1)
1050 | - ReactCommon/turbomodule/core (0.72.1):
1051 | - DoubleConversion
1052 | - glog
1053 | - hermes-engine
1054 | - RCT-Folly (= 2021.07.22.00)
1055 | - React-callinvoker (= 0.72.1)
1056 | - React-cxxreact (= 0.72.1)
1057 | - React-jsi (= 0.72.1)
1058 | - React-logger (= 0.72.1)
1059 | - React-perflogger (= 0.72.1)
1060 | - RNStoreReview (0.3.0):
1061 | - hermes-engine
1062 | - RCT-Folly (= 2021.07.22.00)
1063 | - RCTRequired
1064 | - RCTTypeSafety
1065 | - React-Codegen
1066 | - React-Core
1067 | - React-debug
1068 | - React-Fabric
1069 | - React-graphics
1070 | - React-NativeModulesApple
1071 | - React-RCTFabric
1072 | - React-utils
1073 | - ReactCommon/turbomodule/bridging
1074 | - ReactCommon/turbomodule/core
1075 | - Yoga
1076 | - SocketRocket (0.6.1)
1077 | - Yoga (1.14.0)
1078 | - YogaKit (1.18.1):
1079 | - Yoga (~> 1.14)
1080 |
1081 | DEPENDENCIES:
1082 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
1083 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
1084 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
1085 | - Flipper (= 0.182.0)
1086 | - Flipper-Boost-iOSX (= 1.76.0.1.11)
1087 | - Flipper-DoubleConversion (= 3.2.0.1)
1088 | - Flipper-Fmt (= 7.1.7)
1089 | - Flipper-Folly (= 2.6.10)
1090 | - Flipper-Glog (= 0.5.0.5)
1091 | - Flipper-PeerTalk (= 0.0.4)
1092 | - FlipperKit (= 0.182.0)
1093 | - FlipperKit/Core (= 0.182.0)
1094 | - FlipperKit/CppBridge (= 0.182.0)
1095 | - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0)
1096 | - FlipperKit/FBDefines (= 0.182.0)
1097 | - FlipperKit/FKPortForwarding (= 0.182.0)
1098 | - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0)
1099 | - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0)
1100 | - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0)
1101 | - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0)
1102 | - FlipperKit/FlipperKitReactPlugin (= 0.182.0)
1103 | - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0)
1104 | - FlipperKit/SKIOSNetworkPlugin (= 0.182.0)
1105 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
1106 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
1107 | - libevent (~> 2.1.12)
1108 | - OpenSSL-Universal (= 1.1.1100)
1109 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1110 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
1111 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
1112 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
1113 | - React (from `../node_modules/react-native/`)
1114 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
1115 | - React-Codegen (from `build/generated/ios`)
1116 | - React-Core (from `../node_modules/react-native/`)
1117 | - React-Core/DevSupport (from `../node_modules/react-native/`)
1118 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
1119 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
1120 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
1121 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
1122 | - React-Fabric (from `../node_modules/react-native/ReactCommon`)
1123 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
1124 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
1125 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
1126 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
1127 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
1128 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
1129 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
1130 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
1131 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
1132 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
1133 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
1134 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
1135 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
1136 | - React-RCTFabric (from `../node_modules/react-native/React`)
1137 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
1138 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
1139 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
1140 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
1141 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
1142 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
1143 | - React-rncore (from `../node_modules/react-native/ReactCommon`)
1144 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
1145 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
1146 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
1147 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
1148 | - RNStoreReview (from `../node_modules/react-native-store-review`)
1149 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
1150 |
1151 | SPEC REPOS:
1152 | trunk:
1153 | - CocoaAsyncSocket
1154 | - Flipper
1155 | - Flipper-Boost-iOSX
1156 | - Flipper-DoubleConversion
1157 | - Flipper-Fmt
1158 | - Flipper-Folly
1159 | - Flipper-Glog
1160 | - Flipper-PeerTalk
1161 | - FlipperKit
1162 | - fmt
1163 | - libevent
1164 | - OpenSSL-Universal
1165 | - SocketRocket
1166 | - YogaKit
1167 |
1168 | EXTERNAL SOURCES:
1169 | boost:
1170 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
1171 | DoubleConversion:
1172 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
1173 | FBLazyVector:
1174 | :path: "../node_modules/react-native/Libraries/FBLazyVector"
1175 | glog:
1176 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
1177 | hermes-engine:
1178 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
1179 | :tag: hermes-2023-03-20-RNv0.72.0-49794cfc7c81fb8f69fd60c3bbf85a7480cc5a77
1180 | RCT-Folly:
1181 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
1182 | RCTRequired:
1183 | :path: "../node_modules/react-native/Libraries/RCTRequired"
1184 | RCTTypeSafety:
1185 | :path: "../node_modules/react-native/Libraries/TypeSafety"
1186 | React:
1187 | :path: "../node_modules/react-native/"
1188 | React-callinvoker:
1189 | :path: "../node_modules/react-native/ReactCommon/callinvoker"
1190 | React-Codegen:
1191 | :path: build/generated/ios
1192 | React-Core:
1193 | :path: "../node_modules/react-native/"
1194 | React-CoreModules:
1195 | :path: "../node_modules/react-native/React/CoreModules"
1196 | React-cxxreact:
1197 | :path: "../node_modules/react-native/ReactCommon/cxxreact"
1198 | React-debug:
1199 | :path: "../node_modules/react-native/ReactCommon/react/debug"
1200 | React-Fabric:
1201 | :path: "../node_modules/react-native/ReactCommon"
1202 | React-graphics:
1203 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
1204 | React-hermes:
1205 | :path: "../node_modules/react-native/ReactCommon/hermes"
1206 | React-ImageManager:
1207 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
1208 | React-jsi:
1209 | :path: "../node_modules/react-native/ReactCommon/jsi"
1210 | React-jsiexecutor:
1211 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
1212 | React-jsinspector:
1213 | :path: "../node_modules/react-native/ReactCommon/jsinspector"
1214 | React-logger:
1215 | :path: "../node_modules/react-native/ReactCommon/logger"
1216 | React-NativeModulesApple:
1217 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
1218 | React-perflogger:
1219 | :path: "../node_modules/react-native/ReactCommon/reactperflogger"
1220 | React-RCTActionSheet:
1221 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
1222 | React-RCTAnimation:
1223 | :path: "../node_modules/react-native/Libraries/NativeAnimation"
1224 | React-RCTAppDelegate:
1225 | :path: "../node_modules/react-native/Libraries/AppDelegate"
1226 | React-RCTBlob:
1227 | :path: "../node_modules/react-native/Libraries/Blob"
1228 | React-RCTFabric:
1229 | :path: "../node_modules/react-native/React"
1230 | React-RCTImage:
1231 | :path: "../node_modules/react-native/Libraries/Image"
1232 | React-RCTLinking:
1233 | :path: "../node_modules/react-native/Libraries/LinkingIOS"
1234 | React-RCTNetwork:
1235 | :path: "../node_modules/react-native/Libraries/Network"
1236 | React-RCTSettings:
1237 | :path: "../node_modules/react-native/Libraries/Settings"
1238 | React-RCTText:
1239 | :path: "../node_modules/react-native/Libraries/Text"
1240 | React-RCTVibration:
1241 | :path: "../node_modules/react-native/Libraries/Vibration"
1242 | React-rncore:
1243 | :path: "../node_modules/react-native/ReactCommon"
1244 | React-runtimeexecutor:
1245 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
1246 | React-runtimescheduler:
1247 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
1248 | React-utils:
1249 | :path: "../node_modules/react-native/ReactCommon/react/utils"
1250 | ReactCommon:
1251 | :path: "../node_modules/react-native/ReactCommon"
1252 | RNStoreReview:
1253 | :path: "../node_modules/react-native-store-review"
1254 | Yoga:
1255 | :path: "../node_modules/react-native/ReactCommon/yoga"
1256 |
1257 | SPEC CHECKSUMS:
1258 | boost: 57d2868c099736d80fcd648bf211b4431e51a558
1259 | CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
1260 | DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
1261 | FBLazyVector: 55cd4593d570bd9e5e227488d637ce6a9581ce51
1262 | Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818
1263 | Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
1264 | Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
1265 | Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
1266 | Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
1267 | Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
1268 | Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
1269 | FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
1270 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
1271 | glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
1272 | hermes-engine: 9df83855a0fd15ef8eb61694652bae636b0c466e
1273 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
1274 | OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
1275 | RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
1276 | RCTRequired: c52ee8fb2b35c1b54031dd8e92d88ad4dba8f2ce
1277 | RCTTypeSafety: 75fa444becadf0ebfa0a456b8c64560c7c89c7df
1278 | React: 3e5b3962f27b7334eaf5517a35b3434503df35ad
1279 | React-callinvoker: c3a225610efe0caadac78da53b6fe78e53eb2b03
1280 | React-Codegen: 182241a33b278ef2aacbe33ef6b477f492f95e6c
1281 | React-Core: 6f6564ea4c5fc118757c945b6359a36aaea86216
1282 | React-CoreModules: ab635016811b610a93e873485f6f900ce0582192
1283 | React-cxxreact: f82f0f1832606fabb9e8c9d61c4230704a3d2d2f
1284 | React-debug: 8aa2bd54b0f0011049300ce3339b0e51254ef3b5
1285 | React-Fabric: 5c44af0b1fff92642e5333f3a90dc3d8e8887a29
1286 | React-graphics: 2d2ce15d50b2b449e942c4ab7ec0d9d8992e4b07
1287 | React-hermes: f076cb5f7351d6cc1600125bef3259ea880460fb
1288 | React-ImageManager: 74faa903afe83565e80c350f40239f157d9743db
1289 | React-jsi: 9f381c8594161b2328b93cd3ba5d0bcfcd1e093a
1290 | React-jsiexecutor: 184eae1ecdedc7a083194bd9ff809c93f08fd34c
1291 | React-jsinspector: d0b5bfd1085599265f4212034321e829bdf83cc0
1292 | React-logger: b8103c9b04e707b50cdd2b1aeb382483900cbb37
1293 | React-NativeModulesApple: 4f31a812364443cee6ef768d256c594ad3b20f53
1294 | React-perflogger: 3d501f34c8d4b10cb75f348e43591765788525ad
1295 | React-RCTActionSheet: f5335572c979198c0c3daff67b07bd1ad8370c1d
1296 | React-RCTAnimation: 5d0d31a4f9c49a70f93f32e4da098fb49b5ae0b3
1297 | React-RCTAppDelegate: 30b933b85b2dceab37c1fe6e2e8e52cf69f1d4c0
1298 | React-RCTBlob: 280d2605ba10b8f2282f1e8a849584368577251a
1299 | React-RCTFabric: 9c4ff9a5bb3373146cff554d07f05956cd981658
1300 | React-RCTImage: e15d22db53406401cdd1407ce51080a66a9c7ed4
1301 | React-RCTLinking: 39815800ec79d6fb15e6329244d195ebeabf7541
1302 | React-RCTNetwork: 2a6548e13d2577b112d4250ac5be74ae62e1e86b
1303 | React-RCTSettings: a76aee44d5398144646be146c334b15c90ad9582
1304 | React-RCTText: afad390f3838f210c2bc9e1a19bb048003b2a771
1305 | React-RCTVibration: 29bbaa5c57c02dc036d7e557584b492000b1d3e7
1306 | React-rncore: b47f9142400d3234cd6ec455d0cb6e8611ffd346
1307 | React-runtimeexecutor: d129f2b53d61298093d7c7d8ebfafa664f911ce6
1308 | React-runtimescheduler: 67707a955b9ecc628cc38bdc721fbc498910f0fd
1309 | React-utils: 0a70ea97d4e2749f336b450c082905be1d389435
1310 | ReactCommon: e593d19c9e271a6da4d0bd7f13b28cfeae5d164b
1311 | RNStoreReview: c2f7cb8e9ee68049d42150ad2333dbce596cfd7e
1312 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
1313 | Yoga: 65286bb6a07edce5e4fe8c90774da977ae8fc009
1314 | YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
1315 |
1316 | PODFILE CHECKSUM: c99970147c268482962853201076cdb15b181451
1317 |
1318 | COCOAPODS: 1.12.1
1319 |
--------------------------------------------------------------------------------
/Example/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'react-native',
3 | };
4 |
--------------------------------------------------------------------------------
/Example/metro.config.js:
--------------------------------------------------------------------------------
1 | const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
2 |
3 | /**
4 | * Metro configuration
5 | * https://facebook.github.io/metro/docs/configuration
6 | */
7 | const config = {};
8 |
9 | module.exports = mergeConfig(getDefaultConfig(__dirname), config);
10 |
--------------------------------------------------------------------------------
/Example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Example",
3 | "version": "0.0.1",
4 | "private": true,
5 | "scripts": {
6 | "postinstall": "DESTINATION='node_modules/react-native-store-review' LIB_FILE=`cd .. && echo \\`pwd\\`/\\`npm pack\\`` && (rm -rf $DESTINATION || true) && mkdir $DESTINATION && tar -xvzf $LIB_FILE -C $DESTINATION --strip-components 1 && rm $LIB_FILE",
7 | "android": "react-native run-android",
8 | "ios": "react-native run-ios",
9 | "lint": "eslint .",
10 | "start": "react-native start",
11 | "test": "jest"
12 | },
13 | "dependencies": {
14 | "react": "18.2.0",
15 | "react-native": "0.72.1",
16 | "react-native-store-review": "file:../"
17 | },
18 | "devDependencies": {
19 | "@babel/core": "^7.20.0",
20 | "@babel/preset-env": "^7.20.0",
21 | "@babel/runtime": "^7.20.0",
22 | "@react-native/eslint-config": "^0.72.2",
23 | "@react-native/metro-config": "^0.72.7",
24 | "@tsconfig/react-native": "^3.0.0",
25 | "@types/react": "^18.0.24",
26 | "@types/react-test-renderer": "^18.0.0",
27 | "babel-jest": "^29.2.1",
28 | "eslint": "^8.19.0",
29 | "jest": "^29.2.1",
30 | "metro-react-native-babel-preset": "0.76.5",
31 | "react-test-renderer": "18.2.0",
32 | "typescript": "4.8.4"
33 | },
34 | "engines": {
35 | "node": ">=16"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/react-native/tsconfig.json"
3 | }
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Joel Arvidsson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-native-store-review
2 |
3 | This module exposes the native APIs to ask the user to rate the app in the iOS App Store or Google Play store directly from within the app (requires iOS >= 12.4 or Android 5.0 with Google Play store installed).
4 |
5 |
6 |
7 | ## Installation
8 |
9 | ```bash
10 | # Add dependency
11 | yarn add react-native-store-review
12 | # Link iOS dependency
13 | pod install --project-directory=ios
14 | # Compile project
15 | react-native run-ios # or run-android
16 | ```
17 |
18 | ## Usage
19 |
20 | The intention of this API is to ask the user to rate the app as a part of the user journey, typically as the user completes a task. **Since it's not possible to know if a dialog will be shown or not you should not call it as a result of tapping a button**, but rather as a side effect of an event happening in the app.
21 |
22 | ```js
23 | import * as StoreReview from 'react-native-store-review';
24 |
25 | StoreReview.requestReview();
26 | ```
27 |
28 | ### Button
29 |
30 | If you want to show a button or provide a fallback for OS versions not supporting these APIs, you can redirect the user to the respective stores to review the app there instead.
31 |
32 | ```js
33 | import { Linking, Platform } from 'react-native';
34 |
35 | const APP_STORE_LINK = `itms-apps://apps.apple.com/app/id${IOS_APP_ID}?action=write-review`;
36 | const PLAY_STORE_LINK = `market://details?id=${ANDROID_APP_ID}`;
37 |
38 | const STORE_LINK = Platform.select({
39 | ios: APP_STORE_LINK,
40 | android: PLAY_STORE_LINK,
41 | });
42 |
43 | export const openReviewInStore = () => Linking.openURL(STORE_LINK)
44 | ```
45 |
46 | ## References
47 |
48 | * [`SKStoreReviewController` for App Store](https://developer.apple.com/documentation/storekit/skstorereviewcontroller/requesting_app_store_reviews)
49 | * [`In-App Review API` for Google Play Store](https://developer.android.com/guide/playcore/in-app-review).
50 |
51 | ## Troubleshooting
52 |
53 | ### The dialog is not showing in the correct language on iOS
54 |
55 | The strings in the dialog comes from the OS, if your translations are purely in JavaScript land you need to add meta data so iOS understand which languages you support, [see the official documentation](https://developer.apple.com/documentation/xcode/localization/adding_support_for_languages_and_regions).
56 |
57 | ### The dialog is not showing when I call `requestReview()`
58 |
59 | ##### (1)
60 | For iOS you have to add LSApplicationQueriesSchemes as Array param to Info.plist and add itms-apps as one of params in this array to link appstore.
61 |
62 | For example:
63 | ```js
64 | LSApplicationQueriesSchemes
65 |
66 | itms-apps
67 |
68 | ```
69 |
70 | ##### or (2)
71 | The dialog **is not showing while testing with TestFlight** but will be working normally once in production ([source](https://stackoverflow.com/questions/46770549/skstorereviewcontroller-requestreview-popup-is-not-showing-in-testflight-build/47048474#47048474)). Furthermore it will not work for enterprise apps as they are not available on the App Store, and Apple/Google will restrict the amount of times the API can be called to a few times per year in order prevent misuse.
72 |
--------------------------------------------------------------------------------
/RNStoreReview.podspec:
--------------------------------------------------------------------------------
1 | require "json"
2 | version = JSON.parse(File.read("./package.json"))["version"]
3 |
4 | Pod::Spec.new do |s|
5 | s.name = "RNStoreReview"
6 | s.version = version
7 | s.summary = "App Store Ratings for React Native."
8 | s.homepage = "https://github.com/oblador/react-native-store-review"
9 | s.license = "MIT"
10 | s.author = { "Joel Arvidsson" => "joel@oblador.se" }
11 | s.platform = :ios, "12.4"
12 | s.source = { :git => "https://github.com/oblador/react-native-store-review.git", :tag => "v#{s.version}" }
13 | s.source_files = "ios/*.{h,m,mm}"
14 | s.preserve_paths = "**/*.js"
15 | s.ios.framework = 'StoreKit'
16 | s.requires_arc = true
17 |
18 | s.dependency "React-Core"
19 |
20 | if defined? install_modules_dependencies
21 | install_modules_dependencies(s)
22 | end
23 |
24 | end
25 |
--------------------------------------------------------------------------------
/RNStoreReview.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | B3E7B58A1CC2AC0600A0062D /* RNStoreReview.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNStoreReview.m */; };
11 | /* End PBXBuildFile section */
12 |
13 | /* Begin PBXCopyFilesBuildPhase section */
14 | 58B511D91A9E6C8500147676 /* CopyFiles */ = {
15 | isa = PBXCopyFilesBuildPhase;
16 | buildActionMask = 2147483647;
17 | dstPath = "include/$(PRODUCT_NAME)";
18 | dstSubfolderSpec = 16;
19 | files = (
20 | );
21 | runOnlyForDeploymentPostprocessing = 0;
22 | };
23 | /* End PBXCopyFilesBuildPhase section */
24 |
25 | /* Begin PBXFileReference section */
26 | 134814201AA4EA6300B7C361 /* libRNStoreReview.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNStoreReview.a; sourceTree = BUILT_PRODUCTS_DIR; };
27 | B3E7B5881CC2AC0600A0062D /* RNStoreReview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNStoreReview.h; sourceTree = ""; };
28 | B3E7B5891CC2AC0600A0062D /* RNStoreReview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNStoreReview.m; sourceTree = ""; };
29 | /* End PBXFileReference section */
30 |
31 | /* Begin PBXFrameworksBuildPhase section */
32 | 58B511D81A9E6C8500147676 /* Frameworks */ = {
33 | isa = PBXFrameworksBuildPhase;
34 | buildActionMask = 2147483647;
35 | files = (
36 | );
37 | runOnlyForDeploymentPostprocessing = 0;
38 | };
39 | /* End PBXFrameworksBuildPhase section */
40 |
41 | /* Begin PBXGroup section */
42 | 134814211AA4EA7D00B7C361 /* Products */ = {
43 | isa = PBXGroup;
44 | children = (
45 | 134814201AA4EA6300B7C361 /* libRNStoreReview.a */,
46 | );
47 | name = Products;
48 | sourceTree = "";
49 | };
50 | 58B511D21A9E6C8500147676 = {
51 | isa = PBXGroup;
52 | children = (
53 | B3E7B5881CC2AC0600A0062D /* RNStoreReview.h */,
54 | B3E7B5891CC2AC0600A0062D /* RNStoreReview.m */,
55 | 134814211AA4EA7D00B7C361 /* Products */,
56 | );
57 | indentWidth = 2;
58 | sourceTree = "";
59 | tabWidth = 2;
60 | };
61 | /* End PBXGroup section */
62 |
63 | /* Begin PBXNativeTarget section */
64 | 58B511DA1A9E6C8500147676 /* RNStoreReview */ = {
65 | isa = PBXNativeTarget;
66 | buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNStoreReview" */;
67 | buildPhases = (
68 | 58B511D71A9E6C8500147676 /* Sources */,
69 | 58B511D81A9E6C8500147676 /* Frameworks */,
70 | 58B511D91A9E6C8500147676 /* CopyFiles */,
71 | );
72 | buildRules = (
73 | );
74 | dependencies = (
75 | );
76 | name = RNStoreReview;
77 | productName = RCTDataManager;
78 | productReference = 134814201AA4EA6300B7C361 /* libRNStoreReview.a */;
79 | productType = "com.apple.product-type.library.static";
80 | };
81 | /* End PBXNativeTarget section */
82 |
83 | /* Begin PBXProject section */
84 | 58B511D31A9E6C8500147676 /* Project object */ = {
85 | isa = PBXProject;
86 | attributes = {
87 | LastUpgradeCheck = 0610;
88 | ORGANIZATIONNAME = Oblador;
89 | TargetAttributes = {
90 | 58B511DA1A9E6C8500147676 = {
91 | CreatedOnToolsVersion = 6.1.1;
92 | };
93 | };
94 | };
95 | buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNStoreReview" */;
96 | compatibilityVersion = "Xcode 3.2";
97 | developmentRegion = English;
98 | hasScannedForEncodings = 0;
99 | knownRegions = (
100 | en,
101 | );
102 | mainGroup = 58B511D21A9E6C8500147676;
103 | productRefGroup = 58B511D21A9E6C8500147676;
104 | projectDirPath = "";
105 | projectRoot = "";
106 | targets = (
107 | 58B511DA1A9E6C8500147676 /* RNStoreReview */,
108 | );
109 | };
110 | /* End PBXProject section */
111 |
112 | /* Begin PBXSourcesBuildPhase section */
113 | 58B511D71A9E6C8500147676 /* Sources */ = {
114 | isa = PBXSourcesBuildPhase;
115 | buildActionMask = 2147483647;
116 | files = (
117 | B3E7B58A1CC2AC0600A0062D /* RNStoreReview.m in Sources */,
118 | );
119 | runOnlyForDeploymentPostprocessing = 0;
120 | };
121 | /* End PBXSourcesBuildPhase section */
122 |
123 | /* Begin XCBuildConfiguration section */
124 | 58B511ED1A9E6C8500147676 /* Debug */ = {
125 | isa = XCBuildConfiguration;
126 | buildSettings = {
127 | ALWAYS_SEARCH_USER_PATHS = NO;
128 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
129 | CLANG_CXX_LIBRARY = "libc++";
130 | CLANG_ENABLE_MODULES = YES;
131 | CLANG_ENABLE_OBJC_ARC = YES;
132 | CLANG_WARN_BOOL_CONVERSION = YES;
133 | CLANG_WARN_CONSTANT_CONVERSION = YES;
134 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
135 | CLANG_WARN_EMPTY_BODY = YES;
136 | CLANG_WARN_ENUM_CONVERSION = YES;
137 | CLANG_WARN_INT_CONVERSION = YES;
138 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
139 | CLANG_WARN_UNREACHABLE_CODE = YES;
140 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
141 | COPY_PHASE_STRIP = NO;
142 | ENABLE_STRICT_OBJC_MSGSEND = YES;
143 | GCC_C_LANGUAGE_STANDARD = gnu99;
144 | GCC_DYNAMIC_NO_PIC = NO;
145 | GCC_OPTIMIZATION_LEVEL = 0;
146 | GCC_PREPROCESSOR_DEFINITIONS = (
147 | "DEBUG=1",
148 | "$(inherited)",
149 | );
150 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
151 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
152 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
153 | GCC_WARN_UNDECLARED_SELECTOR = YES;
154 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
155 | GCC_WARN_UNUSED_FUNCTION = YES;
156 | GCC_WARN_UNUSED_VARIABLE = YES;
157 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
158 | MTL_ENABLE_DEBUG_INFO = YES;
159 | ONLY_ACTIVE_ARCH = YES;
160 | SDKROOT = iphoneos;
161 | };
162 | name = Debug;
163 | };
164 | 58B511EE1A9E6C8500147676 /* Release */ = {
165 | isa = XCBuildConfiguration;
166 | buildSettings = {
167 | ALWAYS_SEARCH_USER_PATHS = NO;
168 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
169 | CLANG_CXX_LIBRARY = "libc++";
170 | CLANG_ENABLE_MODULES = YES;
171 | CLANG_ENABLE_OBJC_ARC = YES;
172 | CLANG_WARN_BOOL_CONVERSION = YES;
173 | CLANG_WARN_CONSTANT_CONVERSION = YES;
174 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
175 | CLANG_WARN_EMPTY_BODY = YES;
176 | CLANG_WARN_ENUM_CONVERSION = YES;
177 | CLANG_WARN_INT_CONVERSION = YES;
178 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
179 | CLANG_WARN_UNREACHABLE_CODE = YES;
180 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
181 | COPY_PHASE_STRIP = YES;
182 | ENABLE_NS_ASSERTIONS = NO;
183 | ENABLE_STRICT_OBJC_MSGSEND = YES;
184 | GCC_C_LANGUAGE_STANDARD = gnu99;
185 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
186 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
187 | GCC_WARN_UNDECLARED_SELECTOR = YES;
188 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
189 | GCC_WARN_UNUSED_FUNCTION = YES;
190 | GCC_WARN_UNUSED_VARIABLE = YES;
191 | IPHONEOS_DEPLOYMENT_TARGET = 7.0;
192 | MTL_ENABLE_DEBUG_INFO = NO;
193 | SDKROOT = iphoneos;
194 | VALIDATE_PRODUCT = YES;
195 | };
196 | name = Release;
197 | };
198 | 58B511F01A9E6C8500147676 /* Debug */ = {
199 | isa = XCBuildConfiguration;
200 | buildSettings = {
201 | HEADER_SEARCH_PATHS = (
202 | "$(inherited)",
203 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
204 | "$(SRCROOT)/../../../React/**",
205 | "$(SRCROOT)/../../react-native/React/**",
206 | );
207 | LIBRARY_SEARCH_PATHS = "$(inherited)";
208 | OTHER_LDFLAGS = "-ObjC";
209 | PRODUCT_NAME = RNStoreReview;
210 | SKIP_INSTALL = YES;
211 | };
212 | name = Debug;
213 | };
214 | 58B511F11A9E6C8500147676 /* Release */ = {
215 | isa = XCBuildConfiguration;
216 | buildSettings = {
217 | HEADER_SEARCH_PATHS = (
218 | "$(inherited)",
219 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
220 | "$(SRCROOT)/../../../React/**",
221 | "$(SRCROOT)/../../react-native/React/**",
222 | );
223 | LIBRARY_SEARCH_PATHS = "$(inherited)";
224 | OTHER_LDFLAGS = "-ObjC";
225 | PRODUCT_NAME = RNStoreReview;
226 | SKIP_INSTALL = YES;
227 | };
228 | name = Release;
229 | };
230 | /* End XCBuildConfiguration section */
231 |
232 | /* Begin XCConfigurationList section */
233 | 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNStoreReview" */ = {
234 | isa = XCConfigurationList;
235 | buildConfigurations = (
236 | 58B511ED1A9E6C8500147676 /* Debug */,
237 | 58B511EE1A9E6C8500147676 /* Release */,
238 | );
239 | defaultConfigurationIsVisible = 0;
240 | defaultConfigurationName = Release;
241 | };
242 | 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNStoreReview" */ = {
243 | isa = XCConfigurationList;
244 | buildConfigurations = (
245 | 58B511F01A9E6C8500147676 /* Debug */,
246 | 58B511F11A9E6C8500147676 /* Release */,
247 | );
248 | defaultConfigurationIsVisible = 0;
249 | defaultConfigurationName = Release;
250 | };
251 | /* End XCConfigurationList section */
252 | };
253 | rootObject = 58B511D31A9E6C8500147676 /* Project object */;
254 | }
255 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.safeExtGet = {prop, fallback ->
3 | rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
4 | }
5 | repositories {
6 | google()
7 | gradlePluginPortal()
8 | }
9 | dependencies {
10 | classpath("com.android.tools.build:gradle:7.0.4")
11 | }
12 | }
13 |
14 | def isNewArchitectureEnabled() {
15 | return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
16 | }
17 |
18 | apply plugin: 'com.android.library'
19 |
20 | def DEFAULT_CORE_APP_REVIEW_VERSION = "2.0.1"
21 |
22 | def safeExtGet(prop, fallback) {
23 | rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
24 | }
25 |
26 | if (isNewArchitectureEnabled()) {
27 | apply plugin: 'com.facebook.react'
28 | }
29 |
30 | android {
31 | namespace = "com.oblador.storereview"
32 | compileSdkVersion safeExtGet('compileSdkVersion', 31)
33 |
34 | defaultConfig {
35 | minSdkVersion safeExtGet('minSdkVersion', 21)
36 | targetSdkVersion safeExtGet('targetSdkVersion', 31)
37 | buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString())
38 | }
39 | sourceSets {
40 | main {
41 | if (isNewArchitectureEnabled()) {
42 | java.srcDirs += ['src/newarch']
43 | } else {
44 | java.srcDirs += ['src/oldarch']
45 | }
46 | }
47 | }
48 | }
49 |
50 | repositories {
51 | maven {
52 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
53 | url "$projectDir/../node_modules/react-native/android"
54 | }
55 | mavenCentral()
56 | google()
57 | }
58 |
59 | dependencies {
60 | implementation 'com.facebook.react:react-native:+'
61 | implementation("com.google.android.play:review:${safeExtGet('playCoreReviewVersion', DEFAULT_CORE_APP_REVIEW_VERSION)}")
62 | }
63 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/src/main/java/com/oblador/storereview/StoreReviewModuleImpl.java:
--------------------------------------------------------------------------------
1 | package com.oblador.storereview;
2 |
3 | import android.app.Activity;
4 | import android.util.Log;
5 | import androidx.annotation.NonNull;
6 | import java.util.Map;
7 | import java.util.HashMap;
8 | import com.google.android.play.core.review.ReviewManager;
9 | import com.google.android.play.core.review.ReviewManagerFactory;
10 | import com.google.android.play.core.review.ReviewInfo;
11 | import com.facebook.react.bridge.ReactApplicationContext;
12 | import com.google.android.gms.tasks.Task;
13 |
14 | public class StoreReviewModuleImpl {
15 |
16 | public static final String NAME = "RNStoreReview";
17 |
18 | public static void requestReview(ReactApplicationContext context) {
19 | ReviewManager manager = ReviewManagerFactory.create(context);
20 | Task request = manager.requestReviewFlow();
21 | request.addOnCompleteListener(task -> {
22 | if (task.isSuccessful()) {
23 | ReviewInfo reviewInfo = task.getResult();
24 | Activity currentActivity = context.getCurrentActivity();
25 | if (currentActivity != null) {
26 | manager.launchReviewFlow(currentActivity, reviewInfo);
27 | } else {
28 | Log.w(NAME, "Current activity is null. Unable to launch review flow.");
29 | }
30 | } else {
31 | Log.w(NAME, "Requesting review failed", task.getException());
32 | }
33 | });
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/android/src/main/java/com/oblador/storereview/StoreReviewPackage.java:
--------------------------------------------------------------------------------
1 | package com.oblador.storereview;
2 |
3 | import androidx.annotation.Nullable;
4 | import com.facebook.react.bridge.NativeModule;
5 | import com.facebook.react.bridge.ReactApplicationContext;
6 | import com.facebook.react.module.model.ReactModuleInfo;
7 | import com.facebook.react.module.model.ReactModuleInfoProvider;
8 | import com.facebook.react.TurboReactPackage;
9 | import com.facebook.react.uimanager.ViewManager;
10 |
11 | import java.util.ArrayList;
12 | import java.util.Collections;
13 | import java.util.List;
14 | import java.util.HashMap;
15 | import java.util.Map;
16 |
17 | public class StoreReviewPackage extends TurboReactPackage {
18 |
19 | @Nullable
20 | @Override
21 | public NativeModule getModule(String name, ReactApplicationContext reactContext) {
22 | if (name.equals(StoreReviewModuleImpl.NAME)) {
23 | return new StoreReviewModule(reactContext);
24 | } else {
25 | return null;
26 | }
27 | }
28 |
29 | @Override
30 | public ReactModuleInfoProvider getReactModuleInfoProvider() {
31 | return () -> {
32 | final Map moduleInfos = new HashMap<>();
33 | boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
34 | moduleInfos.put(
35 | StoreReviewModuleImpl.NAME,
36 | new ReactModuleInfo(
37 | StoreReviewModuleImpl.NAME,
38 | StoreReviewModuleImpl.NAME,
39 | false, // canOverrideExistingModule
40 | false, // needsEagerInit
41 | true, // hasConstants
42 | false, // isCxxModule
43 | isTurboModule // isTurboModule
44 | ));
45 | return moduleInfos;
46 | };
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/android/src/newarch/java/com/oblador/storereview/StoreReviewModule.java:
--------------------------------------------------------------------------------
1 | package com.oblador.storereview;
2 |
3 | import androidx.annotation.NonNull;
4 | import com.facebook.react.bridge.NativeModule;
5 | import com.facebook.react.bridge.ReactApplicationContext;
6 | import com.facebook.react.bridge.ReactContext;
7 | import com.facebook.react.bridge.ReactContextBaseJavaModule;
8 | import com.facebook.react.bridge.ReactMethod;
9 | import java.util.Map;
10 | import java.util.HashMap;
11 |
12 | public class StoreReviewModule extends NativeRNStoreReviewSpec {
13 |
14 | StoreReviewModule(ReactApplicationContext context) {
15 | super(context);
16 | }
17 |
18 | @Override
19 | @NonNull
20 | public String getName() {
21 | return StoreReviewModuleImpl.NAME;
22 | }
23 |
24 | @Override
25 | public void requestReview() {
26 | StoreReviewModuleImpl.requestReview(getReactApplicationContext());
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/android/src/oldarch/java/com/oblador/storereview/StoreReviewModule.java:
--------------------------------------------------------------------------------
1 | package com.oblador.storereview;
2 |
3 | import com.facebook.react.bridge.NativeModule;
4 | import com.facebook.react.bridge.ReactApplicationContext;
5 | import com.facebook.react.bridge.ReactContext;
6 | import com.facebook.react.bridge.ReactContextBaseJavaModule;
7 | import com.facebook.react.bridge.ReactMethod;
8 | import java.util.Map;
9 | import java.util.HashMap;
10 |
11 | public class StoreReviewModule extends ReactContextBaseJavaModule {
12 |
13 | StoreReviewModule(ReactApplicationContext context) {
14 | super(context);
15 | }
16 |
17 | @Override
18 | public String getName() {
19 | return StoreReviewModuleImpl.NAME;
20 | }
21 |
22 | @ReactMethod
23 | public void requestReview() {
24 | StoreReviewModuleImpl.requestReview(getReactApplicationContext());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ios/RNStoreReview.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface RNStoreReview : NSObject
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/ios/RNStoreReview.mm:
--------------------------------------------------------------------------------
1 | #import "RNStoreReview.h"
2 | #import
3 |
4 | #ifdef RCT_NEW_ARCH_ENABLED
5 | #import
6 | #endif
7 |
8 | @implementation RNStoreReview
9 |
10 | - (dispatch_queue_t)methodQueue
11 | {
12 | return dispatch_get_main_queue();
13 | }
14 |
15 | RCT_EXPORT_MODULE()
16 |
17 | RCT_EXPORT_METHOD(requestReview)
18 | {
19 | if (@available(iOS 14.0, *)) {
20 | UIWindowScene *activeScene;
21 | NSSet *scenes = [[UIApplication sharedApplication] connectedScenes];
22 | for (UIScene *scene in scenes) {
23 | if ([scene activationState] == UISceneActivationStateForegroundActive) {
24 | activeScene = scene;
25 | break;
26 | }
27 | }
28 | if (activeScene != nil) {
29 | [SKStoreReviewController requestReviewInScene:activeScene];
30 | }
31 | } else {
32 | [SKStoreReviewController requestReview];
33 | }
34 | }
35 |
36 | #ifdef RCT_NEW_ARCH_ENABLED
37 | - (std::shared_ptr)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params
38 | {
39 | return std::make_shared(params);
40 | }
41 | #endif
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-store-review",
3 | "version": "0.4.3",
4 | "description": "Rate on App Store or Google Play directly in your React Native app",
5 | "main": "src",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "files": [
10 | "RNStoreReview.podspec",
11 | "RNStoreReview.xcodeproj",
12 | "src",
13 | "ios",
14 | "android",
15 | "!android/build",
16 | "!android/gradlew*",
17 | "!android/gradle/wrapper",
18 | "!.DS_Store"
19 | ],
20 | "keywords": [
21 | "react-native",
22 | "react-component",
23 | "react-native-component",
24 | "react",
25 | "mobile",
26 | "ios",
27 | "android",
28 | "app-store",
29 | "review",
30 | "rating",
31 | "rate"
32 | ],
33 | "author": {
34 | "name": "Joel Arvidsson",
35 | "email": "joel@oblador.se"
36 | },
37 | "homepage": "https://github.com/oblador/react-native-store-review",
38 | "bugs": {
39 | "url": "https://github.com/oblador/react-native-store-review/issues"
40 | },
41 | "repository": {
42 | "type": "git",
43 | "url": "git://github.com/oblador/react-native-store-review.git"
44 | },
45 | "devDependencies": {
46 | "react": "18.2.0",
47 | "react-native": "0.72.1"
48 | },
49 | "codegenConfig": {
50 | "name": "RNStoreReviewSpec",
51 | "type": "modules",
52 | "jsSrcsDir": "src",
53 | "android": {
54 | "javaPackageName": "com.oblador.storereview"
55 | }
56 | },
57 | "license": "MIT"
58 | }
59 |
--------------------------------------------------------------------------------
/src/NativeRNStoreReview.ts:
--------------------------------------------------------------------------------
1 | import type { TurboModule } from 'react-native';
2 | import { TurboModuleRegistry } from 'react-native';
3 |
4 | export interface Spec extends TurboModule {
5 | requestReview(): void;
6 | }
7 |
8 | export default TurboModuleRegistry.get('RNStoreReview');
9 |
10 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import RNStoreReview from "./NativeRNStoreReview"
2 |
3 | /**
4 | * Asks the user to rate the app in the App/Play Store.
5 | * @throws Will throw an Error if native module is not present or not supported by the OS version.
6 | */
7 | export function requestReview() {
8 | if (!RNStoreReview) {
9 | throw new Error('StoreReview native module not available, did you forget to link the library?');
10 | }
11 |
12 | return RNStoreReview.requestReview();
13 | }
14 |
--------------------------------------------------------------------------------