Commit a8835af95d1401453b2f4423a9304d55adea7edc
0 parents
init
Showing
66 changed files
with
7011 additions
and
0 deletions
Too many changes to show.
To preserve performance only 58 of 66 files are displayed.
.gitignore
0 → 100644
1 | +++ a/.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 | +project.xcworkspace | ||
24 | + | ||
25 | +# node.js | ||
26 | +# | ||
27 | +node_modules/ | ||
28 | +npm-debug.log | ||
29 | +*.iml |
LICENSE.md
0 → 100644
1 | +++ a/LICENSE.md | ||
1 | +## ISC License | ||
2 | + | ||
3 | +Copyright 2017 React Native Orientation | ||
4 | + | ||
5 | +Permission to use, copy, modify, and/or distribute this software for any purpose with or | ||
6 | +without fee is hereby granted, provided that the above copyright notice and this permission | ||
7 | +notice appear in all copies. | ||
8 | + | ||
9 | +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS | ||
10 | +SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL | ||
11 | +THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, | ||
13 | +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | ||
14 | +OF THIS SOFTWARE. |
README.md
0 → 100644
1 | +++ a/README.md | ||
1 | +## React Native Orientation | ||
2 | +Listen to device orientation changes in React Native applications and programmatically set preferred orientation on a per screen basis. Works on both Android and iOS. | ||
3 | + | ||
4 | +## Installing | ||
5 | + | ||
6 | +``` | ||
7 | +npm install @cqfw/react-native-orientation --save | ||
8 | +``` | ||
9 | + | ||
10 | +## Linking Native Dependencies | ||
11 | + | ||
12 | +### Automatic Linking | ||
13 | + | ||
14 | +``` | ||
15 | +react-native link @cqfw/react-native-orientation | ||
16 | +``` | ||
17 | + | ||
18 | +Please note that you **still need to manually configure** a couple files even when using automatic linking. Please see the ['Configuration'](#configuration) section below. You will also **need to restart your simulator** before the package will work properly. | ||
19 | + | ||
20 | +### Configuration | ||
21 | + | ||
22 | +**iOS** | ||
23 | + | ||
24 | +Add the following to your project's `AppDelegate.m`: | ||
25 | + | ||
26 | +```objc | ||
27 | +#import "Orientation.h" // <--- import | ||
28 | + | ||
29 | +@implementation AppDelegate | ||
30 | + | ||
31 | + // ... | ||
32 | + | ||
33 | +- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { | ||
34 | + return [Orientation getOrientation]; | ||
35 | +} | ||
36 | + | ||
37 | + | ||
38 | +@end | ||
39 | +``` | ||
40 | + | ||
41 | +**Android** | ||
42 | + | ||
43 | +Implement `onConfigurationChanged` method in `MainActivity.java` | ||
44 | + | ||
45 | +```java | ||
46 | + import android.content.Intent; // <--- import | ||
47 | + import android.content.res.Configuration; // <--- import | ||
48 | + | ||
49 | + public class MainActivity extends ReactActivity { | ||
50 | + ...... | ||
51 | + @Override | ||
52 | + public void onConfigurationChanged(Configuration newConfig) { | ||
53 | + super.onConfigurationChanged(newConfig); | ||
54 | + Intent intent = new Intent("onConfigurationChanged"); | ||
55 | + intent.putExtra("newConfig", newConfig); | ||
56 | + this.sendBroadcast(intent); | ||
57 | + } | ||
58 | + | ||
59 | + ...... | ||
60 | + | ||
61 | + } | ||
62 | +``` | ||
63 | + | ||
64 | +## Usage | ||
65 | + | ||
66 | +To use the `@cqfw/react-native-orientation` package in your codebase, you should use the Orientation module: | ||
67 | +```javascript | ||
68 | +import Orientation from '@cqfw/react-native-orientation'; | ||
69 | +``` | ||
70 | + | ||
71 | +```javascript | ||
72 | +export default class AppScreen extends Component { | ||
73 | + // ... | ||
74 | + | ||
75 | + componentWillMount() { | ||
76 | + // The getOrientation method is async. It happens sometimes that | ||
77 | + // you need the orientation at the moment the JS runtime starts running on device. | ||
78 | + // `getInitialOrientation` returns directly because its a constant set at the | ||
79 | + // beginning of the JS runtime. | ||
80 | + | ||
81 | + const initial = Orientation.getInitialOrientation(); | ||
82 | + if (initial === 'PORTRAIT') { | ||
83 | + // do something | ||
84 | + } else { | ||
85 | + // do something else | ||
86 | + } | ||
87 | + }, | ||
88 | + | ||
89 | + componentDidMount() { | ||
90 | + // this locks the view to Portrait Mode | ||
91 | + Orientation.lockToPortrait(); | ||
92 | + | ||
93 | + // this locks the view to Landscape Mode | ||
94 | + // Orientation.lockToLandscape(); | ||
95 | + | ||
96 | + // this unlocks any previous locks to all Orientations | ||
97 | + // Orientation.unlockAllOrientations(); | ||
98 | + | ||
99 | + Orientation.addOrientationListener(this._orientationDidChange); | ||
100 | + }, | ||
101 | + | ||
102 | + _orientationDidChange = (orientation) => { | ||
103 | + if (orientation === 'LANDSCAPE') { | ||
104 | + // do something with landscape layout | ||
105 | + } else { | ||
106 | + // do something with portrait layout | ||
107 | + } | ||
108 | + }, | ||
109 | + | ||
110 | + componentWillUnmount() { | ||
111 | + Orientation.getOrientation((err, orientation) => { | ||
112 | + console.log(`Current Device Orientation: ${orientation}`); | ||
113 | + }); | ||
114 | + | ||
115 | + | ||
116 | + // Remember to remove listener | ||
117 | + Orientation.removeOrientationListener(this._orientationDidChange); | ||
118 | + } | ||
119 | + | ||
120 | + render() { | ||
121 | + // ... | ||
122 | + | ||
123 | + return ( | ||
124 | + // ... | ||
125 | + ) | ||
126 | + } | ||
127 | +} | ||
128 | +``` | ||
129 | + | ||
130 | +## Orientation Events | ||
131 | + | ||
132 | +```javascript | ||
133 | +addOrientationListener((orientation) => {}); | ||
134 | +``` | ||
135 | + | ||
136 | +`orientation` will return one of the following values: | ||
137 | +- `LANDSCAPE` | ||
138 | +- `PORTRAIT` | ||
139 | +- `PORTRAITUPSIDEDOWN` | ||
140 | +- `UNKNOWN` | ||
141 | + | ||
142 | +```javascript | ||
143 | +removeOrientationListener((orientation) => {}); | ||
144 | +``` | ||
145 | + | ||
146 | +```javascript | ||
147 | +addSpecificOrientationListener((specificOrientation) => {}); | ||
148 | +``` | ||
149 | + | ||
150 | +`specificOrientation` will return one of the following values: | ||
151 | +- `LANDSCAPE-LEFT` | ||
152 | +- `LANDSCAPE-RIGHT` | ||
153 | +- `PORTRAIT` | ||
154 | +- `PORTRAITUPSIDEDOWN` | ||
155 | +- `UNKNOWN` | ||
156 | + | ||
157 | +```javascript | ||
158 | +removeSpecificOrientationListener((specificOrientation) => {}); | ||
159 | +``` | ||
160 | + | ||
161 | +## API | ||
162 | + | ||
163 | +- `lockToPortrait()` | ||
164 | +- `lockToLandscape()` | ||
165 | +- `lockToLandscapeLeft()` | ||
166 | +- `lockToLandscapeRight()` | ||
167 | +- `unlockAllOrientations()` | ||
168 | +- `getOrientation((err, orientation) => {})` | ||
169 | +- `getSpecificOrientation((err, specificOrientation) => {})` |
android/.gradle/7.4.2/checksums/checksums.lock
0 → 100644
No preview for this file type
android/.gradle/7.4.2/fileChanges/last-build.bin
0 → 100644
No preview for this file type
android/.gradle/7.4.2/fileHashes/fileHashes.lock
0 → 100644
No preview for this file type
android/.gradle/7.4.2/gc.properties
0 → 100644
1 | +++ a/android/.gradle/7.4.2/gc.properties |
android/.gradle/vcs-1/gc.properties
0 → 100644
1 | +++ a/android/.gradle/vcs-1/gc.properties |
android/build.gradle
0 → 100644
1 | +++ a/android/build.gradle | ||
1 | +apply plugin: 'com.android.library' | ||
2 | + | ||
3 | +android { | ||
4 | + compileSdkVersion 28 | ||
5 | + buildToolsVersion "28.0.3" | ||
6 | + | ||
7 | + defaultConfig { | ||
8 | + minSdkVersion 16 | ||
9 | + targetSdkVersion 28 | ||
10 | + versionCode 1 | ||
11 | + versionName "1.0" | ||
12 | + ndk { | ||
13 | + abiFilters "armeabi-v7a", "x86" | ||
14 | + } | ||
15 | + } | ||
16 | +} | ||
17 | + | ||
18 | +dependencies { | ||
19 | + api "com.facebook.react:react-native:+" | ||
20 | +} |
android/src/main/AndroidManifest.xml
0 → 100644
android/src/main/java/com/github/yamill/orientation/OrientationModule.java
0 → 100644
1 | +++ a/android/src/main/java/com/github/yamill/orientation/OrientationModule.java | ||
1 | +package com.github.yamill.orientation; | ||
2 | + | ||
3 | +import android.app.Activity; | ||
4 | +import android.content.BroadcastReceiver; | ||
5 | +import android.content.Context; | ||
6 | +import android.content.Intent; | ||
7 | +import android.content.IntentFilter; | ||
8 | +import android.content.pm.ActivityInfo; | ||
9 | +import android.content.res.Configuration; | ||
10 | +import android.util.Log; | ||
11 | + | ||
12 | +import com.facebook.common.logging.FLog; | ||
13 | +import com.facebook.react.bridge.Arguments; | ||
14 | +import com.facebook.react.bridge.Callback; | ||
15 | +import com.facebook.react.bridge.LifecycleEventListener; | ||
16 | +import com.facebook.react.bridge.ReactApplicationContext; | ||
17 | +import com.facebook.react.bridge.ReactContextBaseJavaModule; | ||
18 | +import com.facebook.react.bridge.ReactMethod; | ||
19 | +import com.facebook.react.bridge.WritableMap; | ||
20 | +import com.facebook.react.common.ReactConstants; | ||
21 | +import com.facebook.react.modules.core.DeviceEventManagerModule; | ||
22 | + | ||
23 | +import java.util.HashMap; | ||
24 | +import java.util.Map; | ||
25 | + | ||
26 | +import javax.annotation.Nullable; | ||
27 | + | ||
28 | +public class OrientationModule extends ReactContextBaseJavaModule implements LifecycleEventListener{ | ||
29 | + final BroadcastReceiver receiver; | ||
30 | + | ||
31 | + public OrientationModule(ReactApplicationContext reactContext) { | ||
32 | + super(reactContext); | ||
33 | + final ReactApplicationContext ctx = reactContext; | ||
34 | + | ||
35 | + receiver = new BroadcastReceiver() { | ||
36 | + @Override | ||
37 | + public void onReceive(Context context, Intent intent) { | ||
38 | + Configuration newConfig = intent.getParcelableExtra("newConfig"); | ||
39 | + Log.d("receiver", String.valueOf(newConfig.orientation)); | ||
40 | + | ||
41 | + String orientationValue = newConfig.orientation == 1 ? "PORTRAIT" : "LANDSCAPE"; | ||
42 | + | ||
43 | + WritableMap params = Arguments.createMap(); | ||
44 | + params.putString("orientation", orientationValue); | ||
45 | + if (ctx.hasActiveCatalystInstance()) { | ||
46 | + ctx | ||
47 | + .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) | ||
48 | + .emit("orientationDidChange", params); | ||
49 | + } | ||
50 | + } | ||
51 | + }; | ||
52 | + ctx.addLifecycleEventListener(this); | ||
53 | + } | ||
54 | + | ||
55 | + @Override | ||
56 | + public String getName() { | ||
57 | + return "Orientation"; | ||
58 | + } | ||
59 | + | ||
60 | + @ReactMethod | ||
61 | + public void getOrientation(Callback callback) { | ||
62 | + final int orientationInt = getReactApplicationContext().getResources().getConfiguration().orientation; | ||
63 | + | ||
64 | + String orientation = this.getOrientationString(orientationInt); | ||
65 | + | ||
66 | + if (orientation == "null") { | ||
67 | + callback.invoke(orientationInt, null); | ||
68 | + } else { | ||
69 | + callback.invoke(null, orientation); | ||
70 | + } | ||
71 | + } | ||
72 | + | ||
73 | + @ReactMethod | ||
74 | + public void lockToPortrait() { | ||
75 | + final Activity activity = getCurrentActivity(); | ||
76 | + if (activity == null) { | ||
77 | + return; | ||
78 | + } | ||
79 | + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); | ||
80 | + } | ||
81 | + | ||
82 | + @ReactMethod | ||
83 | + public void lockToLandscape() { | ||
84 | + final Activity activity = getCurrentActivity(); | ||
85 | + if (activity == null) { | ||
86 | + return; | ||
87 | + } | ||
88 | + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); | ||
89 | + } | ||
90 | + | ||
91 | + @ReactMethod | ||
92 | + public void lockToLandscapeLeft() { | ||
93 | + final Activity activity = getCurrentActivity(); | ||
94 | + if (activity == null) { | ||
95 | + return; | ||
96 | + } | ||
97 | + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); | ||
98 | + } | ||
99 | + | ||
100 | + @ReactMethod | ||
101 | + public void lockToLandscapeRight() { | ||
102 | + final Activity activity = getCurrentActivity(); | ||
103 | + if (activity == null) { | ||
104 | + return; | ||
105 | + } | ||
106 | + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); | ||
107 | + } | ||
108 | + | ||
109 | + @ReactMethod | ||
110 | + public void unlockAllOrientations() { | ||
111 | + final Activity activity = getCurrentActivity(); | ||
112 | + if (activity == null) { | ||
113 | + return; | ||
114 | + } | ||
115 | + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); | ||
116 | + } | ||
117 | + | ||
118 | + @Override | ||
119 | + public @Nullable Map<String, Object> getConstants() { | ||
120 | + HashMap<String, Object> constants = new HashMap<String, Object>(); | ||
121 | + int orientationInt = getReactApplicationContext().getResources().getConfiguration().orientation; | ||
122 | + | ||
123 | + String orientation = this.getOrientationString(orientationInt); | ||
124 | + if (orientation == "null") { | ||
125 | + constants.put("initialOrientation", null); | ||
126 | + } else { | ||
127 | + constants.put("initialOrientation", orientation); | ||
128 | + } | ||
129 | + | ||
130 | + return constants; | ||
131 | + } | ||
132 | + | ||
133 | + private String getOrientationString(int orientation) { | ||
134 | + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { | ||
135 | + return "LANDSCAPE"; | ||
136 | + } else if (orientation == Configuration.ORIENTATION_PORTRAIT) { | ||
137 | + return "PORTRAIT"; | ||
138 | + } else if (orientation == Configuration.ORIENTATION_UNDEFINED) { | ||
139 | + return "UNKNOWN"; | ||
140 | + } else { | ||
141 | + return "null"; | ||
142 | + } | ||
143 | + } | ||
144 | + | ||
145 | + @Override | ||
146 | + public void onHostResume() { | ||
147 | + final Activity activity = getCurrentActivity(); | ||
148 | + | ||
149 | + if (activity == null) { | ||
150 | + FLog.e(ReactConstants.TAG, "no activity to register receiver"); | ||
151 | + return; | ||
152 | + } | ||
153 | + activity.registerReceiver(receiver, new IntentFilter("onConfigurationChanged")); | ||
154 | + } | ||
155 | + @Override | ||
156 | + public void onHostPause() { | ||
157 | + final Activity activity = getCurrentActivity(); | ||
158 | + if (activity == null) return; | ||
159 | + try | ||
160 | + { | ||
161 | + activity.unregisterReceiver(receiver); | ||
162 | + } | ||
163 | + catch (java.lang.IllegalArgumentException e) { | ||
164 | + FLog.e(ReactConstants.TAG, "receiver already unregistered", e); | ||
165 | + } | ||
166 | + } | ||
167 | + | ||
168 | + @Override | ||
169 | + public void onHostDestroy() { | ||
170 | + | ||
171 | + } | ||
172 | + } |
android/src/main/java/com/github/yamill/orientation/OrientationPackage.java
0 → 100644
1 | +++ a/android/src/main/java/com/github/yamill/orientation/OrientationPackage.java | ||
1 | +package com.github.yamill.orientation; | ||
2 | + | ||
3 | +import com.facebook.react.ReactPackage; | ||
4 | +import com.facebook.react.bridge.JavaScriptModule; | ||
5 | +import com.facebook.react.bridge.NativeModule; | ||
6 | +import com.facebook.react.bridge.ReactApplicationContext; | ||
7 | +import com.facebook.react.uimanager.ViewManager; | ||
8 | + | ||
9 | +import java.util.Arrays; | ||
10 | +import java.util.Collections; | ||
11 | +import java.util.List; | ||
12 | + | ||
13 | +public class OrientationPackage implements ReactPackage { | ||
14 | + | ||
15 | + public OrientationPackage() { | ||
16 | + } | ||
17 | + | ||
18 | + @Override | ||
19 | + public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { | ||
20 | + return Arrays.<NativeModule>asList( | ||
21 | + new OrientationModule(reactContext) | ||
22 | + ); | ||
23 | + } | ||
24 | + | ||
25 | + // Deprecated RN 0.47 | ||
26 | + public List<Class<? extends JavaScriptModule>> createJSModules() { | ||
27 | + return Collections.emptyList(); | ||
28 | + } | ||
29 | + | ||
30 | + @Override | ||
31 | + public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { | ||
32 | + return Arrays.asList(); | ||
33 | + } | ||
34 | +} | ||
35 | + | ||
36 | + |
demo/.babelrc
0 → 100644
demo/.buckconfig
0 → 100644
demo/.flowconfig
0 → 100644
1 | +++ a/demo/.flowconfig | ||
1 | +[ignore] | ||
2 | +; We fork some components by platform | ||
3 | +.*/*[.]android.js | ||
4 | + | ||
5 | +; Ignore "BUCK" generated dirs | ||
6 | +<PROJECT_ROOT>/\.buckd/ | ||
7 | + | ||
8 | +; Ignore unexpected extra "@providesModule" | ||
9 | +.*/node_modules/.*/node_modules/fbjs/.* | ||
10 | + | ||
11 | +; Ignore duplicate module providers | ||
12 | +; For RN Apps installed via npm, "Libraries" folder is inside | ||
13 | +; "node_modules/react-native" but in the source repo it is in the root | ||
14 | +.*/Libraries/react-native/React.js | ||
15 | +.*/Libraries/react-native/ReactNative.js | ||
16 | + | ||
17 | +[include] | ||
18 | + | ||
19 | +[libs] | ||
20 | +node_modules/react-native/Libraries/react-native/react-native-interface.js | ||
21 | +node_modules/react-native/flow | ||
22 | +flow/ | ||
23 | + | ||
24 | +[options] | ||
25 | +emoji=true | ||
26 | + | ||
27 | +module.system=haste | ||
28 | + | ||
29 | +experimental.strict_type_args=true | ||
30 | + | ||
31 | +munge_underscores=true | ||
32 | + | ||
33 | +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' | ||
34 | + | ||
35 | +suppress_type=$FlowIssue | ||
36 | +suppress_type=$FlowFixMe | ||
37 | +suppress_type=$FixMe | ||
38 | + | ||
39 | +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) | ||
40 | +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-5]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ | ||
41 | +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy | ||
42 | +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError | ||
43 | + | ||
44 | +unsafe.enable_getters_and_setters=true | ||
45 | + | ||
46 | +[version] | ||
47 | +^0.45.0 |
demo/.gitattributes
0 → 100644
demo/.gitignore
0 → 100644
1 | +++ a/demo/.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 | +project.xcworkspace | ||
24 | + | ||
25 | +# Android/IntelliJ | ||
26 | +# | ||
27 | +build/ | ||
28 | +.idea | ||
29 | +.gradle | ||
30 | +local.properties | ||
31 | +*.iml | ||
32 | + | ||
33 | +# node.js | ||
34 | +# | ||
35 | +node_modules/ | ||
36 | +npm-debug.log | ||
37 | +yarn-error.log | ||
38 | + | ||
39 | +# BUCK | ||
40 | +buck-out/ | ||
41 | +\.buckd/ | ||
42 | +*.keystore | ||
43 | + | ||
44 | +# fastlane | ||
45 | +# | ||
46 | +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the | ||
47 | +# screenshots whenever they are needed. | ||
48 | +# For more information about the recommended setup visit: | ||
49 | +# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md | ||
50 | + | ||
51 | +fastlane/report.xml | ||
52 | +fastlane/Preview.html | ||
53 | +fastlane/screenshots |
demo/.watchmanconfig
0 → 100644
demo/__tests__/index.android.js
0 → 100644
1 | +++ a/demo/__tests__/index.android.js | ||
1 | +import 'react-native'; | ||
2 | +import React from 'react'; | ||
3 | +import Index from '../index.android.js'; | ||
4 | + | ||
5 | +// Note: test renderer must be required after react-native. | ||
6 | +import renderer from 'react-test-renderer'; | ||
7 | + | ||
8 | +it('renders correctly', () => { | ||
9 | + const tree = renderer.create( | ||
10 | + <Index /> | ||
11 | + ); | ||
12 | +}); |
demo/__tests__/index.ios.js
0 → 100644
1 | +++ a/demo/__tests__/index.ios.js | ||
1 | +import 'react-native'; | ||
2 | +import React from 'react'; | ||
3 | +import Index from '../index.ios.js'; | ||
4 | + | ||
5 | +// Note: test renderer must be required after react-native. | ||
6 | +import renderer from 'react-test-renderer'; | ||
7 | + | ||
8 | +it('renders correctly', () => { | ||
9 | + const tree = renderer.create( | ||
10 | + <Index /> | ||
11 | + ); | ||
12 | +}); |
demo/android/app/BUCK
0 → 100644
1 | +++ a/demo/android/app/BUCK | ||
1 | +# To learn about Buck see [Docs](https://buckbuild.com/). | ||
2 | +# To run your application with Buck: | ||
3 | +# - install Buck | ||
4 | +# - `npm start` - to start the packager | ||
5 | +# - `cd android` | ||
6 | +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` | ||
7 | +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck | ||
8 | +# - `buck install -r android/app` - compile, install and run application | ||
9 | +# | ||
10 | + | ||
11 | +lib_deps = [] | ||
12 | + | ||
13 | +for jarfile in glob(['libs/*.jar']): | ||
14 | + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] | ||
15 | + lib_deps.append(':' + name) | ||
16 | + prebuilt_jar( | ||
17 | + name = name, | ||
18 | + binary_jar = jarfile, | ||
19 | + ) | ||
20 | + | ||
21 | +for aarfile in glob(['libs/*.aar']): | ||
22 | + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] | ||
23 | + lib_deps.append(':' + name) | ||
24 | + android_prebuilt_aar( | ||
25 | + name = name, | ||
26 | + aar = aarfile, | ||
27 | + ) | ||
28 | + | ||
29 | +android_library( | ||
30 | + name = "all-libs", | ||
31 | + exported_deps = lib_deps, | ||
32 | +) | ||
33 | + | ||
34 | +android_library( | ||
35 | + name = "app-code", | ||
36 | + srcs = glob([ | ||
37 | + "src/main/java/**/*.java", | ||
38 | + ]), | ||
39 | + deps = [ | ||
40 | + ":all-libs", | ||
41 | + ":build_config", | ||
42 | + ":res", | ||
43 | + ], | ||
44 | +) | ||
45 | + | ||
46 | +android_build_config( | ||
47 | + name = "build_config", | ||
48 | + package = "com.demo", | ||
49 | +) | ||
50 | + | ||
51 | +android_resource( | ||
52 | + name = "res", | ||
53 | + package = "com.demo", | ||
54 | + res = "src/main/res", | ||
55 | +) | ||
56 | + | ||
57 | +android_binary( | ||
58 | + name = "app", | ||
59 | + keystore = "//android/keystores:debug", | ||
60 | + manifest = "src/main/AndroidManifest.xml", | ||
61 | + package_type = "debug", | ||
62 | + deps = [ | ||
63 | + ":app-code", | ||
64 | + ], | ||
65 | +) |
demo/android/app/build.gradle
0 → 100644
1 | +++ a/demo/android/app/build.gradle | ||
1 | +apply plugin: "com.android.application" | ||
2 | + | ||
3 | +import com.android.build.OutputFile | ||
4 | + | ||
5 | +/** | ||
6 | + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets | ||
7 | + * and bundleReleaseJsAndAssets). | ||
8 | + * These basically call `react-native bundle` with the correct arguments during the Android build | ||
9 | + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the | ||
10 | + * bundle directly from the development server. Below you can see all the possible configurations | ||
11 | + * and their defaults. If you decide to add a configuration block, make sure to add it before the | ||
12 | + * `apply from: "../../node_modules/react-native/react.gradle"` line. | ||
13 | + * | ||
14 | + * project.ext.react = [ | ||
15 | + * // the name of the generated asset file containing your JS bundle | ||
16 | + * bundleAssetName: "index.android.bundle", | ||
17 | + * | ||
18 | + * // the entry file for bundle generation | ||
19 | + * entryFile: "index.android.js", | ||
20 | + * | ||
21 | + * // whether to bundle JS and assets in debug mode | ||
22 | + * bundleInDebug: false, | ||
23 | + * | ||
24 | + * // whether to bundle JS and assets in release mode | ||
25 | + * bundleInRelease: true, | ||
26 | + * | ||
27 | + * // whether to bundle JS and assets in another build variant (if configured). | ||
28 | + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants | ||
29 | + * // The configuration property can be in the following formats | ||
30 | + * // 'bundleIn${productFlavor}${buildType}' | ||
31 | + * // 'bundleIn${buildType}' | ||
32 | + * // bundleInFreeDebug: true, | ||
33 | + * // bundleInPaidRelease: true, | ||
34 | + * // bundleInBeta: true, | ||
35 | + * | ||
36 | + * // whether to disable dev mode in custom build variants (by default only disabled in release) | ||
37 | + * // for example: to disable dev mode in the staging build type (if configured) | ||
38 | + * devDisabledInStaging: true, | ||
39 | + * // The configuration property can be in the following formats | ||
40 | + * // 'devDisabledIn${productFlavor}${buildType}' | ||
41 | + * // 'devDisabledIn${buildType}' | ||
42 | + * | ||
43 | + * // the root of your project, i.e. where "package.json" lives | ||
44 | + * root: "../../", | ||
45 | + * | ||
46 | + * // where to put the JS bundle asset in debug mode | ||
47 | + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", | ||
48 | + * | ||
49 | + * // where to put the JS bundle asset in release mode | ||
50 | + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", | ||
51 | + * | ||
52 | + * // where to put drawable resources / React Native assets, e.g. the ones you use via | ||
53 | + * // require('./image.png')), in debug mode | ||
54 | + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", | ||
55 | + * | ||
56 | + * // where to put drawable resources / React Native assets, e.g. the ones you use via | ||
57 | + * // require('./image.png')), in release mode | ||
58 | + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", | ||
59 | + * | ||
60 | + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means | ||
61 | + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to | ||
62 | + * // date; if you have any other folders that you want to ignore for performance reasons (gradle | ||
63 | + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ | ||
64 | + * // for example, you might want to remove it from here. | ||
65 | + * inputExcludes: ["android/**", "ios/**"], | ||
66 | + * | ||
67 | + * // override which node gets called and with what additional arguments | ||
68 | + * nodeExecutableAndArgs: ["node"], | ||
69 | + * | ||
70 | + * // supply additional arguments to the packager | ||
71 | + * extraPackagerArgs: [] | ||
72 | + * ] | ||
73 | + */ | ||
74 | + | ||
75 | +apply from: "../../node_modules/react-native/react.gradle" | ||
76 | + | ||
77 | +/** | ||
78 | + * Set this to true to create two separate APKs instead of one: | ||
79 | + * - An APK that only works on ARM devices | ||
80 | + * - An APK that only works on x86 devices | ||
81 | + * The advantage is the size of the APK is reduced by about 4MB. | ||
82 | + * Upload all the APKs to the Play Store and people will download | ||
83 | + * the correct one based on the CPU architecture of their device. | ||
84 | + */ | ||
85 | +def enableSeparateBuildPerCPUArchitecture = false | ||
86 | + | ||
87 | +/** | ||
88 | + * Run Proguard to shrink the Java bytecode in release builds. | ||
89 | + */ | ||
90 | +def enableProguardInReleaseBuilds = false | ||
91 | + | ||
92 | +android { | ||
93 | + compileSdkVersion 23 | ||
94 | + buildToolsVersion "23.0.1" | ||
95 | + | ||
96 | + defaultConfig { | ||
97 | + applicationId "com.demo" | ||
98 | + minSdkVersion 16 | ||
99 | + targetSdkVersion 22 | ||
100 | + versionCode 1 | ||
101 | + versionName "1.0" | ||
102 | + ndk { | ||
103 | + abiFilters "armeabi-v7a", "x86" | ||
104 | + } | ||
105 | + } | ||
106 | + splits { | ||
107 | + abi { | ||
108 | + reset() | ||
109 | + enable enableSeparateBuildPerCPUArchitecture | ||
110 | + universalApk false // If true, also generate a universal APK | ||
111 | + include "armeabi-v7a", "x86" | ||
112 | + } | ||
113 | + } | ||
114 | + buildTypes { | ||
115 | + release { | ||
116 | + minifyEnabled enableProguardInReleaseBuilds | ||
117 | + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | ||
118 | + } | ||
119 | + } | ||
120 | + // applicationVariants are e.g. debug, release | ||
121 | + applicationVariants.all { variant -> | ||
122 | + variant.outputs.each { output -> | ||
123 | + // For each separate APK per architecture, set a unique version code as described here: | ||
124 | + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits | ||
125 | + def versionCodes = ["armeabi-v7a":1, "x86":2] | ||
126 | + def abi = output.getFilter(OutputFile.ABI) | ||
127 | + if (abi != null) { // null for the universal-debug, universal-release variants | ||
128 | + output.versionCodeOverride = | ||
129 | + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode | ||
130 | + } | ||
131 | + } | ||
132 | + } | ||
133 | +} | ||
134 | + | ||
135 | +dependencies { | ||
136 | + compile project(':react-native-orientation') | ||
137 | + compile fileTree(dir: "libs", include: ["*.jar"]) | ||
138 | + compile "com.android.support:appcompat-v7:23.0.1" | ||
139 | + compile "com.facebook.react:react-native:+" // From node_modules | ||
140 | +} | ||
141 | + | ||
142 | +// Run this once to be able to run the application with BUCK | ||
143 | +// puts all compile dependencies into folder libs for BUCK to use | ||
144 | +task copyDownloadableDepsToLibs(type: Copy) { | ||
145 | + from configurations.compile | ||
146 | + into 'libs' | ||
147 | +} |
demo/android/app/proguard-rules.pro
0 → 100644
1 | +++ a/demo/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 | + | ||
12 | +# If your project uses WebView with JS, uncomment the following | ||
13 | +# and specify the fully qualified class name to the JavaScript interface | ||
14 | +# class: | ||
15 | +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
16 | +# public *; | ||
17 | +#} | ||
18 | + | ||
19 | +# Disabling obfuscation is useful if you collect stack traces from production crashes | ||
20 | +# (unless you are using a system that supports de-obfuscate the stack traces). | ||
21 | +-dontobfuscate | ||
22 | + | ||
23 | +# React Native | ||
24 | + | ||
25 | +# Keep our interfaces so they can be used by other ProGuard rules. | ||
26 | +# See http://sourceforge.net/p/proguard/bugs/466/ | ||
27 | +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip | ||
28 | +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters | ||
29 | +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip | ||
30 | + | ||
31 | +# Do not strip any method/class that is annotated with @DoNotStrip | ||
32 | +-keep @com.facebook.proguard.annotations.DoNotStrip class * | ||
33 | +-keep @com.facebook.common.internal.DoNotStrip class * | ||
34 | +-keepclassmembers class * { | ||
35 | + @com.facebook.proguard.annotations.DoNotStrip *; | ||
36 | + @com.facebook.common.internal.DoNotStrip *; | ||
37 | +} | ||
38 | + | ||
39 | +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { | ||
40 | + void set*(***); | ||
41 | + *** get*(); | ||
42 | +} | ||
43 | + | ||
44 | +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } | ||
45 | +-keep class * extends com.facebook.react.bridge.NativeModule { *; } | ||
46 | +-keepclassmembers,includedescriptorclasses class * { native <methods>; } | ||
47 | +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp <fields>; } | ||
48 | +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; } | ||
49 | +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; } | ||
50 | + | ||
51 | +-dontwarn com.facebook.react.** | ||
52 | + | ||
53 | +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. | ||
54 | +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. | ||
55 | +-dontwarn android.text.StaticLayout | ||
56 | + | ||
57 | +# okhttp | ||
58 | + | ||
59 | +-keepattributes Signature | ||
60 | +-keepattributes *Annotation* | ||
61 | +-keep class okhttp3.** { *; } | ||
62 | +-keep interface okhttp3.** { *; } | ||
63 | +-dontwarn okhttp3.** | ||
64 | + | ||
65 | +# okio | ||
66 | + | ||
67 | +-keep class sun.misc.Unsafe { *; } | ||
68 | +-dontwarn java.nio.file.* | ||
69 | +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement | ||
70 | +-dontwarn okio.** |
demo/android/app/src/main/AndroidManifest.xml
0 → 100644
1 | +++ a/demo/android/app/src/main/AndroidManifest.xml | ||
1 | +<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
2 | + package="com.demo" | ||
3 | + android:versionCode="1" | ||
4 | + android:versionName="1.0"> | ||
5 | + | ||
6 | + <uses-permission android:name="android.permission.INTERNET" /> | ||
7 | + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> | ||
8 | + | ||
9 | + <uses-sdk | ||
10 | + android:minSdkVersion="16" | ||
11 | + android:targetSdkVersion="22" /> | ||
12 | + | ||
13 | + <application | ||
14 | + android:name=".MainApplication" | ||
15 | + android:allowBackup="true" | ||
16 | + android:label="@string/app_name" | ||
17 | + android:icon="@mipmap/ic_launcher" | ||
18 | + android:theme="@style/AppTheme"> | ||
19 | + <activity | ||
20 | + android:name=".MainActivity" | ||
21 | + android:label="@string/app_name" | ||
22 | + android:configChanges="keyboard|keyboardHidden|orientation|screenSize" | ||
23 | + android:windowSoftInputMode="adjustResize"> | ||
24 | + <intent-filter> | ||
25 | + <action android:name="android.intent.action.MAIN" /> | ||
26 | + <category android:name="android.intent.category.LAUNCHER" /> | ||
27 | + </intent-filter> | ||
28 | + </activity> | ||
29 | + <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> | ||
30 | + </application> | ||
31 | + | ||
32 | +</manifest> |
demo/android/app/src/main/java/com/demo/MainActivity.java
0 → 100644
1 | +++ a/demo/android/app/src/main/java/com/demo/MainActivity.java | ||
1 | +package com.demo; | ||
2 | + | ||
3 | +import com.facebook.react.ReactActivity; | ||
4 | + | ||
5 | +import android.content.Intent; | ||
6 | +import android.content.res.Configuration; | ||
7 | + | ||
8 | +public class MainActivity extends ReactActivity { | ||
9 | + | ||
10 | + @Override | ||
11 | + public void onConfigurationChanged(Configuration newConfig) { | ||
12 | + super.onConfigurationChanged(newConfig); | ||
13 | + Intent intent = new Intent("onConfigurationChanged"); | ||
14 | + intent.putExtra("newConfig", newConfig); | ||
15 | + this.sendBroadcast(intent); | ||
16 | + } | ||
17 | + | ||
18 | + /** | ||
19 | + * Returns the name of the main component registered from JavaScript. | ||
20 | + * This is used to schedule rendering of the component. | ||
21 | + */ | ||
22 | + protected String getMainComponentName() { | ||
23 | + return "demo"; | ||
24 | + } | ||
25 | +} |
demo/android/app/src/main/java/com/demo/MainApplication.java
0 → 100644
1 | +++ a/demo/android/app/src/main/java/com/demo/MainApplication.java | ||
1 | +package com.demo; | ||
2 | + | ||
3 | +import android.app.Application; | ||
4 | + | ||
5 | +import com.facebook.react.ReactApplication; | ||
6 | +import com.github.yamill.orientation.OrientationPackage; | ||
7 | +import com.facebook.react.ReactNativeHost; | ||
8 | +import com.facebook.react.ReactPackage; | ||
9 | +import com.facebook.react.shell.MainReactPackage; | ||
10 | +import com.facebook.soloader.SoLoader; | ||
11 | + | ||
12 | +import java.util.Arrays; | ||
13 | +import java.util.List; | ||
14 | + | ||
15 | +public class MainApplication extends Application implements ReactApplication { | ||
16 | + | ||
17 | + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { | ||
18 | + @Override | ||
19 | + public boolean getUseDeveloperSupport() { | ||
20 | + return BuildConfig.DEBUG; | ||
21 | + } | ||
22 | + | ||
23 | + @Override | ||
24 | + protected List<ReactPackage> getPackages() { | ||
25 | + return Arrays.<ReactPackage>asList( | ||
26 | + new MainReactPackage(), | ||
27 | + new OrientationPackage() | ||
28 | + ); | ||
29 | + } | ||
30 | + }; | ||
31 | + | ||
32 | + @Override | ||
33 | + public ReactNativeHost getReactNativeHost() { | ||
34 | + return mReactNativeHost; | ||
35 | + } | ||
36 | + | ||
37 | + @Override | ||
38 | + public void onCreate() { | ||
39 | + super.onCreate(); | ||
40 | + SoLoader.init(this, /* native exopackage */ false); | ||
41 | + } | ||
42 | +} |
demo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
0 → 100644
3.34 KB
demo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
0 → 100644
2.15 KB
demo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
0 → 100644
4.73 KB
demo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
0 → 100644
7.54 KB
demo/android/app/src/main/res/values/strings.xml
0 → 100644
demo/android/app/src/main/res/values/styles.xml
0 → 100644
demo/android/build.gradle
0 → 100644
1 | +++ a/demo/android/build.gradle | ||
1 | +// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
2 | + | ||
3 | +buildscript { | ||
4 | + repositories { | ||
5 | + jcenter() | ||
6 | + } | ||
7 | + dependencies { | ||
8 | + classpath 'com.android.tools.build:gradle:2.2.3' | ||
9 | + | ||
10 | + // NOTE: Do not place your application dependencies here; they belong | ||
11 | + // in the individual module build.gradle files | ||
12 | + } | ||
13 | +} | ||
14 | + | ||
15 | +allprojects { | ||
16 | + repositories { | ||
17 | + mavenLocal() | ||
18 | + jcenter() | ||
19 | + maven { | ||
20 | + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||
21 | + url "$rootDir/../node_modules/react-native/android" | ||
22 | + } | ||
23 | + } | ||
24 | +} |
demo/android/gradle.properties
0 → 100644
1 | +++ a/demo/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: -Xmx10248m -XX:MaxPermSize=256m | ||
13 | +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 | ||
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 | +android.useDeprecatedNdk=true |
demo/android/gradle/wrapper/gradle-wrapper.jar
0 → 100644
No preview for this file type
demo/android/gradle/wrapper/gradle-wrapper.properties
0 → 100644
demo/android/gradlew
0 → 100755
1 | +++ a/demo/android/gradlew | ||
1 | +#!/usr/bin/env bash | ||
2 | + | ||
3 | +############################################################################## | ||
4 | +## | ||
5 | +## Gradle start up script for UN*X | ||
6 | +## | ||
7 | +############################################################################## | ||
8 | + | ||
9 | +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
10 | +DEFAULT_JVM_OPTS="" | ||
11 | + | ||
12 | +APP_NAME="Gradle" | ||
13 | +APP_BASE_NAME=`basename "$0"` | ||
14 | + | ||
15 | +# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
16 | +MAX_FD="maximum" | ||
17 | + | ||
18 | +warn ( ) { | ||
19 | + echo "$*" | ||
20 | +} | ||
21 | + | ||
22 | +die ( ) { | ||
23 | + echo | ||
24 | + echo "$*" | ||
25 | + echo | ||
26 | + exit 1 | ||
27 | +} | ||
28 | + | ||
29 | +# OS specific support (must be 'true' or 'false'). | ||
30 | +cygwin=false | ||
31 | +msys=false | ||
32 | +darwin=false | ||
33 | +case "`uname`" in | ||
34 | + CYGWIN* ) | ||
35 | + cygwin=true | ||
36 | + ;; | ||
37 | + Darwin* ) | ||
38 | + darwin=true | ||
39 | + ;; | ||
40 | + MINGW* ) | ||
41 | + msys=true | ||
42 | + ;; | ||
43 | +esac | ||
44 | + | ||
45 | +# For Cygwin, ensure paths are in UNIX format before anything is touched. | ||
46 | +if $cygwin ; then | ||
47 | + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` | ||
48 | +fi | ||
49 | + | ||
50 | +# Attempt to set APP_HOME | ||
51 | +# Resolve links: $0 may be a link | ||
52 | +PRG="$0" | ||
53 | +# Need this for relative symlinks. | ||
54 | +while [ -h "$PRG" ] ; do | ||
55 | + ls=`ls -ld "$PRG"` | ||
56 | + link=`expr "$ls" : '.*-> \(.*\)$'` | ||
57 | + if expr "$link" : '/.*' > /dev/null; then | ||
58 | + PRG="$link" | ||
59 | + else | ||
60 | + PRG=`dirname "$PRG"`"/$link" | ||
61 | + fi | ||
62 | +done | ||
63 | +SAVED="`pwd`" | ||
64 | +cd "`dirname \"$PRG\"`/" >&- | ||
65 | +APP_HOME="`pwd -P`" | ||
66 | +cd "$SAVED" >&- | ||
67 | + | ||
68 | +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
69 | + | ||
70 | +# Determine the Java command to use to start the JVM. | ||
71 | +if [ -n "$JAVA_HOME" ] ; then | ||
72 | + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
73 | + # IBM's JDK on AIX uses strange locations for the executables | ||
74 | + JAVACMD="$JAVA_HOME/jre/sh/java" | ||
75 | + else | ||
76 | + JAVACMD="$JAVA_HOME/bin/java" | ||
77 | + fi | ||
78 | + if [ ! -x "$JAVACMD" ] ; then | ||
79 | + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
80 | + | ||
81 | +Please set the JAVA_HOME variable in your environment to match the | ||
82 | +location of your Java installation." | ||
83 | + fi | ||
84 | +else | ||
85 | + JAVACMD="java" | ||
86 | + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
87 | + | ||
88 | +Please set the JAVA_HOME variable in your environment to match the | ||
89 | +location of your Java installation." | ||
90 | +fi | ||
91 | + | ||
92 | +# Increase the maximum file descriptors if we can. | ||
93 | +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then | ||
94 | + MAX_FD_LIMIT=`ulimit -H -n` | ||
95 | + if [ $? -eq 0 ] ; then | ||
96 | + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
97 | + MAX_FD="$MAX_FD_LIMIT" | ||
98 | + fi | ||
99 | + ulimit -n $MAX_FD | ||
100 | + if [ $? -ne 0 ] ; then | ||
101 | + warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
102 | + fi | ||
103 | + else | ||
104 | + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
105 | + fi | ||
106 | +fi | ||
107 | + | ||
108 | +# For Darwin, add options to specify how the application appears in the dock | ||
109 | +if $darwin; then | ||
110 | + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
111 | +fi | ||
112 | + | ||
113 | +# For Cygwin, switch paths to Windows format before running java | ||
114 | +if $cygwin ; then | ||
115 | + APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
116 | + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
117 | + | ||
118 | + # We build the pattern for arguments to be converted via cygpath | ||
119 | + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
120 | + SEP="" | ||
121 | + for dir in $ROOTDIRSRAW ; do | ||
122 | + ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
123 | + SEP="|" | ||
124 | + done | ||
125 | + OURCYGPATTERN="(^($ROOTDIRS))" | ||
126 | + # Add a user-defined pattern to the cygpath arguments | ||
127 | + if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
128 | + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
129 | + fi | ||
130 | + # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
131 | + i=0 | ||
132 | + for arg in "$@" ; do | ||
133 | + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
134 | + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
135 | + | ||
136 | + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
137 | + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
138 | + else | ||
139 | + eval `echo args$i`="\"$arg\"" | ||
140 | + fi | ||
141 | + i=$((i+1)) | ||
142 | + done | ||
143 | + case $i in | ||
144 | + (0) set -- ;; | ||
145 | + (1) set -- "$args0" ;; | ||
146 | + (2) set -- "$args0" "$args1" ;; | ||
147 | + (3) set -- "$args0" "$args1" "$args2" ;; | ||
148 | + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
149 | + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
150 | + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
151 | + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
152 | + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
153 | + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
154 | + esac | ||
155 | +fi | ||
156 | + | ||
157 | +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules | ||
158 | +function splitJvmOpts() { | ||
159 | + JVM_OPTS=("$@") | ||
160 | +} | ||
161 | +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS | ||
162 | +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" | ||
163 | + | ||
164 | +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" |
demo/android/gradlew.bat
0 → 100644
1 | +++ a/demo/android/gradlew.bat | ||
1 | +@if "%DEBUG%" == "" @echo off | ||
2 | +@rem ########################################################################## | ||
3 | +@rem | ||
4 | +@rem Gradle startup script for Windows | ||
5 | +@rem | ||
6 | +@rem ########################################################################## | ||
7 | + | ||
8 | +@rem Set local scope for the variables with windows NT shell | ||
9 | +if "%OS%"=="Windows_NT" setlocal | ||
10 | + | ||
11 | +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
12 | +set DEFAULT_JVM_OPTS= | ||
13 | + | ||
14 | +set DIRNAME=%~dp0 | ||
15 | +if "%DIRNAME%" == "" set DIRNAME=. | ||
16 | +set APP_BASE_NAME=%~n0 | ||
17 | +set APP_HOME=%DIRNAME% | ||
18 | + | ||
19 | +@rem Find java.exe | ||
20 | +if defined JAVA_HOME goto findJavaFromJavaHome | ||
21 | + | ||
22 | +set JAVA_EXE=java.exe | ||
23 | +%JAVA_EXE% -version >NUL 2>&1 | ||
24 | +if "%ERRORLEVEL%" == "0" goto init | ||
25 | + | ||
26 | +echo. | ||
27 | +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
28 | +echo. | ||
29 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
30 | +echo location of your Java installation. | ||
31 | + | ||
32 | +goto fail | ||
33 | + | ||
34 | +:findJavaFromJavaHome | ||
35 | +set JAVA_HOME=%JAVA_HOME:"=% | ||
36 | +set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
37 | + | ||
38 | +if exist "%JAVA_EXE%" goto init | ||
39 | + | ||
40 | +echo. | ||
41 | +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
42 | +echo. | ||
43 | +echo Please set the JAVA_HOME variable in your environment to match the | ||
44 | +echo location of your Java installation. | ||
45 | + | ||
46 | +goto fail | ||
47 | + | ||
48 | +:init | ||
49 | +@rem Get command-line arguments, handling Windowz variants | ||
50 | + | ||
51 | +if not "%OS%" == "Windows_NT" goto win9xME_args | ||
52 | +if "%@eval[2+2]" == "4" goto 4NT_args | ||
53 | + | ||
54 | +:win9xME_args | ||
55 | +@rem Slurp the command line arguments. | ||
56 | +set CMD_LINE_ARGS= | ||
57 | +set _SKIP=2 | ||
58 | + | ||
59 | +:win9xME_args_slurp | ||
60 | +if "x%~1" == "x" goto execute | ||
61 | + | ||
62 | +set CMD_LINE_ARGS=%* | ||
63 | +goto execute | ||
64 | + | ||
65 | +:4NT_args | ||
66 | +@rem Get arguments from the 4NT Shell from JP Software | ||
67 | +set CMD_LINE_ARGS=%$ | ||
68 | + | ||
69 | +:execute | ||
70 | +@rem Setup the command line | ||
71 | + | ||
72 | +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
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 %CMD_LINE_ARGS% | ||
76 | + | ||
77 | +:end | ||
78 | +@rem End local scope for the variables with windows NT shell | ||
79 | +if "%ERRORLEVEL%"=="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 | +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
85 | +exit /b 1 | ||
86 | + | ||
87 | +:mainEnd | ||
88 | +if "%OS%"=="Windows_NT" endlocal | ||
89 | + | ||
90 | +:omega |
demo/android/keystores/BUCK
0 → 100644
demo/android/keystores/debug.keystore.properties
0 → 100644
demo/android/settings.gradle
0 → 100644
demo/app.js
0 → 100644
1 | +++ a/demo/app.js | ||
1 | +import React, { Component } from 'react'; | ||
2 | +import { Alert, StyleSheet, Text, TouchableOpacity, View } from 'react-native'; | ||
3 | +import Orientation from 'react-native-orientation'; | ||
4 | + | ||
5 | +export default class Demo extends Component { | ||
6 | + componentWillMount() { | ||
7 | + const init = Orientation.getInitialOrientation(); | ||
8 | + this.setState({ | ||
9 | + init, | ||
10 | + orientation: init, | ||
11 | + specificOrientation: init, | ||
12 | + }); | ||
13 | + } | ||
14 | + | ||
15 | + componentDidMount() { | ||
16 | + Orientation.addOrientationListener(this._updateOrientation); | ||
17 | + Orientation.addSpecificOrientationListener(this._updateSpecificOrientation); | ||
18 | + } | ||
19 | + | ||
20 | + componentWillUnmount() { | ||
21 | + Orientation.removeOrientationListener(this._updateOrientation); | ||
22 | + Orientation.removeSpecificOrientationListener(this._updateSpecificOrientation); | ||
23 | + } | ||
24 | + | ||
25 | + _getOrientation() { | ||
26 | + Orientation.getOrientation((err, orientation) => { | ||
27 | + Alert.alert(`Orientation is ${orientation}`); | ||
28 | + }); | ||
29 | + } | ||
30 | + | ||
31 | + _getSpecificOrientation() { | ||
32 | + Orientation.getSpecificOrientation((err, orientation) => { | ||
33 | + Alert.alert(`Specific orientation is ${orientation}`); | ||
34 | + }); | ||
35 | + } | ||
36 | + | ||
37 | + _updateOrientation = (orientation) => this.setState({ orientation }); | ||
38 | + _updateSpecificOrientation = (specificOrientation) => this.setState({ specificOrientation }); | ||
39 | + | ||
40 | + render() { | ||
41 | + const { init, orientation, specificOrientation } = this.state; | ||
42 | + | ||
43 | + return ( | ||
44 | + <View style={styles.container}> | ||
45 | + <Text style={styles.welcome}> | ||
46 | + Welcome to React Native Orientation Demo! | ||
47 | + </Text> | ||
48 | + <Text style={styles.instructions}> | ||
49 | + {`Initial Orientation: ${init}`} | ||
50 | + </Text> | ||
51 | + <Text style={styles.instructions}> | ||
52 | + {`Current Orientation: ${orientation}`} | ||
53 | + </Text> | ||
54 | + <Text style={styles.instructions}> | ||
55 | + {`Specific Orientation: ${specificOrientation}`} | ||
56 | + </Text> | ||
57 | + <TouchableOpacity | ||
58 | + onPress={Orientation.unlockAllOrientations} | ||
59 | + style={styles.button} | ||
60 | + > | ||
61 | + <Text style={styles.instructions}> | ||
62 | + Unlock All Orientations | ||
63 | + </Text> | ||
64 | + </TouchableOpacity> | ||
65 | + <TouchableOpacity | ||
66 | + onPress={Orientation.lockToPortrait} | ||
67 | + style={styles.button} | ||
68 | + > | ||
69 | + <Text style={styles.instructions}> | ||
70 | + Lock To Portrait | ||
71 | + </Text> | ||
72 | + </TouchableOpacity> | ||
73 | + <View style={styles.buttonContainer}> | ||
74 | + <TouchableOpacity | ||
75 | + onPress={Orientation.lockToLandscapeLeft} | ||
76 | + style={styles.button} | ||
77 | + > | ||
78 | + <Text style={styles.instructions}> | ||
79 | + Lock To Left | ||
80 | + </Text> | ||
81 | + </TouchableOpacity> | ||
82 | + <TouchableOpacity | ||
83 | + onPress={Orientation.lockToLandscape} | ||
84 | + style={styles.button} | ||
85 | + > | ||
86 | + <Text style={styles.instructions}> | ||
87 | + Lock To Landscape | ||
88 | + </Text> | ||
89 | + </TouchableOpacity> | ||
90 | + <TouchableOpacity | ||
91 | + onPress={Orientation.lockToLandscapeRight} | ||
92 | + style={styles.button} | ||
93 | + > | ||
94 | + <Text style={styles.instructions}> | ||
95 | + Lock To Right | ||
96 | + </Text> | ||
97 | + </TouchableOpacity> | ||
98 | + </View> | ||
99 | + <View style={styles.buttonContainer}> | ||
100 | + <TouchableOpacity | ||
101 | + onPress={this._getOrientation} | ||
102 | + style={styles.button} | ||
103 | + > | ||
104 | + <Text style={styles.instructions}> | ||
105 | + Get Orientation | ||
106 | + </Text> | ||
107 | + </TouchableOpacity> | ||
108 | + <TouchableOpacity | ||
109 | + onPress={this._getSpecificOrientation} | ||
110 | + style={styles.button} | ||
111 | + > | ||
112 | + <Text style={styles.instructions}> | ||
113 | + Get Specific Orientation | ||
114 | + </Text> | ||
115 | + </TouchableOpacity> | ||
116 | + </View> | ||
117 | + </View> | ||
118 | + ); | ||
119 | + } | ||
120 | +} | ||
121 | + | ||
122 | +const styles = StyleSheet.create({ | ||
123 | + container: { | ||
124 | + flex: 1, | ||
125 | + justifyContent: 'center', | ||
126 | + alignItems: 'center', | ||
127 | + backgroundColor: '#F5FCFF', | ||
128 | + }, | ||
129 | + welcome: { | ||
130 | + fontSize: 20, | ||
131 | + textAlign: 'center', | ||
132 | + margin: 10, | ||
133 | + }, | ||
134 | + instructions: { | ||
135 | + textAlign: 'center', | ||
136 | + color: '#333333', | ||
137 | + marginBottom: 5, | ||
138 | + }, | ||
139 | + buttonContainer: { | ||
140 | + flex: 0, | ||
141 | + flexDirection: 'row', | ||
142 | + justifyContent: 'space-around' | ||
143 | + }, | ||
144 | + button: { | ||
145 | + padding: 5, | ||
146 | + margin: 5, | ||
147 | + borderWidth: 1, | ||
148 | + borderColor: 'white', | ||
149 | + borderRadius: 3, | ||
150 | + backgroundColor: 'grey', | ||
151 | + } | ||
152 | +}); |
demo/app.json
0 → 100644
demo/index.android.js
0 → 100644
demo/index.ios.js
0 → 100644
demo/ios/demo-tvOS/Info.plist
0 → 100644
1 | +++ a/demo/ios/demo-tvOS/Info.plist | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>$(EXECUTABLE_NAME)</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>$(PRODUCT_NAME)</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>APPL</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>1</string> | ||
23 | + <key>LSRequiresIPhoneOS</key> | ||
24 | + <true/> | ||
25 | + <key>UILaunchStoryboardName</key> | ||
26 | + <string>LaunchScreen</string> | ||
27 | + <key>UIRequiredDeviceCapabilities</key> | ||
28 | + <array> | ||
29 | + <string>armv7</string> | ||
30 | + </array> | ||
31 | + <key>UISupportedInterfaceOrientations</key> | ||
32 | + <array> | ||
33 | + <string>UIInterfaceOrientationPortrait</string> | ||
34 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
35 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
36 | + </array> | ||
37 | + <key>UIViewControllerBasedStatusBarAppearance</key> | ||
38 | + <false/> | ||
39 | + <key>NSLocationWhenInUseUsageDescription</key> | ||
40 | + <string></string> | ||
41 | + <key>NSAppTransportSecurity</key> | ||
42 | + <!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ --> | ||
43 | + <dict> | ||
44 | + <key>NSExceptionDomains</key> | ||
45 | + <dict> | ||
46 | + <key>localhost</key> | ||
47 | + <dict> | ||
48 | + <key>NSExceptionAllowsInsecureHTTPLoads</key> | ||
49 | + <true/> | ||
50 | + </dict> | ||
51 | + </dict> | ||
52 | + </dict> | ||
53 | +</dict> | ||
54 | +</plist> |
demo/ios/demo-tvOSTests/Info.plist
0 → 100644
1 | +++ a/demo/ios/demo-tvOSTests/Info.plist | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>$(EXECUTABLE_NAME)</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>$(PRODUCT_NAME)</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>BNDL</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>1</string> | ||
23 | +</dict> | ||
24 | +</plist> |
demo/ios/demo.xcodeproj/project.pbxproj
0 → 100644
1 | +++ a/demo/ios/demo.xcodeproj/project.pbxproj | ||
1 | +// !$*UTF8*$! | ||
2 | +{ | ||
3 | + archiveVersion = 1; | ||
4 | + classes = { | ||
5 | + }; | ||
6 | + objectVersion = 46; | ||
7 | + objects = { | ||
8 | +/* Begin PBXBuildFile section */ | ||
9 | + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; | ||
10 | + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; | ||
11 | + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; | ||
12 | + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; | ||
13 | + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; | ||
14 | + 00E356F31AD99517003FC87E /* demoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* demoTests.m */; }; | ||
15 | + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; | ||
16 | + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; | ||
17 | + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; | ||
18 | + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; | ||
19 | + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; | ||
20 | + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||
21 | + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||
22 | + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; | ||
23 | + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; | ||
24 | + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; | ||
25 | + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; | ||
26 | + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; | ||
27 | + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */; }; | ||
28 | + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; }; | ||
29 | + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; }; | ||
30 | + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; }; | ||
31 | + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; }; | ||
32 | + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; }; | ||
33 | + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; | ||
34 | + 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; | ||
35 | + 2DCD954D1E0B4F2C00145EB5 /* demoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* demoTests.m */; }; | ||
36 | + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; | ||
37 | + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; | ||
38 | + 90244AD94B6B401C8131CF46 /* libRCTOrientation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D769AB453724E60A7E54B05 /* libRCTOrientation.a */; }; | ||
39 | +/* End PBXBuildFile section */ | ||
40 | + | ||
41 | +/* Begin PBXContainerItemProxy section */ | ||
42 | + 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { | ||
43 | + isa = PBXContainerItemProxy; | ||
44 | + containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; | ||
45 | + proxyType = 2; | ||
46 | + remoteGlobalIDString = 134814201AA4EA6300B7C361; | ||
47 | + remoteInfo = RCTActionSheet; | ||
48 | + }; | ||
49 | + 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { | ||
50 | + isa = PBXContainerItemProxy; | ||
51 | + containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; | ||
52 | + proxyType = 2; | ||
53 | + remoteGlobalIDString = 134814201AA4EA6300B7C361; | ||
54 | + remoteInfo = RCTGeolocation; | ||
55 | + }; | ||
56 | + 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { | ||
57 | + isa = PBXContainerItemProxy; | ||
58 | + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; | ||
59 | + proxyType = 2; | ||
60 | + remoteGlobalIDString = 58B5115D1A9E6B3D00147676; | ||
61 | + remoteInfo = RCTImage; | ||
62 | + }; | ||
63 | + 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { | ||
64 | + isa = PBXContainerItemProxy; | ||
65 | + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; | ||
66 | + proxyType = 2; | ||
67 | + remoteGlobalIDString = 58B511DB1A9E6C8500147676; | ||
68 | + remoteInfo = RCTNetwork; | ||
69 | + }; | ||
70 | + 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { | ||
71 | + isa = PBXContainerItemProxy; | ||
72 | + containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; | ||
73 | + proxyType = 2; | ||
74 | + remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; | ||
75 | + remoteInfo = RCTVibration; | ||
76 | + }; | ||
77 | + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { | ||
78 | + isa = PBXContainerItemProxy; | ||
79 | + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||
80 | + proxyType = 1; | ||
81 | + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; | ||
82 | + remoteInfo = demo; | ||
83 | + }; | ||
84 | + 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { | ||
85 | + isa = PBXContainerItemProxy; | ||
86 | + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; | ||
87 | + proxyType = 2; | ||
88 | + remoteGlobalIDString = 134814201AA4EA6300B7C361; | ||
89 | + remoteInfo = RCTSettings; | ||
90 | + }; | ||
91 | + 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { | ||
92 | + isa = PBXContainerItemProxy; | ||
93 | + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; | ||
94 | + proxyType = 2; | ||
95 | + remoteGlobalIDString = 3C86DF461ADF2C930047B81A; | ||
96 | + remoteInfo = RCTWebSocket; | ||
97 | + }; | ||
98 | + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { | ||
99 | + isa = PBXContainerItemProxy; | ||
100 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
101 | + proxyType = 2; | ||
102 | + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; | ||
103 | + remoteInfo = React; | ||
104 | + }; | ||
105 | + 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { | ||
106 | + isa = PBXContainerItemProxy; | ||
107 | + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||
108 | + proxyType = 1; | ||
109 | + remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; | ||
110 | + remoteInfo = "demo-tvOS"; | ||
111 | + }; | ||
112 | + 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
113 | + isa = PBXContainerItemProxy; | ||
114 | + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; | ||
115 | + proxyType = 2; | ||
116 | + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; | ||
117 | + remoteInfo = "RCTImage-tvOS"; | ||
118 | + }; | ||
119 | + 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
120 | + isa = PBXContainerItemProxy; | ||
121 | + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; | ||
122 | + proxyType = 2; | ||
123 | + remoteGlobalIDString = 2D2A28471D9B043800D4039D; | ||
124 | + remoteInfo = "RCTLinking-tvOS"; | ||
125 | + }; | ||
126 | + 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
127 | + isa = PBXContainerItemProxy; | ||
128 | + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; | ||
129 | + proxyType = 2; | ||
130 | + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; | ||
131 | + remoteInfo = "RCTNetwork-tvOS"; | ||
132 | + }; | ||
133 | + 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
134 | + isa = PBXContainerItemProxy; | ||
135 | + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; | ||
136 | + proxyType = 2; | ||
137 | + remoteGlobalIDString = 2D2A28611D9B046600D4039D; | ||
138 | + remoteInfo = "RCTSettings-tvOS"; | ||
139 | + }; | ||
140 | + 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
141 | + isa = PBXContainerItemProxy; | ||
142 | + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; | ||
143 | + proxyType = 2; | ||
144 | + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; | ||
145 | + remoteInfo = "RCTText-tvOS"; | ||
146 | + }; | ||
147 | + 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
148 | + isa = PBXContainerItemProxy; | ||
149 | + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; | ||
150 | + proxyType = 2; | ||
151 | + remoteGlobalIDString = 2D2A28881D9B049200D4039D; | ||
152 | + remoteInfo = "RCTWebSocket-tvOS"; | ||
153 | + }; | ||
154 | + 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
155 | + isa = PBXContainerItemProxy; | ||
156 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
157 | + proxyType = 2; | ||
158 | + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; | ||
159 | + remoteInfo = "React-tvOS"; | ||
160 | + }; | ||
161 | + 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
162 | + isa = PBXContainerItemProxy; | ||
163 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
164 | + proxyType = 2; | ||
165 | + remoteGlobalIDString = 3D3C059A1DE3340900C268FA; | ||
166 | + remoteInfo = yoga; | ||
167 | + }; | ||
168 | + 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
169 | + isa = PBXContainerItemProxy; | ||
170 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
171 | + proxyType = 2; | ||
172 | + remoteGlobalIDString = 3D3C06751DE3340C00C268FA; | ||
173 | + remoteInfo = "yoga-tvOS"; | ||
174 | + }; | ||
175 | + 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
176 | + isa = PBXContainerItemProxy; | ||
177 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
178 | + proxyType = 2; | ||
179 | + remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; | ||
180 | + remoteInfo = cxxreact; | ||
181 | + }; | ||
182 | + 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
183 | + isa = PBXContainerItemProxy; | ||
184 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
185 | + proxyType = 2; | ||
186 | + remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; | ||
187 | + remoteInfo = "cxxreact-tvOS"; | ||
188 | + }; | ||
189 | + 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
190 | + isa = PBXContainerItemProxy; | ||
191 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
192 | + proxyType = 2; | ||
193 | + remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; | ||
194 | + remoteInfo = jschelpers; | ||
195 | + }; | ||
196 | + 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { | ||
197 | + isa = PBXContainerItemProxy; | ||
198 | + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
199 | + proxyType = 2; | ||
200 | + remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; | ||
201 | + remoteInfo = "jschelpers-tvOS"; | ||
202 | + }; | ||
203 | + 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { | ||
204 | + isa = PBXContainerItemProxy; | ||
205 | + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; | ||
206 | + proxyType = 2; | ||
207 | + remoteGlobalIDString = 134814201AA4EA6300B7C361; | ||
208 | + remoteInfo = RCTAnimation; | ||
209 | + }; | ||
210 | + 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { | ||
211 | + isa = PBXContainerItemProxy; | ||
212 | + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; | ||
213 | + proxyType = 2; | ||
214 | + remoteGlobalIDString = 2D2A28201D9B03D100D4039D; | ||
215 | + remoteInfo = "RCTAnimation-tvOS"; | ||
216 | + }; | ||
217 | + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { | ||
218 | + isa = PBXContainerItemProxy; | ||
219 | + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; | ||
220 | + proxyType = 2; | ||
221 | + remoteGlobalIDString = 134814201AA4EA6300B7C361; | ||
222 | + remoteInfo = RCTLinking; | ||
223 | + }; | ||
224 | + 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { | ||
225 | + isa = PBXContainerItemProxy; | ||
226 | + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; | ||
227 | + proxyType = 2; | ||
228 | + remoteGlobalIDString = 58B5119B1A9E6C1200147676; | ||
229 | + remoteInfo = RCTText; | ||
230 | + }; | ||
231 | +/* End PBXContainerItemProxy section */ | ||
232 | + | ||
233 | +/* Begin PBXFileReference section */ | ||
234 | + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; }; | ||
235 | + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = "<group>"; }; | ||
236 | + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = "<group>"; }; | ||
237 | + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = "<group>"; }; | ||
238 | + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = "<group>"; }; | ||
239 | + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = "<group>"; }; | ||
240 | + 00E356EE1AD99517003FC87E /* demoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = demoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
241 | + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
242 | + 00E356F21AD99517003FC87E /* demoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = demoTests.m; sourceTree = "<group>"; }; | ||
243 | + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; }; | ||
244 | + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; }; | ||
245 | + 13B07F961A680F5B00A75B9A /* demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = demo.app; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
246 | + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = demo/AppDelegate.h; sourceTree = "<group>"; }; | ||
247 | + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = demo/AppDelegate.m; sourceTree = "<group>"; }; | ||
248 | + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; }; | ||
249 | + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = demo/Images.xcassets; sourceTree = "<group>"; }; | ||
250 | + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = demo/Info.plist; sourceTree = "<group>"; }; | ||
251 | + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = demo/main.m; sourceTree = "<group>"; }; | ||
252 | + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; }; | ||
253 | + 2D02E47B1E0B4A5D006451C7 /* demo-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "demo-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
254 | + 2D02E4901E0B4A5D006451C7 /* demo-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "demo-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
255 | + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; }; | ||
256 | + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; }; | ||
257 | + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; }; | ||
258 | + 237016A574A543CBBDA1DD52 /* RCTOrientation.xcodeproj */ = {isa = PBXFileReference; name = "RCTOrientation.xcodeproj"; path = "../node_modules/react-native-orientation/iOS/RCTOrientation.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; | ||
259 | + 9D769AB453724E60A7E54B05 /* libRCTOrientation.a */ = {isa = PBXFileReference; name = "libRCTOrientation.a"; path = "libRCTOrientation.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; | ||
260 | +/* End PBXFileReference section */ | ||
261 | + | ||
262 | +/* Begin PBXFrameworksBuildPhase section */ | ||
263 | + 00E356EB1AD99517003FC87E /* Frameworks */ = { | ||
264 | + isa = PBXFrameworksBuildPhase; | ||
265 | + buildActionMask = 2147483647; | ||
266 | + files = ( | ||
267 | + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, | ||
268 | + ); | ||
269 | + runOnlyForDeploymentPostprocessing = 0; | ||
270 | + }; | ||
271 | + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { | ||
272 | + isa = PBXFrameworksBuildPhase; | ||
273 | + buildActionMask = 2147483647; | ||
274 | + files = ( | ||
275 | + 146834051AC3E58100842450 /* libReact.a in Frameworks */, | ||
276 | + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, | ||
277 | + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, | ||
278 | + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, | ||
279 | + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, | ||
280 | + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, | ||
281 | + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, | ||
282 | + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, | ||
283 | + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, | ||
284 | + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, | ||
285 | + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, | ||
286 | + 90244AD94B6B401C8131CF46 /* libRCTOrientation.a in Frameworks */, | ||
287 | + ); | ||
288 | + runOnlyForDeploymentPostprocessing = 0; | ||
289 | + }; | ||
290 | + 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { | ||
291 | + isa = PBXFrameworksBuildPhase; | ||
292 | + buildActionMask = 2147483647; | ||
293 | + files = ( | ||
294 | + 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */, | ||
295 | + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */, | ||
296 | + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */, | ||
297 | + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */, | ||
298 | + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */, | ||
299 | + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, | ||
300 | + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, | ||
301 | + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, | ||
302 | + ); | ||
303 | + runOnlyForDeploymentPostprocessing = 0; | ||
304 | + }; | ||
305 | + 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { | ||
306 | + isa = PBXFrameworksBuildPhase; | ||
307 | + buildActionMask = 2147483647; | ||
308 | + files = ( | ||
309 | + ); | ||
310 | + runOnlyForDeploymentPostprocessing = 0; | ||
311 | + }; | ||
312 | +/* End PBXFrameworksBuildPhase section */ | ||
313 | + | ||
314 | +/* Begin PBXGroup section */ | ||
315 | + 00C302A81ABCB8CE00DB3ED1 /* Products */ = { | ||
316 | + isa = PBXGroup; | ||
317 | + children = ( | ||
318 | + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, | ||
319 | + ); | ||
320 | + name = Products; | ||
321 | + sourceTree = "<group>"; | ||
322 | + }; | ||
323 | + 00C302B61ABCB90400DB3ED1 /* Products */ = { | ||
324 | + isa = PBXGroup; | ||
325 | + children = ( | ||
326 | + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, | ||
327 | + ); | ||
328 | + name = Products; | ||
329 | + sourceTree = "<group>"; | ||
330 | + }; | ||
331 | + 00C302BC1ABCB91800DB3ED1 /* Products */ = { | ||
332 | + isa = PBXGroup; | ||
333 | + children = ( | ||
334 | + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, | ||
335 | + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */, | ||
336 | + ); | ||
337 | + name = Products; | ||
338 | + sourceTree = "<group>"; | ||
339 | + }; | ||
340 | + 00C302D41ABCB9D200DB3ED1 /* Products */ = { | ||
341 | + isa = PBXGroup; | ||
342 | + children = ( | ||
343 | + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, | ||
344 | + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */, | ||
345 | + ); | ||
346 | + name = Products; | ||
347 | + sourceTree = "<group>"; | ||
348 | + }; | ||
349 | + 00C302E01ABCB9EE00DB3ED1 /* Products */ = { | ||
350 | + isa = PBXGroup; | ||
351 | + children = ( | ||
352 | + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, | ||
353 | + ); | ||
354 | + name = Products; | ||
355 | + sourceTree = "<group>"; | ||
356 | + }; | ||
357 | + 00E356EF1AD99517003FC87E /* demoTests */ = { | ||
358 | + isa = PBXGroup; | ||
359 | + children = ( | ||
360 | + 00E356F21AD99517003FC87E /* demoTests.m */, | ||
361 | + 00E356F01AD99517003FC87E /* Supporting Files */, | ||
362 | + ); | ||
363 | + path = demoTests; | ||
364 | + sourceTree = "<group>"; | ||
365 | + }; | ||
366 | + 00E356F01AD99517003FC87E /* Supporting Files */ = { | ||
367 | + isa = PBXGroup; | ||
368 | + children = ( | ||
369 | + 00E356F11AD99517003FC87E /* Info.plist */, | ||
370 | + ); | ||
371 | + name = "Supporting Files"; | ||
372 | + sourceTree = "<group>"; | ||
373 | + }; | ||
374 | + 139105B71AF99BAD00B5F7CC /* Products */ = { | ||
375 | + isa = PBXGroup; | ||
376 | + children = ( | ||
377 | + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, | ||
378 | + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */, | ||
379 | + ); | ||
380 | + name = Products; | ||
381 | + sourceTree = "<group>"; | ||
382 | + }; | ||
383 | + 139FDEE71B06529A00C62182 /* Products */ = { | ||
384 | + isa = PBXGroup; | ||
385 | + children = ( | ||
386 | + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, | ||
387 | + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, | ||
388 | + ); | ||
389 | + name = Products; | ||
390 | + sourceTree = "<group>"; | ||
391 | + }; | ||
392 | + 13B07FAE1A68108700A75B9A /* demo */ = { | ||
393 | + isa = PBXGroup; | ||
394 | + children = ( | ||
395 | + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, | ||
396 | + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, | ||
397 | + 13B07FB01A68108700A75B9A /* AppDelegate.m */, | ||
398 | + 13B07FB51A68108700A75B9A /* Images.xcassets */, | ||
399 | + 13B07FB61A68108700A75B9A /* Info.plist */, | ||
400 | + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, | ||
401 | + 13B07FB71A68108700A75B9A /* main.m */, | ||
402 | + ); | ||
403 | + name = demo; | ||
404 | + sourceTree = "<group>"; | ||
405 | + }; | ||
406 | + 146834001AC3E56700842450 /* Products */ = { | ||
407 | + isa = PBXGroup; | ||
408 | + children = ( | ||
409 | + 146834041AC3E56700842450 /* libReact.a */, | ||
410 | + 3DAD3EA31DF850E9000B6D8A /* libReact.a */, | ||
411 | + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */, | ||
412 | + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, | ||
413 | + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, | ||
414 | + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, | ||
415 | + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, | ||
416 | + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, | ||
417 | + ); | ||
418 | + name = Products; | ||
419 | + sourceTree = "<group>"; | ||
420 | + }; | ||
421 | + 5E91572E1DD0AC6500FF2AA8 /* Products */ = { | ||
422 | + isa = PBXGroup; | ||
423 | + children = ( | ||
424 | + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, | ||
425 | + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */, | ||
426 | + ); | ||
427 | + name = Products; | ||
428 | + sourceTree = "<group>"; | ||
429 | + }; | ||
430 | + 78C398B11ACF4ADC00677621 /* Products */ = { | ||
431 | + isa = PBXGroup; | ||
432 | + children = ( | ||
433 | + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, | ||
434 | + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */, | ||
435 | + ); | ||
436 | + name = Products; | ||
437 | + sourceTree = "<group>"; | ||
438 | + }; | ||
439 | + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { | ||
440 | + isa = PBXGroup; | ||
441 | + children = ( | ||
442 | + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, | ||
443 | + 146833FF1AC3E56700842450 /* React.xcodeproj */, | ||
444 | + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, | ||
445 | + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, | ||
446 | + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, | ||
447 | + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, | ||
448 | + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, | ||
449 | + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, | ||
450 | + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, | ||
451 | + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, | ||
452 | + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, | ||
453 | + 237016A574A543CBBDA1DD52 /* RCTOrientation.xcodeproj */, | ||
454 | + ); | ||
455 | + name = Libraries; | ||
456 | + sourceTree = "<group>"; | ||
457 | + }; | ||
458 | + 832341B11AAA6A8300B99B32 /* Products */ = { | ||
459 | + isa = PBXGroup; | ||
460 | + children = ( | ||
461 | + 832341B51AAA6A8300B99B32 /* libRCTText.a */, | ||
462 | + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */, | ||
463 | + ); | ||
464 | + name = Products; | ||
465 | + sourceTree = "<group>"; | ||
466 | + }; | ||
467 | + 83CBB9F61A601CBA00E9B192 = { | ||
468 | + isa = PBXGroup; | ||
469 | + children = ( | ||
470 | + 13B07FAE1A68108700A75B9A /* demo */, | ||
471 | + 832341AE1AAA6A7D00B99B32 /* Libraries */, | ||
472 | + 00E356EF1AD99517003FC87E /* demoTests */, | ||
473 | + 83CBBA001A601CBA00E9B192 /* Products */, | ||
474 | + ); | ||
475 | + indentWidth = 2; | ||
476 | + sourceTree = "<group>"; | ||
477 | + tabWidth = 2; | ||
478 | + }; | ||
479 | + 83CBBA001A601CBA00E9B192 /* Products */ = { | ||
480 | + isa = PBXGroup; | ||
481 | + children = ( | ||
482 | + 13B07F961A680F5B00A75B9A /* demo.app */, | ||
483 | + 00E356EE1AD99517003FC87E /* demoTests.xctest */, | ||
484 | + 2D02E47B1E0B4A5D006451C7 /* demo-tvOS.app */, | ||
485 | + 2D02E4901E0B4A5D006451C7 /* demo-tvOSTests.xctest */, | ||
486 | + ); | ||
487 | + name = Products; | ||
488 | + sourceTree = "<group>"; | ||
489 | + }; | ||
490 | +/* End PBXGroup section */ | ||
491 | + | ||
492 | +/* Begin PBXNativeTarget section */ | ||
493 | + 00E356ED1AD99517003FC87E /* demoTests */ = { | ||
494 | + isa = PBXNativeTarget; | ||
495 | + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "demoTests" */; | ||
496 | + buildPhases = ( | ||
497 | + 00E356EA1AD99517003FC87E /* Sources */, | ||
498 | + 00E356EB1AD99517003FC87E /* Frameworks */, | ||
499 | + 00E356EC1AD99517003FC87E /* Resources */, | ||
500 | + ); | ||
501 | + buildRules = ( | ||
502 | + ); | ||
503 | + dependencies = ( | ||
504 | + 00E356F51AD99517003FC87E /* PBXTargetDependency */, | ||
505 | + ); | ||
506 | + name = demoTests; | ||
507 | + productName = demoTests; | ||
508 | + productReference = 00E356EE1AD99517003FC87E /* demoTests.xctest */; | ||
509 | + productType = "com.apple.product-type.bundle.unit-test"; | ||
510 | + }; | ||
511 | + 13B07F861A680F5B00A75B9A /* demo */ = { | ||
512 | + isa = PBXNativeTarget; | ||
513 | + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "demo" */; | ||
514 | + buildPhases = ( | ||
515 | + 13B07F871A680F5B00A75B9A /* Sources */, | ||
516 | + 13B07F8C1A680F5B00A75B9A /* Frameworks */, | ||
517 | + 13B07F8E1A680F5B00A75B9A /* Resources */, | ||
518 | + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, | ||
519 | + ); | ||
520 | + buildRules = ( | ||
521 | + ); | ||
522 | + dependencies = ( | ||
523 | + ); | ||
524 | + name = demo; | ||
525 | + productName = "Hello World"; | ||
526 | + productReference = 13B07F961A680F5B00A75B9A /* demo.app */; | ||
527 | + productType = "com.apple.product-type.application"; | ||
528 | + }; | ||
529 | + 2D02E47A1E0B4A5D006451C7 /* demo-tvOS */ = { | ||
530 | + isa = PBXNativeTarget; | ||
531 | + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "demo-tvOS" */; | ||
532 | + buildPhases = ( | ||
533 | + 2D02E4771E0B4A5D006451C7 /* Sources */, | ||
534 | + 2D02E4781E0B4A5D006451C7 /* Frameworks */, | ||
535 | + 2D02E4791E0B4A5D006451C7 /* Resources */, | ||
536 | + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, | ||
537 | + ); | ||
538 | + buildRules = ( | ||
539 | + ); | ||
540 | + dependencies = ( | ||
541 | + ); | ||
542 | + name = "demo-tvOS"; | ||
543 | + productName = "demo-tvOS"; | ||
544 | + productReference = 2D02E47B1E0B4A5D006451C7 /* demo-tvOS.app */; | ||
545 | + productType = "com.apple.product-type.application"; | ||
546 | + }; | ||
547 | + 2D02E48F1E0B4A5D006451C7 /* demo-tvOSTests */ = { | ||
548 | + isa = PBXNativeTarget; | ||
549 | + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "demo-tvOSTests" */; | ||
550 | + buildPhases = ( | ||
551 | + 2D02E48C1E0B4A5D006451C7 /* Sources */, | ||
552 | + 2D02E48D1E0B4A5D006451C7 /* Frameworks */, | ||
553 | + 2D02E48E1E0B4A5D006451C7 /* Resources */, | ||
554 | + ); | ||
555 | + buildRules = ( | ||
556 | + ); | ||
557 | + dependencies = ( | ||
558 | + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, | ||
559 | + ); | ||
560 | + name = "demo-tvOSTests"; | ||
561 | + productName = "demo-tvOSTests"; | ||
562 | + productReference = 2D02E4901E0B4A5D006451C7 /* demo-tvOSTests.xctest */; | ||
563 | + productType = "com.apple.product-type.bundle.unit-test"; | ||
564 | + }; | ||
565 | +/* End PBXNativeTarget section */ | ||
566 | + | ||
567 | +/* Begin PBXProject section */ | ||
568 | + 83CBB9F71A601CBA00E9B192 /* Project object */ = { | ||
569 | + isa = PBXProject; | ||
570 | + attributes = { | ||
571 | + LastUpgradeCheck = 610; | ||
572 | + ORGANIZATIONNAME = Facebook; | ||
573 | + TargetAttributes = { | ||
574 | + 00E356ED1AD99517003FC87E = { | ||
575 | + CreatedOnToolsVersion = 6.2; | ||
576 | + TestTargetID = 13B07F861A680F5B00A75B9A; | ||
577 | + }; | ||
578 | + 2D02E47A1E0B4A5D006451C7 = { | ||
579 | + CreatedOnToolsVersion = 8.2.1; | ||
580 | + ProvisioningStyle = Automatic; | ||
581 | + }; | ||
582 | + 2D02E48F1E0B4A5D006451C7 = { | ||
583 | + CreatedOnToolsVersion = 8.2.1; | ||
584 | + ProvisioningStyle = Automatic; | ||
585 | + TestTargetID = 2D02E47A1E0B4A5D006451C7; | ||
586 | + }; | ||
587 | + }; | ||
588 | + }; | ||
589 | + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "demo" */; | ||
590 | + compatibilityVersion = "Xcode 3.2"; | ||
591 | + developmentRegion = English; | ||
592 | + hasScannedForEncodings = 0; | ||
593 | + knownRegions = ( | ||
594 | + en, | ||
595 | + Base, | ||
596 | + ); | ||
597 | + mainGroup = 83CBB9F61A601CBA00E9B192; | ||
598 | + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; | ||
599 | + projectDirPath = ""; | ||
600 | + projectReferences = ( | ||
601 | + { | ||
602 | + ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; | ||
603 | + ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; | ||
604 | + }, | ||
605 | + { | ||
606 | + ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; | ||
607 | + ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; | ||
608 | + }, | ||
609 | + { | ||
610 | + ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; | ||
611 | + ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; | ||
612 | + }, | ||
613 | + { | ||
614 | + ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; | ||
615 | + ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; | ||
616 | + }, | ||
617 | + { | ||
618 | + ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; | ||
619 | + ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; | ||
620 | + }, | ||
621 | + { | ||
622 | + ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; | ||
623 | + ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; | ||
624 | + }, | ||
625 | + { | ||
626 | + ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; | ||
627 | + ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; | ||
628 | + }, | ||
629 | + { | ||
630 | + ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; | ||
631 | + ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; | ||
632 | + }, | ||
633 | + { | ||
634 | + ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; | ||
635 | + ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; | ||
636 | + }, | ||
637 | + { | ||
638 | + ProductGroup = 139FDEE71B06529A00C62182 /* Products */; | ||
639 | + ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; | ||
640 | + }, | ||
641 | + { | ||
642 | + ProductGroup = 146834001AC3E56700842450 /* Products */; | ||
643 | + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; | ||
644 | + }, | ||
645 | + ); | ||
646 | + projectRoot = ""; | ||
647 | + targets = ( | ||
648 | + 13B07F861A680F5B00A75B9A /* demo */, | ||
649 | + 00E356ED1AD99517003FC87E /* demoTests */, | ||
650 | + 2D02E47A1E0B4A5D006451C7 /* demo-tvOS */, | ||
651 | + 2D02E48F1E0B4A5D006451C7 /* demo-tvOSTests */, | ||
652 | + ); | ||
653 | + }; | ||
654 | +/* End PBXProject section */ | ||
655 | + | ||
656 | +/* Begin PBXReferenceProxy section */ | ||
657 | + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { | ||
658 | + isa = PBXReferenceProxy; | ||
659 | + fileType = archive.ar; | ||
660 | + path = libRCTActionSheet.a; | ||
661 | + remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; | ||
662 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
663 | + }; | ||
664 | + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { | ||
665 | + isa = PBXReferenceProxy; | ||
666 | + fileType = archive.ar; | ||
667 | + path = libRCTGeolocation.a; | ||
668 | + remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; | ||
669 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
670 | + }; | ||
671 | + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { | ||
672 | + isa = PBXReferenceProxy; | ||
673 | + fileType = archive.ar; | ||
674 | + path = libRCTImage.a; | ||
675 | + remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; | ||
676 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
677 | + }; | ||
678 | + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { | ||
679 | + isa = PBXReferenceProxy; | ||
680 | + fileType = archive.ar; | ||
681 | + path = libRCTNetwork.a; | ||
682 | + remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; | ||
683 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
684 | + }; | ||
685 | + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { | ||
686 | + isa = PBXReferenceProxy; | ||
687 | + fileType = archive.ar; | ||
688 | + path = libRCTVibration.a; | ||
689 | + remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; | ||
690 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
691 | + }; | ||
692 | + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { | ||
693 | + isa = PBXReferenceProxy; | ||
694 | + fileType = archive.ar; | ||
695 | + path = libRCTSettings.a; | ||
696 | + remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; | ||
697 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
698 | + }; | ||
699 | + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { | ||
700 | + isa = PBXReferenceProxy; | ||
701 | + fileType = archive.ar; | ||
702 | + path = libRCTWebSocket.a; | ||
703 | + remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; | ||
704 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
705 | + }; | ||
706 | + 146834041AC3E56700842450 /* libReact.a */ = { | ||
707 | + isa = PBXReferenceProxy; | ||
708 | + fileType = archive.ar; | ||
709 | + path = libReact.a; | ||
710 | + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; | ||
711 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
712 | + }; | ||
713 | + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { | ||
714 | + isa = PBXReferenceProxy; | ||
715 | + fileType = archive.ar; | ||
716 | + path = "libRCTImage-tvOS.a"; | ||
717 | + remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
718 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
719 | + }; | ||
720 | + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = { | ||
721 | + isa = PBXReferenceProxy; | ||
722 | + fileType = archive.ar; | ||
723 | + path = "libRCTLinking-tvOS.a"; | ||
724 | + remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
725 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
726 | + }; | ||
727 | + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = { | ||
728 | + isa = PBXReferenceProxy; | ||
729 | + fileType = archive.ar; | ||
730 | + path = "libRCTNetwork-tvOS.a"; | ||
731 | + remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
732 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
733 | + }; | ||
734 | + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = { | ||
735 | + isa = PBXReferenceProxy; | ||
736 | + fileType = archive.ar; | ||
737 | + path = "libRCTSettings-tvOS.a"; | ||
738 | + remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
739 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
740 | + }; | ||
741 | + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = { | ||
742 | + isa = PBXReferenceProxy; | ||
743 | + fileType = archive.ar; | ||
744 | + path = "libRCTText-tvOS.a"; | ||
745 | + remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
746 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
747 | + }; | ||
748 | + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = { | ||
749 | + isa = PBXReferenceProxy; | ||
750 | + fileType = archive.ar; | ||
751 | + path = "libRCTWebSocket-tvOS.a"; | ||
752 | + remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
753 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
754 | + }; | ||
755 | + 3DAD3EA31DF850E9000B6D8A /* libReact.a */ = { | ||
756 | + isa = PBXReferenceProxy; | ||
757 | + fileType = archive.ar; | ||
758 | + path = libReact.a; | ||
759 | + remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
760 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
761 | + }; | ||
762 | + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = { | ||
763 | + isa = PBXReferenceProxy; | ||
764 | + fileType = archive.ar; | ||
765 | + path = libyoga.a; | ||
766 | + remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
767 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
768 | + }; | ||
769 | + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = { | ||
770 | + isa = PBXReferenceProxy; | ||
771 | + fileType = archive.ar; | ||
772 | + path = libyoga.a; | ||
773 | + remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
774 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
775 | + }; | ||
776 | + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = { | ||
777 | + isa = PBXReferenceProxy; | ||
778 | + fileType = archive.ar; | ||
779 | + path = libcxxreact.a; | ||
780 | + remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
781 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
782 | + }; | ||
783 | + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = { | ||
784 | + isa = PBXReferenceProxy; | ||
785 | + fileType = archive.ar; | ||
786 | + path = libcxxreact.a; | ||
787 | + remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
788 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
789 | + }; | ||
790 | + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { | ||
791 | + isa = PBXReferenceProxy; | ||
792 | + fileType = archive.ar; | ||
793 | + path = libjschelpers.a; | ||
794 | + remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
795 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
796 | + }; | ||
797 | + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { | ||
798 | + isa = PBXReferenceProxy; | ||
799 | + fileType = archive.ar; | ||
800 | + path = libjschelpers.a; | ||
801 | + remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; | ||
802 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
803 | + }; | ||
804 | + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { | ||
805 | + isa = PBXReferenceProxy; | ||
806 | + fileType = archive.ar; | ||
807 | + path = libRCTAnimation.a; | ||
808 | + remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; | ||
809 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
810 | + }; | ||
811 | + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */ = { | ||
812 | + isa = PBXReferenceProxy; | ||
813 | + fileType = archive.ar; | ||
814 | + path = "libRCTAnimation-tvOS.a"; | ||
815 | + remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; | ||
816 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
817 | + }; | ||
818 | + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { | ||
819 | + isa = PBXReferenceProxy; | ||
820 | + fileType = archive.ar; | ||
821 | + path = libRCTLinking.a; | ||
822 | + remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; | ||
823 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
824 | + }; | ||
825 | + 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { | ||
826 | + isa = PBXReferenceProxy; | ||
827 | + fileType = archive.ar; | ||
828 | + path = libRCTText.a; | ||
829 | + remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; | ||
830 | + sourceTree = BUILT_PRODUCTS_DIR; | ||
831 | + }; | ||
832 | +/* End PBXReferenceProxy section */ | ||
833 | + | ||
834 | +/* Begin PBXResourcesBuildPhase section */ | ||
835 | + 00E356EC1AD99517003FC87E /* Resources */ = { | ||
836 | + isa = PBXResourcesBuildPhase; | ||
837 | + buildActionMask = 2147483647; | ||
838 | + files = ( | ||
839 | + ); | ||
840 | + runOnlyForDeploymentPostprocessing = 0; | ||
841 | + }; | ||
842 | + 13B07F8E1A680F5B00A75B9A /* Resources */ = { | ||
843 | + isa = PBXResourcesBuildPhase; | ||
844 | + buildActionMask = 2147483647; | ||
845 | + files = ( | ||
846 | + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, | ||
847 | + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, | ||
848 | + ); | ||
849 | + runOnlyForDeploymentPostprocessing = 0; | ||
850 | + }; | ||
851 | + 2D02E4791E0B4A5D006451C7 /* Resources */ = { | ||
852 | + isa = PBXResourcesBuildPhase; | ||
853 | + buildActionMask = 2147483647; | ||
854 | + files = ( | ||
855 | + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, | ||
856 | + ); | ||
857 | + runOnlyForDeploymentPostprocessing = 0; | ||
858 | + }; | ||
859 | + 2D02E48E1E0B4A5D006451C7 /* Resources */ = { | ||
860 | + isa = PBXResourcesBuildPhase; | ||
861 | + buildActionMask = 2147483647; | ||
862 | + files = ( | ||
863 | + ); | ||
864 | + runOnlyForDeploymentPostprocessing = 0; | ||
865 | + }; | ||
866 | +/* End PBXResourcesBuildPhase section */ | ||
867 | + | ||
868 | +/* Begin PBXShellScriptBuildPhase section */ | ||
869 | + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { | ||
870 | + isa = PBXShellScriptBuildPhase; | ||
871 | + buildActionMask = 2147483647; | ||
872 | + files = ( | ||
873 | + ); | ||
874 | + inputPaths = ( | ||
875 | + ); | ||
876 | + name = "Bundle React Native code and images"; | ||
877 | + outputPaths = ( | ||
878 | + ); | ||
879 | + runOnlyForDeploymentPostprocessing = 0; | ||
880 | + shellPath = /bin/sh; | ||
881 | + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; | ||
882 | + }; | ||
883 | + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { | ||
884 | + isa = PBXShellScriptBuildPhase; | ||
885 | + buildActionMask = 2147483647; | ||
886 | + files = ( | ||
887 | + ); | ||
888 | + inputPaths = ( | ||
889 | + ); | ||
890 | + name = "Bundle React Native Code And Images"; | ||
891 | + outputPaths = ( | ||
892 | + ); | ||
893 | + runOnlyForDeploymentPostprocessing = 0; | ||
894 | + shellPath = /bin/sh; | ||
895 | + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; | ||
896 | + }; | ||
897 | +/* End PBXShellScriptBuildPhase section */ | ||
898 | + | ||
899 | +/* Begin PBXSourcesBuildPhase section */ | ||
900 | + 00E356EA1AD99517003FC87E /* Sources */ = { | ||
901 | + isa = PBXSourcesBuildPhase; | ||
902 | + buildActionMask = 2147483647; | ||
903 | + files = ( | ||
904 | + 00E356F31AD99517003FC87E /* demoTests.m in Sources */, | ||
905 | + ); | ||
906 | + runOnlyForDeploymentPostprocessing = 0; | ||
907 | + }; | ||
908 | + 13B07F871A680F5B00A75B9A /* Sources */ = { | ||
909 | + isa = PBXSourcesBuildPhase; | ||
910 | + buildActionMask = 2147483647; | ||
911 | + files = ( | ||
912 | + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, | ||
913 | + 13B07FC11A68108700A75B9A /* main.m in Sources */, | ||
914 | + ); | ||
915 | + runOnlyForDeploymentPostprocessing = 0; | ||
916 | + }; | ||
917 | + 2D02E4771E0B4A5D006451C7 /* Sources */ = { | ||
918 | + isa = PBXSourcesBuildPhase; | ||
919 | + buildActionMask = 2147483647; | ||
920 | + files = ( | ||
921 | + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, | ||
922 | + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, | ||
923 | + ); | ||
924 | + runOnlyForDeploymentPostprocessing = 0; | ||
925 | + }; | ||
926 | + 2D02E48C1E0B4A5D006451C7 /* Sources */ = { | ||
927 | + isa = PBXSourcesBuildPhase; | ||
928 | + buildActionMask = 2147483647; | ||
929 | + files = ( | ||
930 | + 2DCD954D1E0B4F2C00145EB5 /* demoTests.m in Sources */, | ||
931 | + ); | ||
932 | + runOnlyForDeploymentPostprocessing = 0; | ||
933 | + }; | ||
934 | +/* End PBXSourcesBuildPhase section */ | ||
935 | + | ||
936 | +/* Begin PBXTargetDependency section */ | ||
937 | + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { | ||
938 | + isa = PBXTargetDependency; | ||
939 | + target = 13B07F861A680F5B00A75B9A /* demo */; | ||
940 | + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; | ||
941 | + }; | ||
942 | + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { | ||
943 | + isa = PBXTargetDependency; | ||
944 | + target = 2D02E47A1E0B4A5D006451C7 /* demo-tvOS */; | ||
945 | + targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; | ||
946 | + }; | ||
947 | +/* End PBXTargetDependency section */ | ||
948 | + | ||
949 | +/* Begin PBXVariantGroup section */ | ||
950 | + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { | ||
951 | + isa = PBXVariantGroup; | ||
952 | + children = ( | ||
953 | + 13B07FB21A68108700A75B9A /* Base */, | ||
954 | + ); | ||
955 | + name = LaunchScreen.xib; | ||
956 | + path = demo; | ||
957 | + sourceTree = "<group>"; | ||
958 | + }; | ||
959 | +/* End PBXVariantGroup section */ | ||
960 | + | ||
961 | +/* Begin XCBuildConfiguration section */ | ||
962 | + 00E356F61AD99517003FC87E /* Debug */ = { | ||
963 | + isa = XCBuildConfiguration; | ||
964 | + buildSettings = { | ||
965 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
966 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
967 | + "DEBUG=1", | ||
968 | + "$(inherited)", | ||
969 | + ); | ||
970 | + INFOPLIST_FILE = demoTests/Info.plist; | ||
971 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
972 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||
973 | + OTHER_LDFLAGS = ( | ||
974 | + "-ObjC", | ||
975 | + "-lc++", | ||
976 | + ); | ||
977 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
978 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo"; | ||
979 | + LIBRARY_SEARCH_PATHS = ( | ||
980 | + "$(inherited)", | ||
981 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
982 | + ); | ||
983 | + HEADER_SEARCH_PATHS = ( | ||
984 | + "$(inherited)", | ||
985 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
986 | + ); | ||
987 | + }; | ||
988 | + name = Debug; | ||
989 | + }; | ||
990 | + 00E356F71AD99517003FC87E /* Release */ = { | ||
991 | + isa = XCBuildConfiguration; | ||
992 | + buildSettings = { | ||
993 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
994 | + COPY_PHASE_STRIP = NO; | ||
995 | + INFOPLIST_FILE = demoTests/Info.plist; | ||
996 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
997 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||
998 | + OTHER_LDFLAGS = ( | ||
999 | + "-ObjC", | ||
1000 | + "-lc++", | ||
1001 | + ); | ||
1002 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1003 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo.app/demo"; | ||
1004 | + LIBRARY_SEARCH_PATHS = ( | ||
1005 | + "$(inherited)", | ||
1006 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
1007 | + ); | ||
1008 | + HEADER_SEARCH_PATHS = ( | ||
1009 | + "$(inherited)", | ||
1010 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
1011 | + ); | ||
1012 | + }; | ||
1013 | + name = Release; | ||
1014 | + }; | ||
1015 | + 13B07F941A680F5B00A75B9A /* Debug */ = { | ||
1016 | + isa = XCBuildConfiguration; | ||
1017 | + buildSettings = { | ||
1018 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
1019 | + CURRENT_PROJECT_VERSION = 1; | ||
1020 | + DEAD_CODE_STRIPPING = NO; | ||
1021 | + INFOPLIST_FILE = demo/Info.plist; | ||
1022 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
1023 | + OTHER_LDFLAGS = ( | ||
1024 | + "$(inherited)", | ||
1025 | + "-ObjC", | ||
1026 | + "-lc++", | ||
1027 | + ); | ||
1028 | + PRODUCT_NAME = demo; | ||
1029 | + VERSIONING_SYSTEM = "apple-generic"; | ||
1030 | + HEADER_SEARCH_PATHS = ( | ||
1031 | + "$(inherited)", | ||
1032 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
1033 | + ); | ||
1034 | + }; | ||
1035 | + name = Debug; | ||
1036 | + }; | ||
1037 | + 13B07F951A680F5B00A75B9A /* Release */ = { | ||
1038 | + isa = XCBuildConfiguration; | ||
1039 | + buildSettings = { | ||
1040 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
1041 | + CURRENT_PROJECT_VERSION = 1; | ||
1042 | + INFOPLIST_FILE = demo/Info.plist; | ||
1043 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
1044 | + OTHER_LDFLAGS = ( | ||
1045 | + "$(inherited)", | ||
1046 | + "-ObjC", | ||
1047 | + "-lc++", | ||
1048 | + ); | ||
1049 | + PRODUCT_NAME = demo; | ||
1050 | + VERSIONING_SYSTEM = "apple-generic"; | ||
1051 | + HEADER_SEARCH_PATHS = ( | ||
1052 | + "$(inherited)", | ||
1053 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
1054 | + ); | ||
1055 | + }; | ||
1056 | + name = Release; | ||
1057 | + }; | ||
1058 | + 2D02E4971E0B4A5E006451C7 /* Debug */ = { | ||
1059 | + isa = XCBuildConfiguration; | ||
1060 | + buildSettings = { | ||
1061 | + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; | ||
1062 | + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | ||
1063 | + CLANG_ANALYZER_NONNULL = YES; | ||
1064 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
1065 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
1066 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
1067 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
1068 | + ENABLE_TESTABILITY = YES; | ||
1069 | + GCC_NO_COMMON_BLOCKS = YES; | ||
1070 | + INFOPLIST_FILE = "demo-tvOS/Info.plist"; | ||
1071 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
1072 | + OTHER_LDFLAGS = ( | ||
1073 | + "-ObjC", | ||
1074 | + "-lc++", | ||
1075 | + ); | ||
1076 | + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.demo-tvOS"; | ||
1077 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1078 | + SDKROOT = appletvos; | ||
1079 | + TARGETED_DEVICE_FAMILY = 3; | ||
1080 | + TVOS_DEPLOYMENT_TARGET = 9.2; | ||
1081 | + LIBRARY_SEARCH_PATHS = ( | ||
1082 | + "$(inherited)", | ||
1083 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
1084 | + ); | ||
1085 | + HEADER_SEARCH_PATHS = ( | ||
1086 | + "$(inherited)", | ||
1087 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
1088 | + ); | ||
1089 | + }; | ||
1090 | + name = Debug; | ||
1091 | + }; | ||
1092 | + 2D02E4981E0B4A5E006451C7 /* Release */ = { | ||
1093 | + isa = XCBuildConfiguration; | ||
1094 | + buildSettings = { | ||
1095 | + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; | ||
1096 | + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; | ||
1097 | + CLANG_ANALYZER_NONNULL = YES; | ||
1098 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
1099 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
1100 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
1101 | + COPY_PHASE_STRIP = NO; | ||
1102 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
1103 | + GCC_NO_COMMON_BLOCKS = YES; | ||
1104 | + INFOPLIST_FILE = "demo-tvOS/Info.plist"; | ||
1105 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
1106 | + OTHER_LDFLAGS = ( | ||
1107 | + "-ObjC", | ||
1108 | + "-lc++", | ||
1109 | + ); | ||
1110 | + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.demo-tvOS"; | ||
1111 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1112 | + SDKROOT = appletvos; | ||
1113 | + TARGETED_DEVICE_FAMILY = 3; | ||
1114 | + TVOS_DEPLOYMENT_TARGET = 9.2; | ||
1115 | + LIBRARY_SEARCH_PATHS = ( | ||
1116 | + "$(inherited)", | ||
1117 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
1118 | + ); | ||
1119 | + HEADER_SEARCH_PATHS = ( | ||
1120 | + "$(inherited)", | ||
1121 | + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", | ||
1122 | + ); | ||
1123 | + }; | ||
1124 | + name = Release; | ||
1125 | + }; | ||
1126 | + 2D02E4991E0B4A5E006451C7 /* Debug */ = { | ||
1127 | + isa = XCBuildConfiguration; | ||
1128 | + buildSettings = { | ||
1129 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
1130 | + CLANG_ANALYZER_NONNULL = YES; | ||
1131 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
1132 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
1133 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
1134 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
1135 | + ENABLE_TESTABILITY = YES; | ||
1136 | + GCC_NO_COMMON_BLOCKS = YES; | ||
1137 | + INFOPLIST_FILE = "demo-tvOSTests/Info.plist"; | ||
1138 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||
1139 | + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.demo-tvOSTests"; | ||
1140 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1141 | + SDKROOT = appletvos; | ||
1142 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS"; | ||
1143 | + TVOS_DEPLOYMENT_TARGET = 10.1; | ||
1144 | + LIBRARY_SEARCH_PATHS = ( | ||
1145 | + "$(inherited)", | ||
1146 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
1147 | + ); | ||
1148 | + }; | ||
1149 | + name = Debug; | ||
1150 | + }; | ||
1151 | + 2D02E49A1E0B4A5E006451C7 /* Release */ = { | ||
1152 | + isa = XCBuildConfiguration; | ||
1153 | + buildSettings = { | ||
1154 | + BUNDLE_LOADER = "$(TEST_HOST)"; | ||
1155 | + CLANG_ANALYZER_NONNULL = YES; | ||
1156 | + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | ||
1157 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
1158 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
1159 | + COPY_PHASE_STRIP = NO; | ||
1160 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
1161 | + GCC_NO_COMMON_BLOCKS = YES; | ||
1162 | + INFOPLIST_FILE = "demo-tvOSTests/Info.plist"; | ||
1163 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; | ||
1164 | + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.demo-tvOSTests"; | ||
1165 | + PRODUCT_NAME = "$(TARGET_NAME)"; | ||
1166 | + SDKROOT = appletvos; | ||
1167 | + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/demo-tvOS.app/demo-tvOS"; | ||
1168 | + TVOS_DEPLOYMENT_TARGET = 10.1; | ||
1169 | + LIBRARY_SEARCH_PATHS = ( | ||
1170 | + "$(inherited)", | ||
1171 | + "\"$(SRCROOT)/$(TARGET_NAME)\"", | ||
1172 | + ); | ||
1173 | + }; | ||
1174 | + name = Release; | ||
1175 | + }; | ||
1176 | + 83CBBA201A601CBA00E9B192 /* Debug */ = { | ||
1177 | + isa = XCBuildConfiguration; | ||
1178 | + buildSettings = { | ||
1179 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
1180 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||
1181 | + CLANG_CXX_LIBRARY = "libc++"; | ||
1182 | + CLANG_ENABLE_MODULES = YES; | ||
1183 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
1184 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
1185 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
1186 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
1187 | + CLANG_WARN_EMPTY_BODY = YES; | ||
1188 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
1189 | + CLANG_WARN_INT_CONVERSION = YES; | ||
1190 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
1191 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
1192 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
1193 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
1194 | + COPY_PHASE_STRIP = NO; | ||
1195 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
1196 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
1197 | + GCC_DYNAMIC_NO_PIC = NO; | ||
1198 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
1199 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
1200 | + "DEBUG=1", | ||
1201 | + "$(inherited)", | ||
1202 | + ); | ||
1203 | + GCC_SYMBOLS_PRIVATE_EXTERN = NO; | ||
1204 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
1205 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
1206 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
1207 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
1208 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
1209 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
1210 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
1211 | + MTL_ENABLE_DEBUG_INFO = YES; | ||
1212 | + ONLY_ACTIVE_ARCH = YES; | ||
1213 | + SDKROOT = iphoneos; | ||
1214 | + }; | ||
1215 | + name = Debug; | ||
1216 | + }; | ||
1217 | + 83CBBA211A601CBA00E9B192 /* Release */ = { | ||
1218 | + isa = XCBuildConfiguration; | ||
1219 | + buildSettings = { | ||
1220 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
1221 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||
1222 | + CLANG_CXX_LIBRARY = "libc++"; | ||
1223 | + CLANG_ENABLE_MODULES = YES; | ||
1224 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
1225 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
1226 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
1227 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
1228 | + CLANG_WARN_EMPTY_BODY = YES; | ||
1229 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
1230 | + CLANG_WARN_INT_CONVERSION = YES; | ||
1231 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
1232 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
1233 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
1234 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
1235 | + COPY_PHASE_STRIP = YES; | ||
1236 | + ENABLE_NS_ASSERTIONS = NO; | ||
1237 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
1238 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
1239 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
1240 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
1241 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
1242 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
1243 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
1244 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
1245 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
1246 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
1247 | + SDKROOT = iphoneos; | ||
1248 | + VALIDATE_PRODUCT = YES; | ||
1249 | + }; | ||
1250 | + name = Release; | ||
1251 | + }; | ||
1252 | +/* End XCBuildConfiguration section */ | ||
1253 | + | ||
1254 | +/* Begin XCConfigurationList section */ | ||
1255 | + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "demoTests" */ = { | ||
1256 | + isa = XCConfigurationList; | ||
1257 | + buildConfigurations = ( | ||
1258 | + 00E356F61AD99517003FC87E /* Debug */, | ||
1259 | + 00E356F71AD99517003FC87E /* Release */, | ||
1260 | + ); | ||
1261 | + defaultConfigurationIsVisible = 0; | ||
1262 | + defaultConfigurationName = Release; | ||
1263 | + }; | ||
1264 | + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "demo" */ = { | ||
1265 | + isa = XCConfigurationList; | ||
1266 | + buildConfigurations = ( | ||
1267 | + 13B07F941A680F5B00A75B9A /* Debug */, | ||
1268 | + 13B07F951A680F5B00A75B9A /* Release */, | ||
1269 | + ); | ||
1270 | + defaultConfigurationIsVisible = 0; | ||
1271 | + defaultConfigurationName = Release; | ||
1272 | + }; | ||
1273 | + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "demo-tvOS" */ = { | ||
1274 | + isa = XCConfigurationList; | ||
1275 | + buildConfigurations = ( | ||
1276 | + 2D02E4971E0B4A5E006451C7 /* Debug */, | ||
1277 | + 2D02E4981E0B4A5E006451C7 /* Release */, | ||
1278 | + ); | ||
1279 | + defaultConfigurationIsVisible = 0; | ||
1280 | + defaultConfigurationName = Release; | ||
1281 | + }; | ||
1282 | + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "demo-tvOSTests" */ = { | ||
1283 | + isa = XCConfigurationList; | ||
1284 | + buildConfigurations = ( | ||
1285 | + 2D02E4991E0B4A5E006451C7 /* Debug */, | ||
1286 | + 2D02E49A1E0B4A5E006451C7 /* Release */, | ||
1287 | + ); | ||
1288 | + defaultConfigurationIsVisible = 0; | ||
1289 | + defaultConfigurationName = Release; | ||
1290 | + }; | ||
1291 | + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "demo" */ = { | ||
1292 | + isa = XCConfigurationList; | ||
1293 | + buildConfigurations = ( | ||
1294 | + 83CBBA201A601CBA00E9B192 /* Debug */, | ||
1295 | + 83CBBA211A601CBA00E9B192 /* Release */, | ||
1296 | + ); | ||
1297 | + defaultConfigurationIsVisible = 0; | ||
1298 | + defaultConfigurationName = Release; | ||
1299 | + }; | ||
1300 | +/* End XCConfigurationList section */ | ||
1301 | + }; | ||
1302 | + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; | ||
1303 | +} |
demo/ios/demo.xcodeproj/xcshareddata/xcschemes/demo-tvOS.xcscheme
0 → 100644
1 | +++ a/demo/ios/demo.xcodeproj/xcshareddata/xcschemes/demo-tvOS.xcscheme | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Scheme | ||
3 | + LastUpgradeVersion = "0820" | ||
4 | + version = "1.3"> | ||
5 | + <BuildAction | ||
6 | + parallelizeBuildables = "NO" | ||
7 | + buildImplicitDependencies = "YES"> | ||
8 | + <BuildActionEntries> | ||
9 | + <BuildActionEntry | ||
10 | + buildForTesting = "YES" | ||
11 | + buildForRunning = "YES" | ||
12 | + buildForProfiling = "YES" | ||
13 | + buildForArchiving = "YES" | ||
14 | + buildForAnalyzing = "YES"> | ||
15 | + <BuildableReference | ||
16 | + BuildableIdentifier = "primary" | ||
17 | + BlueprintIdentifier = "2D2A28121D9B038B00D4039D" | ||
18 | + BuildableName = "libReact.a" | ||
19 | + BlueprintName = "React-tvOS" | ||
20 | + ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj"> | ||
21 | + </BuildableReference> | ||
22 | + </BuildActionEntry> | ||
23 | + <BuildActionEntry | ||
24 | + buildForTesting = "YES" | ||
25 | + buildForRunning = "YES" | ||
26 | + buildForProfiling = "YES" | ||
27 | + buildForArchiving = "YES" | ||
28 | + buildForAnalyzing = "YES"> | ||
29 | + <BuildableReference | ||
30 | + BuildableIdentifier = "primary" | ||
31 | + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||
32 | + BuildableName = "demo-tvOS.app" | ||
33 | + BlueprintName = "demo-tvOS" | ||
34 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
35 | + </BuildableReference> | ||
36 | + </BuildActionEntry> | ||
37 | + <BuildActionEntry | ||
38 | + buildForTesting = "YES" | ||
39 | + buildForRunning = "YES" | ||
40 | + buildForProfiling = "NO" | ||
41 | + buildForArchiving = "NO" | ||
42 | + buildForAnalyzing = "YES"> | ||
43 | + <BuildableReference | ||
44 | + BuildableIdentifier = "primary" | ||
45 | + BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" | ||
46 | + BuildableName = "demo-tvOSTests.xctest" | ||
47 | + BlueprintName = "demo-tvOSTests" | ||
48 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
49 | + </BuildableReference> | ||
50 | + </BuildActionEntry> | ||
51 | + </BuildActionEntries> | ||
52 | + </BuildAction> | ||
53 | + <TestAction | ||
54 | + buildConfiguration = "Debug" | ||
55 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
56 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
57 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
58 | + <Testables> | ||
59 | + <TestableReference | ||
60 | + skipped = "NO"> | ||
61 | + <BuildableReference | ||
62 | + BuildableIdentifier = "primary" | ||
63 | + BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" | ||
64 | + BuildableName = "demo-tvOSTests.xctest" | ||
65 | + BlueprintName = "demo-tvOSTests" | ||
66 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
67 | + </BuildableReference> | ||
68 | + </TestableReference> | ||
69 | + </Testables> | ||
70 | + <MacroExpansion> | ||
71 | + <BuildableReference | ||
72 | + BuildableIdentifier = "primary" | ||
73 | + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||
74 | + BuildableName = "demo-tvOS.app" | ||
75 | + BlueprintName = "demo-tvOS" | ||
76 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
77 | + </BuildableReference> | ||
78 | + </MacroExpansion> | ||
79 | + <AdditionalOptions> | ||
80 | + </AdditionalOptions> | ||
81 | + </TestAction> | ||
82 | + <LaunchAction | ||
83 | + buildConfiguration = "Debug" | ||
84 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
85 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
86 | + launchStyle = "0" | ||
87 | + useCustomWorkingDirectory = "NO" | ||
88 | + ignoresPersistentStateOnLaunch = "NO" | ||
89 | + debugDocumentVersioning = "YES" | ||
90 | + debugServiceExtension = "internal" | ||
91 | + allowLocationSimulation = "YES"> | ||
92 | + <BuildableProductRunnable | ||
93 | + runnableDebuggingMode = "0"> | ||
94 | + <BuildableReference | ||
95 | + BuildableIdentifier = "primary" | ||
96 | + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||
97 | + BuildableName = "demo-tvOS.app" | ||
98 | + BlueprintName = "demo-tvOS" | ||
99 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
100 | + </BuildableReference> | ||
101 | + </BuildableProductRunnable> | ||
102 | + <AdditionalOptions> | ||
103 | + </AdditionalOptions> | ||
104 | + </LaunchAction> | ||
105 | + <ProfileAction | ||
106 | + buildConfiguration = "Release" | ||
107 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
108 | + savedToolIdentifier = "" | ||
109 | + useCustomWorkingDirectory = "NO" | ||
110 | + debugDocumentVersioning = "YES"> | ||
111 | + <BuildableProductRunnable | ||
112 | + runnableDebuggingMode = "0"> | ||
113 | + <BuildableReference | ||
114 | + BuildableIdentifier = "primary" | ||
115 | + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | ||
116 | + BuildableName = "demo-tvOS.app" | ||
117 | + BlueprintName = "demo-tvOS" | ||
118 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
119 | + </BuildableReference> | ||
120 | + </BuildableProductRunnable> | ||
121 | + </ProfileAction> | ||
122 | + <AnalyzeAction | ||
123 | + buildConfiguration = "Debug"> | ||
124 | + </AnalyzeAction> | ||
125 | + <ArchiveAction | ||
126 | + buildConfiguration = "Release" | ||
127 | + revealArchiveInOrganizer = "YES"> | ||
128 | + </ArchiveAction> | ||
129 | +</Scheme> |
demo/ios/demo.xcodeproj/xcshareddata/xcschemes/demo.xcscheme
0 → 100644
1 | +++ a/demo/ios/demo.xcodeproj/xcshareddata/xcschemes/demo.xcscheme | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<Scheme | ||
3 | + LastUpgradeVersion = "0620" | ||
4 | + version = "1.3"> | ||
5 | + <BuildAction | ||
6 | + parallelizeBuildables = "NO" | ||
7 | + buildImplicitDependencies = "YES"> | ||
8 | + <BuildActionEntries> | ||
9 | + <BuildActionEntry | ||
10 | + buildForTesting = "YES" | ||
11 | + buildForRunning = "YES" | ||
12 | + buildForProfiling = "YES" | ||
13 | + buildForArchiving = "YES" | ||
14 | + buildForAnalyzing = "YES"> | ||
15 | + <BuildableReference | ||
16 | + BuildableIdentifier = "primary" | ||
17 | + BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192" | ||
18 | + BuildableName = "libReact.a" | ||
19 | + BlueprintName = "React" | ||
20 | + ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj"> | ||
21 | + </BuildableReference> | ||
22 | + </BuildActionEntry> | ||
23 | + <BuildActionEntry | ||
24 | + buildForTesting = "YES" | ||
25 | + buildForRunning = "YES" | ||
26 | + buildForProfiling = "YES" | ||
27 | + buildForArchiving = "YES" | ||
28 | + buildForAnalyzing = "YES"> | ||
29 | + <BuildableReference | ||
30 | + BuildableIdentifier = "primary" | ||
31 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
32 | + BuildableName = "demo.app" | ||
33 | + BlueprintName = "demo" | ||
34 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
35 | + </BuildableReference> | ||
36 | + </BuildActionEntry> | ||
37 | + <BuildActionEntry | ||
38 | + buildForTesting = "YES" | ||
39 | + buildForRunning = "YES" | ||
40 | + buildForProfiling = "NO" | ||
41 | + buildForArchiving = "NO" | ||
42 | + buildForAnalyzing = "YES"> | ||
43 | + <BuildableReference | ||
44 | + BuildableIdentifier = "primary" | ||
45 | + BlueprintIdentifier = "00E356ED1AD99517003FC87E" | ||
46 | + BuildableName = "demoTests.xctest" | ||
47 | + BlueprintName = "demoTests" | ||
48 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
49 | + </BuildableReference> | ||
50 | + </BuildActionEntry> | ||
51 | + </BuildActionEntries> | ||
52 | + </BuildAction> | ||
53 | + <TestAction | ||
54 | + buildConfiguration = "Debug" | ||
55 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
56 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
57 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
58 | + <Testables> | ||
59 | + <TestableReference | ||
60 | + skipped = "NO"> | ||
61 | + <BuildableReference | ||
62 | + BuildableIdentifier = "primary" | ||
63 | + BlueprintIdentifier = "00E356ED1AD99517003FC87E" | ||
64 | + BuildableName = "demoTests.xctest" | ||
65 | + BlueprintName = "demoTests" | ||
66 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
67 | + </BuildableReference> | ||
68 | + </TestableReference> | ||
69 | + </Testables> | ||
70 | + <MacroExpansion> | ||
71 | + <BuildableReference | ||
72 | + BuildableIdentifier = "primary" | ||
73 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
74 | + BuildableName = "demo.app" | ||
75 | + BlueprintName = "demo" | ||
76 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
77 | + </BuildableReference> | ||
78 | + </MacroExpansion> | ||
79 | + <AdditionalOptions> | ||
80 | + </AdditionalOptions> | ||
81 | + </TestAction> | ||
82 | + <LaunchAction | ||
83 | + buildConfiguration = "Debug" | ||
84 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
85 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
86 | + launchStyle = "0" | ||
87 | + useCustomWorkingDirectory = "NO" | ||
88 | + ignoresPersistentStateOnLaunch = "NO" | ||
89 | + debugDocumentVersioning = "YES" | ||
90 | + debugServiceExtension = "internal" | ||
91 | + allowLocationSimulation = "YES"> | ||
92 | + <BuildableProductRunnable | ||
93 | + runnableDebuggingMode = "0"> | ||
94 | + <BuildableReference | ||
95 | + BuildableIdentifier = "primary" | ||
96 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
97 | + BuildableName = "demo.app" | ||
98 | + BlueprintName = "demo" | ||
99 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
100 | + </BuildableReference> | ||
101 | + </BuildableProductRunnable> | ||
102 | + <AdditionalOptions> | ||
103 | + </AdditionalOptions> | ||
104 | + </LaunchAction> | ||
105 | + <ProfileAction | ||
106 | + buildConfiguration = "Release" | ||
107 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
108 | + savedToolIdentifier = "" | ||
109 | + useCustomWorkingDirectory = "NO" | ||
110 | + debugDocumentVersioning = "YES"> | ||
111 | + <BuildableProductRunnable | ||
112 | + runnableDebuggingMode = "0"> | ||
113 | + <BuildableReference | ||
114 | + BuildableIdentifier = "primary" | ||
115 | + BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | ||
116 | + BuildableName = "demo.app" | ||
117 | + BlueprintName = "demo" | ||
118 | + ReferencedContainer = "container:demo.xcodeproj"> | ||
119 | + </BuildableReference> | ||
120 | + </BuildableProductRunnable> | ||
121 | + </ProfileAction> | ||
122 | + <AnalyzeAction | ||
123 | + buildConfiguration = "Debug"> | ||
124 | + </AnalyzeAction> | ||
125 | + <ArchiveAction | ||
126 | + buildConfiguration = "Release" | ||
127 | + revealArchiveInOrganizer = "YES"> | ||
128 | + </ArchiveAction> | ||
129 | +</Scheme> |
demo/ios/demo/AppDelegate.h
0 → 100644
1 | +++ a/demo/ios/demo/AppDelegate.h | ||
1 | +/** | ||
2 | + * Copyright (c) 2015-present, Facebook, Inc. | ||
3 | + * All rights reserved. | ||
4 | + * | ||
5 | + * This source code is licensed under the BSD-style license found in the | ||
6 | + * LICENSE file in the root directory of this source tree. An additional grant | ||
7 | + * of patent rights can be found in the PATENTS file in the same directory. | ||
8 | + */ | ||
9 | + | ||
10 | +#import <UIKit/UIKit.h> | ||
11 | + | ||
12 | +@interface AppDelegate : UIResponder <UIApplicationDelegate> | ||
13 | + | ||
14 | +@property (nonatomic, strong) UIWindow *window; | ||
15 | + | ||
16 | +@end |
demo/ios/demo/AppDelegate.m
0 → 100644
1 | +++ a/demo/ios/demo/AppDelegate.m | ||
1 | +/** | ||
2 | + * Copyright (c) 2015-present, Facebook, Inc. | ||
3 | + * All rights reserved. | ||
4 | + * | ||
5 | + * This source code is licensed under the BSD-style license found in the | ||
6 | + * LICENSE file in the root directory of this source tree. An additional grant | ||
7 | + * of patent rights can be found in the PATENTS file in the same directory. | ||
8 | + */ | ||
9 | + | ||
10 | +#import "AppDelegate.h" | ||
11 | +#import "Orientation.h" | ||
12 | + | ||
13 | +#import <React/RCTBundleURLProvider.h> | ||
14 | +#import <React/RCTRootView.h> | ||
15 | + | ||
16 | +@implementation AppDelegate | ||
17 | + | ||
18 | +- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { | ||
19 | + return [Orientation getOrientation]; | ||
20 | +} | ||
21 | + | ||
22 | +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||
23 | +{ | ||
24 | + NSURL *jsCodeLocation; | ||
25 | + | ||
26 | + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; | ||
27 | + | ||
28 | + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation | ||
29 | + moduleName:@"demo" | ||
30 | + initialProperties:nil | ||
31 | + launchOptions:launchOptions]; | ||
32 | + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; | ||
33 | + | ||
34 | + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; | ||
35 | + UIViewController *rootViewController = [UIViewController new]; | ||
36 | + rootViewController.view = rootView; | ||
37 | + self.window.rootViewController = rootViewController; | ||
38 | + [self.window makeKeyAndVisible]; | ||
39 | + return YES; | ||
40 | +} | ||
41 | + | ||
42 | +@end |
demo/ios/demo/Base.lproj/LaunchScreen.xib
0 → 100644
1 | +++ a/demo/ios/demo/Base.lproj/LaunchScreen.xib | ||
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES"> | ||
3 | + <dependencies> | ||
4 | + <deployment identifier="iOS"/> | ||
5 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/> | ||
6 | + <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> | ||
7 | + </dependencies> | ||
8 | + <objects> | ||
9 | + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> | ||
10 | + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> | ||
11 | + <view contentMode="scaleToFill" id="iN0-l3-epB"> | ||
12 | + <rect key="frame" x="0.0" y="0.0" width="480" height="480"/> | ||
13 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
14 | + <subviews> | ||
15 | + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye"> | ||
16 | + <rect key="frame" x="20" y="439" width="441" height="21"/> | ||
17 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
18 | + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | ||
19 | + <nil key="highlightedColor"/> | ||
20 | + </label> | ||
21 | + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="demo" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX"> | ||
22 | + <rect key="frame" x="20" y="140" width="441" height="43"/> | ||
23 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | ||
24 | + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | ||
25 | + <nil key="highlightedColor"/> | ||
26 | + </label> | ||
27 | + </subviews> | ||
28 | + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> | ||
29 | + <constraints> | ||
30 | + <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/> | ||
31 | + <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/> | ||
32 | + <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/> | ||
33 | + <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/> | ||
34 | + <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/> | ||
35 | + <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/> | ||
36 | + </constraints> | ||
37 | + <nil key="simulatedStatusBarMetrics"/> | ||
38 | + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> | ||
39 | + <point key="canvasLocation" x="548" y="455"/> | ||
40 | + </view> | ||
41 | + </objects> | ||
42 | +</document> |
demo/ios/demo/Images.xcassets/AppIcon.appiconset/Contents.json
0 → 100644
1 | +++ a/demo/ios/demo/Images.xcassets/AppIcon.appiconset/Contents.json | ||
1 | +{ | ||
2 | + "images" : [ | ||
3 | + { | ||
4 | + "idiom" : "iphone", | ||
5 | + "size" : "29x29", | ||
6 | + "scale" : "2x" | ||
7 | + }, | ||
8 | + { | ||
9 | + "idiom" : "iphone", | ||
10 | + "size" : "29x29", | ||
11 | + "scale" : "3x" | ||
12 | + }, | ||
13 | + { | ||
14 | + "idiom" : "iphone", | ||
15 | + "size" : "40x40", | ||
16 | + "scale" : "2x" | ||
17 | + }, | ||
18 | + { | ||
19 | + "idiom" : "iphone", | ||
20 | + "size" : "40x40", | ||
21 | + "scale" : "3x" | ||
22 | + }, | ||
23 | + { | ||
24 | + "idiom" : "iphone", | ||
25 | + "size" : "60x60", | ||
26 | + "scale" : "2x" | ||
27 | + }, | ||
28 | + { | ||
29 | + "idiom" : "iphone", | ||
30 | + "size" : "60x60", | ||
31 | + "scale" : "3x" | ||
32 | + } | ||
33 | + ], | ||
34 | + "info" : { | ||
35 | + "version" : 1, | ||
36 | + "author" : "xcode" | ||
37 | + } | ||
38 | +} | ||
0 | \ No newline at end of file | 39 | \ No newline at end of file |
demo/ios/demo/Info.plist
0 → 100644
1 | +++ a/demo/ios/demo/Info.plist | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleDisplayName</key> | ||
8 | + <string>demo</string> | ||
9 | + <key>CFBundleExecutable</key> | ||
10 | + <string>$(EXECUTABLE_NAME)</string> | ||
11 | + <key>CFBundleIdentifier</key> | ||
12 | + <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> | ||
13 | + <key>CFBundleInfoDictionaryVersion</key> | ||
14 | + <string>6.0</string> | ||
15 | + <key>CFBundleName</key> | ||
16 | + <string>$(PRODUCT_NAME)</string> | ||
17 | + <key>CFBundlePackageType</key> | ||
18 | + <string>APPL</string> | ||
19 | + <key>CFBundleShortVersionString</key> | ||
20 | + <string>1.0</string> | ||
21 | + <key>CFBundleSignature</key> | ||
22 | + <string>????</string> | ||
23 | + <key>CFBundleVersion</key> | ||
24 | + <string>1</string> | ||
25 | + <key>LSRequiresIPhoneOS</key> | ||
26 | + <true/> | ||
27 | + <key>UILaunchStoryboardName</key> | ||
28 | + <string>LaunchScreen</string> | ||
29 | + <key>UIRequiredDeviceCapabilities</key> | ||
30 | + <array> | ||
31 | + <string>armv7</string> | ||
32 | + </array> | ||
33 | + <key>UISupportedInterfaceOrientations</key> | ||
34 | + <array> | ||
35 | + <string>UIInterfaceOrientationPortrait</string> | ||
36 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
37 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
38 | + </array> | ||
39 | + <key>UIViewControllerBasedStatusBarAppearance</key> | ||
40 | + <false/> | ||
41 | + <key>NSLocationWhenInUseUsageDescription</key> | ||
42 | + <string></string> | ||
43 | + <key>NSAppTransportSecurity</key> | ||
44 | + <!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ --> | ||
45 | + <dict> | ||
46 | + <key>NSExceptionDomains</key> | ||
47 | + <dict> | ||
48 | + <key>localhost</key> | ||
49 | + <dict> | ||
50 | + <key>NSExceptionAllowsInsecureHTTPLoads</key> | ||
51 | + <true/> | ||
52 | + </dict> | ||
53 | + </dict> | ||
54 | + </dict> | ||
55 | +</dict> | ||
56 | +</plist> |
demo/ios/demo/main.m
0 → 100644
1 | +++ a/demo/ios/demo/main.m | ||
1 | +/** | ||
2 | + * Copyright (c) 2015-present, Facebook, Inc. | ||
3 | + * All rights reserved. | ||
4 | + * | ||
5 | + * This source code is licensed under the BSD-style license found in the | ||
6 | + * LICENSE file in the root directory of this source tree. An additional grant | ||
7 | + * of patent rights can be found in the PATENTS file in the same directory. | ||
8 | + */ | ||
9 | + | ||
10 | +#import <UIKit/UIKit.h> | ||
11 | + | ||
12 | +#import "AppDelegate.h" | ||
13 | + | ||
14 | +int main(int argc, char * argv[]) { | ||
15 | + @autoreleasepool { | ||
16 | + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); | ||
17 | + } | ||
18 | +} |
demo/ios/demoTests/Info.plist
0 → 100644
1 | +++ a/demo/ios/demoTests/Info.plist | ||
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
3 | +<plist version="1.0"> | ||
4 | +<dict> | ||
5 | + <key>CFBundleDevelopmentRegion</key> | ||
6 | + <string>en</string> | ||
7 | + <key>CFBundleExecutable</key> | ||
8 | + <string>$(EXECUTABLE_NAME)</string> | ||
9 | + <key>CFBundleIdentifier</key> | ||
10 | + <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string> | ||
11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
12 | + <string>6.0</string> | ||
13 | + <key>CFBundleName</key> | ||
14 | + <string>$(PRODUCT_NAME)</string> | ||
15 | + <key>CFBundlePackageType</key> | ||
16 | + <string>BNDL</string> | ||
17 | + <key>CFBundleShortVersionString</key> | ||
18 | + <string>1.0</string> | ||
19 | + <key>CFBundleSignature</key> | ||
20 | + <string>????</string> | ||
21 | + <key>CFBundleVersion</key> | ||
22 | + <string>1</string> | ||
23 | +</dict> | ||
24 | +</plist> |
demo/ios/demoTests/demoTests.m
0 → 100644
1 | +++ a/demo/ios/demoTests/demoTests.m | ||
1 | +/** | ||
2 | + * Copyright (c) 2015-present, Facebook, Inc. | ||
3 | + * All rights reserved. | ||
4 | + * | ||
5 | + * This source code is licensed under the BSD-style license found in the | ||
6 | + * LICENSE file in the root directory of this source tree. An additional grant | ||
7 | + * of patent rights can be found in the PATENTS file in the same directory. | ||
8 | + */ | ||
9 | + | ||
10 | +#import <UIKit/UIKit.h> | ||
11 | +#import <XCTest/XCTest.h> | ||
12 | + | ||
13 | +#import <React/RCTLog.h> | ||
14 | +#import <React/RCTRootView.h> | ||
15 | + | ||
16 | +#define TIMEOUT_SECONDS 600 | ||
17 | +#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" | ||
18 | + | ||
19 | +@interface demoTests : XCTestCase | ||
20 | + | ||
21 | +@end | ||
22 | + | ||
23 | +@implementation demoTests | ||
24 | + | ||
25 | +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test | ||
26 | +{ | ||
27 | + if (test(view)) { | ||
28 | + return YES; | ||
29 | + } | ||
30 | + for (UIView *subview in [view subviews]) { | ||
31 | + if ([self findSubviewInView:subview matching:test]) { | ||
32 | + return YES; | ||
33 | + } | ||
34 | + } | ||
35 | + return NO; | ||
36 | +} | ||
37 | + | ||
38 | +- (void)testRendersWelcomeScreen | ||
39 | +{ | ||
40 | + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; | ||
41 | + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; | ||
42 | + BOOL foundElement = NO; | ||
43 | + | ||
44 | + __block NSString *redboxError = nil; | ||
45 | + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { | ||
46 | + if (level >= RCTLogLevelError) { | ||
47 | + redboxError = message; | ||
48 | + } | ||
49 | + }); | ||
50 | + | ||
51 | + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { | ||
52 | + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||
53 | + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; | ||
54 | + | ||
55 | + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { | ||
56 | + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { | ||
57 | + return YES; | ||
58 | + } | ||
59 | + return NO; | ||
60 | + }]; | ||
61 | + } | ||
62 | + | ||
63 | + RCTSetLogFunction(RCTDefaultLogFunction); | ||
64 | + | ||
65 | + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); | ||
66 | + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); | ||
67 | +} | ||
68 | + | ||
69 | + | ||
70 | +@end |