diff --git a/.buckconfig b/.buckconfig new file mode 100644 index 0000000..934256c --- /dev/null +++ b/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/.flowconfig b/.flowconfig index c3edaf9..3b261e2 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,65 +1,58 @@ [ignore] # We fork some components by platform. -.*/*.web.js -.*/*.android.js +.*/*[.]android.js -# Some modules have their own node_modules with overlap -.*/node_modules/node-haste/.* +# Ignore templates with `@flow` in header +.*/local-cli/generator.* -# Ugh -.*/node_modules/babel.* -.*/node_modules/babylon.* -.*/node_modules/invariant.* +# Ignore malformed json +.*/node_modules/y18n/test/.*\.json -# Ignore react and fbjs where there are overlaps, but don't ignore -# anything that react-native relies on -.*/node_modules/fbjs/lib/Map.js -.*/node_modules/fbjs/lib/Promise.js -.*/node_modules/fbjs/lib/fetch.js -.*/node_modules/fbjs/lib/ExecutionEnvironment.js -.*/node_modules/fbjs/lib/isEmpty.js -.*/node_modules/fbjs/lib/crc32.js -.*/node_modules/fbjs/lib/ErrorUtils.js +# Ignore the website subdir +/website/.* -# Flow has a built-in definition for the 'react' module which we prefer to use -# over the currently-untyped source -.*/node_modules/react/react.js -.*/node_modules/react/lib/React.js -.*/node_modules/react/lib/ReactDOM.js +# Ignore BUCK generated dirs +/\.buckd/ -# Ignore commoner tests -.*/node_modules/commoner/test/.* +# Ignore unexpected extra @providesModule +.*/node_modules/commoner/test/source/widget/share.js -# See https://github.com/facebook/flow/issues/442 -.*/react-tools/node_modules/commoner/lib/reader.js - -# Ignore jest -.*/node_modules/jest-cli/.* - -# Ignore Website -.*/website/.* +# Ignore duplicate module providers +# For RN Apps installed via npm, "Libraries" folder is inside node_modules/react-native but in the source repo it is in the root +.*/Libraries/react-native/React.js +.*/Libraries/react-native/ReactNative.js +.*/node_modules/jest-runtime/build/__tests__/.* [include] [libs] node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow +flow/ [options] module.system=haste +esproposal.class_static_fields=enable +esproposal.class_instance_fields=enable + +experimental.strict_type_args=true + munge_underscores=true module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -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\)$' -> 'RelativeImageStub' +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' suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FixMe -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-1]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-1]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-3]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-3]\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy +unsafe.enable_getters_and_setters=true + [version] -0.21.0 +^0.33.0 diff --git a/.gitignore b/.gitignore index 94fc867..eb1535e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ project.xcworkspace # Android/IJ # +*.iml .idea .gradle local.properties @@ -32,3 +33,9 @@ local.properties # node_modules/ npm-debug.log + +# BUCK +buck-out/ +\.buckd/ +android/app/libs +android/keystores/debug.keystore diff --git a/android/app/BUCK b/android/app/BUCK new file mode 100644 index 0000000..70c62fc --- /dev/null +++ b/android/app/BUCK @@ -0,0 +1,66 @@ +import re + +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile) + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = 'all-libs', + exported_deps = lib_deps +) + +android_library( + name = 'app-code', + srcs = glob([ + 'src/main/java/**/*.java', + ]), + deps = [ + ':all-libs', + ':build_config', + ':res', + ], +) + +android_build_config( + name = 'build_config', + package = 'com.mobileapp', +) + +android_resource( + name = 'res', + res = 'src/main/res', + package = 'com.mobileapp', +) + +android_binary( + name = 'app', + package_type = 'debug', + manifest = 'src/main/AndroidManifest.xml', + keystore = '//android/keystores:debug', + deps = [ + ':app-code', + ], +) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0776a92..4275ab3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -9,7 +9,7 @@ import com.android.build.OutputFile * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the * bundle directly from the development server. Below you can see all the possible configurations * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "react.gradle"` line. + * `apply from: "../../node_modules/react-native/react.gradle"` line. * * project.ext.react = [ * // the name of the generated asset file containing your JS bundle @@ -26,7 +26,9 @@ import com.android.build.OutputFile * * // whether to bundle JS and assets in another build variant (if configured). * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property is in the format 'bundleIn${productFlavor}${buildType}' + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' * // bundleInFreeDebug: true, * // bundleInPaidRelease: true, * // bundleInBeta: true, @@ -53,15 +55,20 @@ import com.android.build.OutputFile * // date; if you have any other folders that you want to ignore for performance reasons (gradle * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"] + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"] + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] * ] */ -apply from: "react.gradle" +apply from: "../../node_modules/react-native/react.gradle" /** - * Set this to true to create three separate APKs instead of one: - * - A universal APK that works on all devices + * Set this to true to create two separate APKs instead of one: * - An APK that only works on ARM devices * - An APK that only works on x86 devices * The advantage is the size of the APK is reduced by about 4MB. @@ -91,9 +98,9 @@ android { } splits { abi { - enable enableSeparateBuildPerCPUArchitecture - universalApk false reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK include "armeabi-v7a", "x86" } } @@ -123,5 +130,12 @@ dependencies { compile project(':react-native-vector-icons') compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" - compile "com.facebook.react:react-native:0.20.+" + compile "com.facebook.react:react-native:+" // From node_modules +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' } diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 7d72e46..48361a9 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -26,11 +26,14 @@ # See http://sourceforge.net/p/proguard/bugs/466/ -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip # Do not strip any method/class that is annotated with @DoNotStrip -keep @com.facebook.proguard.annotations.DoNotStrip class * +-keep @com.facebook.common.internal.DoNotStrip class * -keepclassmembers class * { @com.facebook.proguard.annotations.DoNotStrip *; + @com.facebook.common.internal.DoNotStrip *; } -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { @@ -51,9 +54,9 @@ -keepattributes Signature -keepattributes *Annotation* --keep class com.squareup.okhttp.** { *; } --keep interface com.squareup.okhttp.** { *; } --dontwarn com.squareup.okhttp.** +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** # okio @@ -61,7 +64,3 @@ -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** - -# stetho - --dontwarn com.facebook.stetho.** diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index f565f13..8ac6934 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ getPackages() { - return Arrays.asList( - new MainReactPackage(), - new ReactVideoPackage(), - new VectorIconsPackage() - ); - } } diff --git a/android/app/src/main/java/com/mobileapp/MainApplication.java b/android/app/src/main/java/com/mobileapp/MainApplication.java new file mode 100644 index 0000000..8faf2e9 --- /dev/null +++ b/android/app/src/main/java/com/mobileapp/MainApplication.java @@ -0,0 +1,37 @@ +package com.mobileapp; + +import android.app.Application; +import android.util.Log; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.brentvatne.react.ReactVideoPackage; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + protected boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new ReactVideoPackage() + ); + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } +} diff --git a/android/build.gradle b/android/build.gradle index ccdfc4e..fcba4c5 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -16,5 +16,9 @@ allprojects { repositories { mavenLocal() jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } } } diff --git a/android/settings.gradle b/android/settings.gradle index 80a95c0..e890ffa 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,7 +1,7 @@ rootProject.name = 'mobileApp' include ':app' -include ':react-native-vector-icons' -project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') include ':react-native-video' project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android') +include ':react-native-vector-icons' +project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') diff --git a/app/RouterComponent.js b/app/RouterComponent.js index cc57af9..16a53d8 100644 --- a/app/RouterComponent.js +++ b/app/RouterComponent.js @@ -1,13 +1,15 @@ 'use strict'; import React, { + Component, +} from 'react'; +import { AppRegistry, Navigator, - Component, StyleSheet, Text, View } from 'react-native'; -import {Router, Route, Schema, Animations, TabBar} from 'react-native-router-flux'; +import {Router, Schema, Scene} from 'react-native-router-flux'; import ArtistList from './components/artists/ArtistList'; import ArtistShow from './components/artists/ArtistShow'; import Player from './components/player/Player'; @@ -15,15 +17,11 @@ import { Artists } from './mockData'; class RouterComponent extends Component { render() { - return ( - - - - - - + return + + + - ); } } diff --git a/app/components/artists/ArtistList.js b/app/components/artists/ArtistList.js index a328f3f..46ee96d 100644 --- a/app/components/artists/ArtistList.js +++ b/app/components/artists/ArtistList.js @@ -1,7 +1,9 @@ 'use strict'; import React, { - AppRegistry, Component, +} from 'react'; +import { + AppRegistry, StyleSheet, Text, ListView, diff --git a/app/components/artists/ArtistListItem.js b/app/components/artists/ArtistListItem.js index c90b7d9..aa0ac2b 100644 --- a/app/components/artists/ArtistListItem.js +++ b/app/components/artists/ArtistListItem.js @@ -1,7 +1,9 @@ 'use strict'; import React, { - AppRegistry, Component, +} from 'react'; +import { + AppRegistry, StyleSheet, Text, TouchableHighlight, diff --git a/app/components/artists/ArtistShow.js b/app/components/artists/ArtistShow.js index 2458e6b..0bb8def 100644 --- a/app/components/artists/ArtistShow.js +++ b/app/components/artists/ArtistShow.js @@ -1,7 +1,9 @@ 'use strict'; import React, { - AppRegistry, Component, +} from 'react'; +import { + AppRegistry, Dimensions, StyleSheet, Image, @@ -100,7 +102,7 @@ class ArtistShow extends Component { { this.renderSongsList() } - + ); diff --git a/app/components/player/Player.js b/app/components/player/Player.js index e8f450c..2832bb0 100644 --- a/app/components/player/Player.js +++ b/app/components/player/Player.js @@ -1,7 +1,9 @@ 'use strict'; import React, { - AppRegistry, Component, +} from 'react'; +import { + AppRegistry, Image, Dimensions, StyleSheet, @@ -116,23 +118,23 @@ class Player extends Component { let forwardButton; if( !this.state.shuffle && this.state.songIndex + 1 === this.props.songs.length ){ - forwardButton = ; + forwardButton = ; } else { - forwardButton = ; + forwardButton = ; } let volumeButton; if( this.state.muted ){ - volumeButton = ; + volumeButton = ; } else { - volumeButton = ; + volumeButton = ; } let shuffleButton; if( this.state.shuffle ){ - shuffleButton = ; + shuffleButton = ; } else { - shuffleButton = ; + shuffleButton = ; } let image = songPlaying.albumImage ? songPlaying.albumImage : this.props.artist.background; @@ -155,7 +157,7 @@ class Player extends Component { - + { shuffleButton } - + { playButton } { forwardButton } { volumeButton } diff --git a/index.android.js b/index.android.js index 0336b83..e636632 100644 --- a/index.android.js +++ b/index.android.js @@ -10,42 +10,6 @@ import React, { Text, View } from 'react-native'; +import RouterComponent from './app/RouterComponent'; -class mobileApp extends Component { - render() { - return ( - - - Welcome to React Native! - - - To get started, edit index.android.js - - - Shake or press menu button for dev menu - - - ); - } -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#F5FCFF', - }, - welcome: { - fontSize: 20, - textAlign: 'center', - margin: 10, - }, - instructions: { - textAlign: 'center', - color: '#333333', - marginBottom: 5, - }, -}); - -AppRegistry.registerComponent('mobileApp', () => mobileApp); +AppRegistry.registerComponent('mobileApp', () => RouterComponent); diff --git a/ios/mobileApp.xcodeproj/project.pbxproj b/ios/mobileApp.xcodeproj/project.pbxproj index fe807ff..d6bc630 100644 --- a/ios/mobileApp.xcodeproj/project.pbxproj +++ b/ios/mobileApp.xcodeproj/project.pbxproj @@ -5,6 +5,7 @@ }; objectVersion = 46; objects = { + /* Begin PBXBuildFile section */ 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; @@ -12,9 +13,7 @@ 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; 00E356F31AD99517003FC87E /* mobileAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* mobileAppTests.m */; }; - 064090A51F194B9DB551F22C /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3508B6A902454CDC8782255A /* EvilIcons.ttf */; }; - 1158042666DF413F9140763F /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34E52EB656F04B52BB83A557 /* Zocial.ttf */; }; - 119774E228E44E7592F87C4A /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 805C02BE868148AEB4BC922D /* Foundation.ttf */; }; + 0D151E5C06BE451E941623FA /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7922229406AC4CA9867C5EF6 /* SimpleLineIcons.ttf */; }; 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; @@ -22,15 +21,19 @@ 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 440B2646F7AD490294962C5B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E09F58E57C37420CAA778052 /* Ionicons.ttf */; }; - 630EA73116F34A85AC966C4E /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FE71C45D00944796973FD23E /* MaterialIcons.ttf */; }; + 41FEC85B608C413E99004AA7 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F5AB8E4CA3AF47469B44D6B1 /* Octicons.ttf */; }; + 4EEBE9EAC5E941E295F65A6F /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 93432D38CEA343F59181DE65 /* FontAwesome.ttf */; }; + 53EA442DC544429293802F4C /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ACF443E28B404D7098D99E2C /* MaterialIcons.ttf */; }; + 783FC71F37164E2AB4A9321B /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04A3AE9F656249D7AC9E6CAD /* libRNVectorIcons.a */; }; + 79410CCCEB984353BCCC1D3B /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FA24B98D2AB143E4A7B6CB80 /* Zocial.ttf */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - 92AF62C6E0CD4C0BB0201102 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4F2140207B1438EA613F38F /* libRNVectorIcons.a */; }; - B8625E32D4614804A3175AAB /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5C8B1FD829B04A5BA572CBC9 /* FontAwesome.ttf */; }; - BC880391F3324F828F4BB0C3 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 59E5585226FA4571A70368B3 /* Entypo.ttf */; }; - C73DB7DD25A94563A7798C4B /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 05490E19F3CC4860837BD434 /* Octicons.ttf */; }; - 917527DB0F6D419884BEFE21 /* libRCTVideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C67C4A1974409B4C19A80 /* libRCTVideo.a */; }; + A95AF3BB8149474ABCD00CB9 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 676CEC4FFCB54B8DB56F9BFA /* Entypo.ttf */; }; + B39252E6814E4F45BB08B9C2 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 5322613316144C4EAC78B751 /* Ionicons.ttf */; }; + C8C18A37CCB24B3393D420F8 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7E7814434B8041B1AE22FE63 /* EvilIcons.ttf */; }; + D7BCFB3FC833452DB52BFBA0 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C78F00DD6F87462F80F6D9F3 /* Foundation.ttf */; }; + F32DA0127F8E4C7E9025AF76 /* libRCTVideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 44F7E5B4A1A84E158D740259 /* libRCTVideo.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -97,6 +100,69 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 3669D6541DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; + remoteInfo = "RCTImage-tvOS"; + }; + 3669D6581DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RCTLinking-tvOS"; + }; + 3669D65C1DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; + remoteInfo = "RCTNetwork-tvOS"; + }; + 3669D6601DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28611D9B046600D4039D; + remoteInfo = "RCTSettings-tvOS"; + }; + 3669D6641DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; + remoteInfo = "RCTText-tvOS"; + }; + 3669D6691DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28881D9B049200D4039D; + remoteInfo = "RCTWebSocket-tvOS"; + }; + 3669D66D1DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + 3669D6701DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3ACBED0F34BA4F6481F95228 /* RNVectorIcons.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5DBEB1501B18CEA900B34395; + remoteInfo = RNVectorIcons; + }; + 3669D6751DCDDF6B0031504B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DBEC87187D2A408095866B92 /* RCTVideo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTVideo; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -111,13 +177,6 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - C18EE8F11CBF94AE008A8828 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 56750AEB78ED41668DAEA030 /* RNVectorIcons.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5DBEB1501B18CEA900B34395; - remoteInfo = RNVectorIcons; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -130,7 +189,7 @@ 00E356EE1AD99517003FC87E /* mobileAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = mobileAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* mobileAppTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = mobileAppTests.m; sourceTree = ""; }; - 05490E19F3CC4860837BD434 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; + 04A3AE9F656249D7AC9E6CAD /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* mobileApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mobileApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -141,19 +200,20 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mobileApp/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = mobileApp/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 34E52EB656F04B52BB83A557 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; - 3508B6A902454CDC8782255A /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; - 56750AEB78ED41668DAEA030 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; - 59E5585226FA4571A70368B3 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; - 5C8B1FD829B04A5BA572CBC9 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; + 3ACBED0F34BA4F6481F95228 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; + 44F7E5B4A1A84E158D740259 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; + 5322613316144C4EAC78B751 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; + 676CEC4FFCB54B8DB56F9BFA /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; - 805C02BE868148AEB4BC922D /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; + 7922229406AC4CA9867C5EF6 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; + 7E7814434B8041B1AE22FE63 /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; - E09F58E57C37420CAA778052 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; - E4F2140207B1438EA613F38F /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; - FE71C45D00944796973FD23E /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; - 999890ECC570432B9EBE658E /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; name = "RCTVideo.xcodeproj"; path = "../node_modules/react-native-video/RCTVideo.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; - 7A8C67C4A1974409B4C19A80 /* libRCTVideo.a */ = {isa = PBXFileReference; name = "libRCTVideo.a"; path = "libRCTVideo.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + 93432D38CEA343F59181DE65 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; + ACF443E28B404D7098D99E2C /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; + C78F00DD6F87462F80F6D9F3 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; + DBEC87187D2A408095866B92 /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTVideo.xcodeproj; path = "../node_modules/react-native-video/RCTVideo.xcodeproj"; sourceTree = ""; }; + F5AB8E4CA3AF47469B44D6B1 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; + FA24B98D2AB143E4A7B6CB80 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -161,6 +221,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -178,8 +239,8 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - 92AF62C6E0CD4C0BB0201102 /* libRNVectorIcons.a in Frameworks */, - 917527DB0F6D419884BEFE21 /* libRCTVideo.a in Frameworks */, + 783FC71F37164E2AB4A9321B /* libRNVectorIcons.a in Frameworks */, + F32DA0127F8E4C7E9025AF76 /* libRCTVideo.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -206,6 +267,7 @@ isa = PBXGroup; children = ( 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + 3669D6551DCDDF6B0031504B /* libRCTImage-tvOS.a */, ); name = Products; sourceTree = ""; @@ -214,6 +276,7 @@ isa = PBXGroup; children = ( 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + 3669D65D1DCDDF6B0031504B /* libRCTNetwork-tvOS.a */, ); name = Products; sourceTree = ""; @@ -247,6 +310,7 @@ isa = PBXGroup; children = ( 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + 3669D6611DCDDF6B0031504B /* libRCTSettings-tvOS.a */, ); name = Products; sourceTree = ""; @@ -255,6 +319,7 @@ isa = PBXGroup; children = ( 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 3669D66A1DCDDF6B0031504B /* libRCTWebSocket-tvOS.a */, ); name = Products; sourceTree = ""; @@ -277,29 +342,32 @@ isa = PBXGroup; children = ( 146834041AC3E56700842450 /* libReact.a */, + 3669D66E1DCDDF6B0031504B /* libReact-tvOS.a */, ); name = Products; sourceTree = ""; }; - 37603AA42D0E49D59D996DF8 /* Resources */ = { + 3669D64E1DCDDF6B0031504B /* Products */ = { isa = PBXGroup; children = ( - 59E5585226FA4571A70368B3 /* Entypo.ttf */, - 3508B6A902454CDC8782255A /* EvilIcons.ttf */, - 5C8B1FD829B04A5BA572CBC9 /* FontAwesome.ttf */, - 805C02BE868148AEB4BC922D /* Foundation.ttf */, - E09F58E57C37420CAA778052 /* Ionicons.ttf */, - FE71C45D00944796973FD23E /* MaterialIcons.ttf */, - 05490E19F3CC4860837BD434 /* Octicons.ttf */, - 34E52EB656F04B52BB83A557 /* Zocial.ttf */, + 3669D6711DCDDF6B0031504B /* libRNVectorIcons.a */, ); - name = Resources; + name = Products; + sourceTree = ""; + }; + 3669D6721DCDDF6B0031504B /* Products */ = { + isa = PBXGroup; + children = ( + 3669D6761DCDDF6B0031504B /* libRCTVideo.a */, + ); + name = Products; sourceTree = ""; }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + 3669D6591DCDDF6B0031504B /* libRCTLinking-tvOS.a */, ); name = Products; sourceTree = ""; @@ -317,8 +385,8 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - 56750AEB78ED41668DAEA030 /* RNVectorIcons.xcodeproj */, - 999890ECC570432B9EBE658E /* RCTVideo.xcodeproj */, + 3ACBED0F34BA4F6481F95228 /* RNVectorIcons.xcodeproj */, + DBEC87187D2A408095866B92 /* RCTVideo.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -327,6 +395,7 @@ isa = PBXGroup; children = ( 832341B51AAA6A8300B99B32 /* libRCTText.a */, + 3669D6651DCDDF6B0031504B /* libRCTText-tvOS.a */, ); name = Products; sourceTree = ""; @@ -338,7 +407,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* mobileAppTests */, 83CBBA001A601CBA00E9B192 /* Products */, - 37603AA42D0E49D59D996DF8 /* Resources */, + A317E8C2BF3A4227ACD79FF6 /* Resources */, ); indentWidth = 2; sourceTree = ""; @@ -353,12 +422,20 @@ name = Products; sourceTree = ""; }; - C18EE8E41CBF94AC008A8828 /* Products */ = { + A317E8C2BF3A4227ACD79FF6 /* Resources */ = { isa = PBXGroup; children = ( - C18EE8F21CBF94AE008A8828 /* libRNVectorIcons.a */, + 676CEC4FFCB54B8DB56F9BFA /* Entypo.ttf */, + 7E7814434B8041B1AE22FE63 /* EvilIcons.ttf */, + 93432D38CEA343F59181DE65 /* FontAwesome.ttf */, + C78F00DD6F87462F80F6D9F3 /* Foundation.ttf */, + 5322613316144C4EAC78B751 /* Ionicons.ttf */, + ACF443E28B404D7098D99E2C /* MaterialIcons.ttf */, + F5AB8E4CA3AF47469B44D6B1 /* Octicons.ttf */, + FA24B98D2AB143E4A7B6CB80 /* Zocial.ttf */, + 7922229406AC4CA9867C5EF6 /* SimpleLineIcons.ttf */, ); - name = Products; + name = Resources; sourceTree = ""; }; /* End PBXGroup section */ @@ -406,7 +483,7 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 700; + LastUpgradeCheck = 610; ORGANIZATIONNAME = Facebook; TargetAttributes = { 00E356ED1AD99517003FC87E = { @@ -459,6 +536,10 @@ ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; }, + { + ProductGroup = 3669D6721DCDDF6B0031504B /* Products */; + ProjectRef = DBEC87187D2A408095866B92 /* RCTVideo.xcodeproj */; + }, { ProductGroup = 139FDEE71B06529A00C62182 /* Products */; ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; @@ -468,8 +549,8 @@ ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, { - ProductGroup = C18EE8E41CBF94AC008A8828 /* Products */; - ProjectRef = 56750AEB78ED41668DAEA030 /* RNVectorIcons.xcodeproj */; + ProductGroup = 3669D64E1DCDDF6B0031504B /* Products */; + ProjectRef = 3ACBED0F34BA4F6481F95228 /* RNVectorIcons.xcodeproj */; }, ); projectRoot = ""; @@ -537,6 +618,69 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 3669D6551DCDDF6B0031504B /* libRCTImage-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTImage-tvOS.a"; + remoteRef = 3669D6541DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D6591DCDDF6B0031504B /* libRCTLinking-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTLinking-tvOS.a"; + remoteRef = 3669D6581DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D65D1DCDDF6B0031504B /* libRCTNetwork-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTNetwork-tvOS.a"; + remoteRef = 3669D65C1DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D6611DCDDF6B0031504B /* libRCTSettings-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTSettings-tvOS.a"; + remoteRef = 3669D6601DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D6651DCDDF6B0031504B /* libRCTText-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTText-tvOS.a"; + remoteRef = 3669D6641DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D66A1DCDDF6B0031504B /* libRCTWebSocket-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTWebSocket-tvOS.a"; + remoteRef = 3669D6691DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D66E1DCDDF6B0031504B /* libReact-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libReact-tvOS.a"; + remoteRef = 3669D66D1DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D6711DCDDF6B0031504B /* libRNVectorIcons.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNVectorIcons.a; + remoteRef = 3669D6701DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3669D6761DCDDF6B0031504B /* libRCTVideo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTVideo.a; + remoteRef = 3669D6751DCDDF6B0031504B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -551,13 +695,6 @@ remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - C18EE8F21CBF94AE008A8828 /* libRNVectorIcons.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNVectorIcons.a; - remoteRef = C18EE8F11CBF94AE008A8828 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -574,14 +711,15 @@ files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - BC880391F3324F828F4BB0C3 /* Entypo.ttf in Resources */, - 064090A51F194B9DB551F22C /* EvilIcons.ttf in Resources */, - B8625E32D4614804A3175AAB /* FontAwesome.ttf in Resources */, - 119774E228E44E7592F87C4A /* Foundation.ttf in Resources */, - 440B2646F7AD490294962C5B /* Ionicons.ttf in Resources */, - 630EA73116F34A85AC966C4E /* MaterialIcons.ttf in Resources */, - C73DB7DD25A94563A7798C4B /* Octicons.ttf in Resources */, - 1158042666DF413F9140763F /* Zocial.ttf in Resources */, + A95AF3BB8149474ABCD00CB9 /* Entypo.ttf in Resources */, + C8C18A37CCB24B3393D420F8 /* EvilIcons.ttf in Resources */, + 4EEBE9EAC5E941E295F65A6F /* FontAwesome.ttf in Resources */, + D7BCFB3FC833452DB52BFBA0 /* Foundation.ttf in Resources */, + B39252E6814E4F45BB08B9C2 /* Ionicons.ttf in Resources */, + 53EA442DC544429293802F4C /* MaterialIcons.ttf in Resources */, + 41FEC85B608C413E99004AA7 /* Octicons.ttf in Resources */, + 79410CCCEB984353BCCC1D3B /* Zocial.ttf in Resources */, + 0D151E5C06BE451E941623FA /* SimpleLineIcons.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -649,23 +787,18 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); INFOPLIST_FILE = mobileAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/mobileApp.app/mobileApp"; }; @@ -676,19 +809,14 @@ buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); INFOPLIST_FILE = mobileAppTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.2; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/mobileApp.app/mobileApp"; }; @@ -698,6 +826,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -708,9 +837,13 @@ ); INFOPLIST_FILE = mobileApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); PRODUCT_NAME = mobileApp; + VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; @@ -718,6 +851,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, @@ -727,9 +861,13 @@ ); INFOPLIST_FILE = mobileApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); PRODUCT_NAME = mobileApp; + VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; @@ -753,7 +891,6 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -775,7 +912,7 @@ "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", "$(SRCROOT)/../node_modules/react-native-video", ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -817,7 +954,7 @@ "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", "$(SRCROOT)/../node_modules/react-native-video", ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; diff --git a/ios/mobileApp.xcodeproj/xcshareddata/xcschemes/mobileApp.xcscheme b/ios/mobileApp.xcodeproj/xcshareddata/xcschemes/mobileApp.xcscheme index 694219d..77823ea 100644 --- a/ios/mobileApp.xcodeproj/xcshareddata/xcschemes/mobileApp.xcscheme +++ b/ios/mobileApp.xcodeproj/xcshareddata/xcschemes/mobileApp.xcscheme @@ -1,6 +1,6 @@ - - diff --git a/ios/mobileApp/AppDelegate.m b/ios/mobileApp/AppDelegate.m index c9f7637..c190094 100644 --- a/ios/mobileApp/AppDelegate.m +++ b/ios/mobileApp/AppDelegate.m @@ -9,6 +9,7 @@ #import "AppDelegate.h" +#import "RCTBundleURLProvider.h" #import "RCTRootView.h" @implementation AppDelegate @@ -17,34 +18,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( { NSURL *jsCodeLocation; - /** - * Loading JavaScript code - uncomment the one you want. - * - * OPTION 1 - * Load from development server. Start the server from the repository root: - * - * $ npm start - * - * To run on device, change `localhost` to the IP address of your computer - * (you can get this by typing `ifconfig` into the terminal and selecting the - * `inet` value under `en0:`) and make sure your computer and iOS device are - * on the same Wi-Fi network. - */ - - jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; - - /** - * OPTION 2 - * Load from pre-bundled file on disk. The static bundle is automatically - * generated by "Bundle React Native code and images" build step. - */ - -// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"mobileApp" initialProperties:nil launchOptions:launchOptions]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; diff --git a/ios/mobileApp/Info.plist b/ios/mobileApp/Info.plist index 1c16544..8d62b07 100644 --- a/ios/mobileApp/Info.plist +++ b/ios/mobileApp/Info.plist @@ -1,58 +1,67 @@ - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - UIAppFonts - - Entypo.ttf - EvilIcons.ttf - FontAwesome.ttf - Foundation.ttf - Ionicons.ttf - MaterialIcons.ttf - Octicons.ttf - Zocial.ttf - - - \ No newline at end of file + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UIAppFonts + + Entypo.ttf + EvilIcons.ttf + FontAwesome.ttf + Foundation.ttf + Ionicons.ttf + MaterialIcons.ttf + Octicons.ttf + Zocial.ttf + SimpleLineIcons.ttf + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/mobileAppTests/Info.plist b/ios/mobileAppTests/Info.plist index ba72822..886825c 100644 --- a/ios/mobileAppTests/Info.plist +++ b/ios/mobileAppTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/ios/mobileAppTests/mobileAppTests.m b/ios/mobileAppTests/mobileAppTests.m index 1377d80..d8a237b 100644 --- a/ios/mobileAppTests/mobileAppTests.m +++ b/ios/mobileAppTests/mobileAppTests.m @@ -13,7 +13,7 @@ #import "RCTLog.h" #import "RCTRootView.h" -#define TIMEOUT_SECONDS 240 +#define TIMEOUT_SECONDS 600 #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" @interface mobileAppTests : XCTestCase diff --git a/package.json b/package.json index 6e8fdaa..1286b41 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,13 @@ "start": "node node_modules/react-native/local-cli/cli.js start" }, "dependencies": { - "react-native": "^0.20.0", + "react": "^15.3.1", + "react-native": "^0.36.0", "react-native-button": "^1.4.2", "react-native-parallax-scroll-view": "^0.18.0", - "react-native-router-flux": "^2.3.6", - "react-native-slider": "^0.5.3", - "react-native-vector-icons": "^1.3.4", - "react-native-video": "^0.7.1" + "react-native-router-flux": "^3.35.0", + "react-native-slider": "^0.9.1", + "react-native-vector-icons": "^3.0.0", + "react-native-video": "^0.9.0" } }