diff --git a/Examples/CodePushDemoApp/.babelrc b/Examples/CodePushDemoApp/.babelrc
index 9762634..8df53fe 100644
--- a/Examples/CodePushDemoApp/.babelrc
+++ b/Examples/CodePushDemoApp/.babelrc
@@ -1,3 +1,3 @@
{
- "presets": ["react-native-stage-0/decorator-support"]
+"presets": ["react-native"]
}
\ No newline at end of file
diff --git a/Examples/CodePushDemoApp/.flowconfig b/Examples/CodePushDemoApp/.flowconfig
index 876e701..dcd5fd6 100644
--- a/Examples/CodePushDemoApp/.flowconfig
+++ b/Examples/CodePushDemoApp/.flowconfig
@@ -22,6 +22,8 @@ node_modules/react-native/flow
flow/
[options]
+emoji=true
+
module.system=haste
experimental.strict_type_args=true
@@ -34,11 +36,12 @@ suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FixMe
-suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(3[0-6]\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
-suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(3[0-6]\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
+suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-0]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
+suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-0]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
+suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
unsafe.enable_getters_and_setters=true
[version]
-^0.36.0
+^0.40.0
diff --git a/Examples/CodePushDemoApp/.gitignore b/Examples/CodePushDemoApp/.gitignore
index fc13f16..8fce639 100644
--- a/Examples/CodePushDemoApp/.gitignore
+++ b/Examples/CodePushDemoApp/.gitignore
@@ -34,6 +34,7 @@ local.properties
#
node_modules/
npm-debug.log
+yarn-error.log
# BUCK
buck-out/
diff --git a/Examples/CodePushDemoApp/NuGet.Config b/Examples/CodePushDemoApp/NuGet.Config
deleted file mode 100644
index 73ee8d8..0000000
--- a/Examples/CodePushDemoApp/NuGet.Config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Examples/CodePushDemoApp/__tests__/index.android.js b/Examples/CodePushDemoApp/__tests__/index.android.js
new file mode 100644
index 0000000..b49b908
--- /dev/null
+++ b/Examples/CodePushDemoApp/__tests__/index.android.js
@@ -0,0 +1,12 @@
+import 'react-native';
+import React from 'react';
+import Index from '../index.android.js';
+
+// Note: test renderer must be required after react-native.
+import renderer from 'react-test-renderer';
+
+it('renders correctly', () => {
+ const tree = renderer.create(
+
+ );
+});
diff --git a/Examples/CodePushDemoApp/__tests__/index.ios.js b/Examples/CodePushDemoApp/__tests__/index.ios.js
new file mode 100644
index 0000000..ba7c5b5
--- /dev/null
+++ b/Examples/CodePushDemoApp/__tests__/index.ios.js
@@ -0,0 +1,12 @@
+import 'react-native';
+import React from 'react';
+import Index from '../index.ios.js';
+
+// Note: test renderer must be required after react-native.
+import renderer from 'react-test-renderer';
+
+it('renders correctly', () => {
+ const tree = renderer.create(
+
+ );
+});
diff --git a/Examples/CodePushDemoApp/android/app/BUCK b/Examples/CodePushDemoApp/android/app/BUCK
index 8ba19d0..48333fe 100644
--- a/Examples/CodePushDemoApp/android/app/BUCK
+++ b/Examples/CodePushDemoApp/android/app/BUCK
@@ -1,5 +1,3 @@
-import re
-
# To learn about Buck see [Docs](https://buckbuild.com/).
# To run your application with Buck:
# - install Buck
@@ -11,8 +9,9 @@ import re
#
lib_deps = []
+
for jarfile in glob(['libs/*.jar']):
- name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile)
+ name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')]
lib_deps.append(':' + name)
prebuilt_jar(
name = name,
@@ -20,7 +19,7 @@ for jarfile in glob(['libs/*.jar']):
)
for aarfile in glob(['libs/*.aar']):
- name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile)
+ name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')]
lib_deps.append(':' + name)
android_prebuilt_aar(
name = name,
@@ -28,39 +27,39 @@ for aarfile in glob(['libs/*.aar']):
)
android_library(
- name = 'all-libs',
- exported_deps = lib_deps
+ name = "all-libs",
+ exported_deps = lib_deps,
)
android_library(
- name = 'app-code',
- srcs = glob([
- 'src/main/java/**/*.java',
- ]),
- deps = [
- ':all-libs',
- ':build_config',
- ':res',
- ],
+ name = "app-code",
+ srcs = glob([
+ "src/main/java/**/*.java",
+ ]),
+ deps = [
+ ":all-libs",
+ ":build_config",
+ ":res",
+ ],
)
android_build_config(
- name = 'build_config',
- package = 'com.codepushdemoapp',
+ name = "build_config",
+ package = "com.codepushdemoapp",
)
android_resource(
- name = 'res',
- res = 'src/main/res',
- package = 'com.codepushdemoapp',
+ name = "res",
+ package = "com.codepushdemoapp",
+ res = "src/main/res",
)
android_binary(
- name = 'app',
- package_type = 'debug',
- manifest = 'src/main/AndroidManifest.xml',
- keystore = '//android/keystores:debug',
- deps = [
- ':app-code',
- ],
+ name = "app",
+ keystore = "//android/keystores:debug",
+ manifest = "src/main/AndroidManifest.xml",
+ package_type = "debug",
+ deps = [
+ ":app-code",
+ ],
)
diff --git a/Examples/CodePushDemoApp/android/app/build.gradle b/Examples/CodePushDemoApp/android/app/build.gradle
index 02fb5e9..6ca2950 100644
--- a/Examples/CodePushDemoApp/android/app/build.gradle
+++ b/Examples/CodePushDemoApp/android/app/build.gradle
@@ -66,7 +66,7 @@ import com.android.build.OutputFile
*/
apply from: "../../node_modules/react-native/react.gradle"
-apply from: "../../../../android/codepush.gradle"
+apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
/**
* Set this to true to create two separate APKs instead of one:
@@ -127,10 +127,10 @@ android {
}
dependencies {
+ compile project(':react-native-code-push')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
- compile project(':react-native-code-push')
}
// Run this once to be able to run the application with BUCK
diff --git a/Examples/CodePushDemoApp/android/app/src/main/AndroidManifest.xml b/Examples/CodePushDemoApp/android/app/src/main/AndroidManifest.xml
index 21ece40..d1c4010 100644
--- a/Examples/CodePushDemoApp/android/app/src/main/AndroidManifest.xml
+++ b/Examples/CodePushDemoApp/android/app/src/main/AndroidManifest.xml
@@ -19,7 +19,8 @@
+ android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
+ android:windowSoftInputMode="adjustResize">
diff --git a/Examples/CodePushDemoApp/android/app/src/main/java/com/codepushdemoapp/MainApplication.java b/Examples/CodePushDemoApp/android/app/src/main/java/com/codepushdemoapp/MainApplication.java
index 6070471..14af729 100644
--- a/Examples/CodePushDemoApp/android/app/src/main/java/com/codepushdemoapp/MainApplication.java
+++ b/Examples/CodePushDemoApp/android/app/src/main/java/com/codepushdemoapp/MainApplication.java
@@ -1,28 +1,28 @@
package com.codepushdemoapp;
import android.app.Application;
-import android.util.Log;
import com.facebook.react.ReactApplication;
-import com.facebook.react.ReactInstanceManager;
+import com.microsoft.codepush.react.CodePush;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
-import com.microsoft.codepush.react.CodePush;
import java.util.Arrays;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
+
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
- }
+ }
+
@Override
- protected boolean getUseDeveloperSupport() {
+ public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@@ -30,7 +30,7 @@ public class MainApplication extends Application implements ReactApplication {
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
- new CodePush("deployment-key-here", MainApplication.this, BuildConfig.DEBUG)
+ new CodePush("deployment-key-here", getApplicationContext(), BuildConfig.DEBUG)
);
}
};
diff --git a/Examples/CodePushDemoApp/android/app/src/main/res/values/strings.xml b/Examples/CodePushDemoApp/android/app/src/main/res/values/strings.xml
index e2d1e1c..921f8cd 100644
--- a/Examples/CodePushDemoApp/android/app/src/main/res/values/strings.xml
+++ b/Examples/CodePushDemoApp/android/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
+
CodePushDemoApp
diff --git a/Examples/CodePushDemoApp/android/build.gradle b/Examples/CodePushDemoApp/android/build.gradle
index fcba4c5..eed9972 100644
--- a/Examples/CodePushDemoApp/android/build.gradle
+++ b/Examples/CodePushDemoApp/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.3.1'
+ classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/Examples/CodePushDemoApp/android/gradle/wrapper/gradle-wrapper.properties b/Examples/CodePushDemoApp/android/gradle/wrapper/gradle-wrapper.properties
index b9fbfab..dbdc05d 100644
--- a/Examples/CodePushDemoApp/android/gradle/wrapper/gradle-wrapper.properties
+++ b/Examples/CodePushDemoApp/android/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
diff --git a/Examples/CodePushDemoApp/android/keystores/BUCK b/Examples/CodePushDemoApp/android/keystores/BUCK
index 15da20e..88e4c31 100644
--- a/Examples/CodePushDemoApp/android/keystores/BUCK
+++ b/Examples/CodePushDemoApp/android/keystores/BUCK
@@ -1,8 +1,8 @@
keystore(
- name = 'debug',
- store = 'debug.keystore',
- properties = 'debug.keystore.properties',
- visibility = [
- 'PUBLIC',
- ],
+ name = "debug",
+ properties = "debug.keystore.properties",
+ store = "debug.keystore",
+ visibility = [
+ "PUBLIC",
+ ],
)
diff --git a/Examples/CodePushDemoApp/android/settings.gradle b/Examples/CodePushDemoApp/android/settings.gradle
index e48f842..ac7d1d7 100644
--- a/Examples/CodePushDemoApp/android/settings.gradle
+++ b/Examples/CodePushDemoApp/android/settings.gradle
@@ -1,4 +1,5 @@
rootProject.name = 'CodePushDemoApp'
+include ':react-native-code-push'
+project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
-include ':app', ':react-native-code-push'
-project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../../../android/app')
+include ':app'
diff --git a/Examples/CodePushDemoApp/app.json b/Examples/CodePushDemoApp/app.json
new file mode 100644
index 0000000..2b98b49
--- /dev/null
+++ b/Examples/CodePushDemoApp/app.json
@@ -0,0 +1,4 @@
+{
+ "name": "CodePushDemoApp",
+ "displayName": "CodePushDemoApp"
+}
\ No newline at end of file
diff --git a/Examples/CodePushDemoApp/demo.jse b/Examples/CodePushDemoApp/demo.jse
new file mode 100644
index 0000000..1a66d1f
--- /dev/null
+++ b/Examples/CodePushDemoApp/demo.jse
@@ -0,0 +1,162 @@
+import React, { Component } from "react";
+import {
+ AppRegistry,
+ Dimensions,
+ Image,
+ StyleSheet,
+ Text,
+ TouchableOpacity,
+ View,
+} from "react-native";
+
+import CodePush from "react-native-code-push";
+
+class CodePushDemoApp extends Component {
+ constructor() {
+ super();
+ this.state = { restartAllowed: true };
+ }
+
+ codePushStatusDidChange(syncStatus) {
+ switch(syncStatus) {
+ case CodePush.SyncStatus.CHECKING_FOR_UPDATE:
+ this.setState({ syncMessage: "Checking for update." });
+ break;
+ case CodePush.SyncStatus.DOWNLOADING_PACKAGE:
+ this.setState({ syncMessage: "Downloading package." });
+ break;
+ case CodePush.SyncStatus.AWAITING_USER_ACTION:
+ this.setState({ syncMessage: "Awaiting user action." });
+ break;
+ case CodePush.SyncStatus.INSTALLING_UPDATE:
+ this.setState({ syncMessage: "Installing update." });
+ break;
+ case CodePush.SyncStatus.UP_TO_DATE:
+ this.setState({ syncMessage: "App up to date.", progress: false });
+ break;
+ case CodePush.SyncStatus.UPDATE_IGNORED:
+ this.setState({ syncMessage: "Update cancelled by user.", progress: false });
+ break;
+ case CodePush.SyncStatus.UPDATE_INSTALLED:
+ this.setState({ syncMessage: "Update installed and will be applied on restart.", progress: false });
+ break;
+ case CodePush.SyncStatus.UNKNOWN_ERROR:
+ this.setState({ syncMessage: "An unknown error occurred.", progress: false });
+ break;
+ }
+ }
+
+ codePushDownloadDidProgress(progress) {
+ this.setState({ progress });
+ }
+
+ toggleAllowRestart() {
+ this.state.restartAllowed
+ ? CodePush.disallowRestart()
+ : CodePush.allowRestart();
+
+ this.setState({ restartAllowed: !this.state.restartAllowed });
+ }
+
+ getUpdateMetadata() {
+ CodePush.getUpdateMetadata(CodePush.UpdateState.RUNNING)
+ .then((metadata: LocalPackage) => {
+ this.setState({ syncMessage: metadata ? JSON.stringify(metadata) : "Running binary version", progress: false });
+ }, (error: any) => {
+ this.setState({ syncMessage: "Error: " + error, progress: false });
+ });
+ }
+
+ /** Update is downloaded silently, and applied on restart (recommended) */
+ sync() {
+ CodePush.sync(
+ {},
+ this.codePushStatusDidChange.bind(this),
+ this.codePushDownloadDidProgress.bind(this)
+ );
+ }
+
+ /** Update pops a confirmation dialog, and then immediately reboots the app */
+ syncImmediate() {
+ CodePush.sync(
+ { installMode: CodePush.InstallMode.IMMEDIATE, updateDialog: true },
+ this.codePushStatusDidChange.bind(this),
+ this.codePushDownloadDidProgress.bind(this)
+ );
+ }
+
+ render() {
+ let progressView;
+
+ if (this.state.progress) {
+ progressView = (
+ {this.state.progress.receivedBytes} of {this.state.progress.totalBytes} bytes received
+ );
+ }
+
+ return (
+
+
+ Welcome to CodePush!
+
+
+ Press for background sync
+
+
+ Press for dialog-driven sync
+
+ {progressView}
+
+
+ Restart { this.state.restartAllowed ? "allowed" : "forbidden"}
+
+
+ Press for Update Metadata
+
+ {this.state.syncMessage || ""}
+
+ );
+ }
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: "center",
+ backgroundColor: "#F5FCFF",
+ paddingTop: 50
+ },
+ image: {
+ margin: 30,
+ width: Dimensions.get("window").width - 100,
+ height: 365 * (Dimensions.get("window").width - 100) / 651,
+ },
+ messages: {
+ marginTop: 30,
+ textAlign: "center",
+ },
+ restartToggleButton: {
+ color: "blue",
+ fontSize: 17
+ },
+ syncButton: {
+ color: "green",
+ fontSize: 17
+ },
+ welcome: {
+ fontSize: 20,
+ textAlign: "center",
+ margin: 20
+ },
+});
+
+/**
+ * Configured with a MANUAL check frequency for easy testing. For production apps, it is recommended to configure a
+ * different check frequency, such as ON_APP_START, for a 'hands-off' approach where CodePush.sync() does not
+ * need to be explicitly called. All options of CodePush.sync() are also available in this decorator.
+ */
+let codePushOptions = { checkFrequency: CodePush.CheckFrequency.MANUAL };
+
+CodePushDemoApp = CodePush(codePushOptions)(CodePushDemoApp);
+
+AppRegistry.registerComponent("CodePushDemoApp", () => CodePushDemoApp);
\ No newline at end of file
diff --git a/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj b/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj
index d951a5b..7dc696b 100644
--- a/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj
+++ b/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj
@@ -22,10 +22,22 @@
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 */; };
- 549D09D81D528D0A00C95E36 /* libCodePush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 549D09CD1D528CDB00C95E36 /* libCodePush.a */; };
- 549D09DA1D528D4D00C95E36 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 549D09D91D528D4D00C95E36 /* libz.tbd */; };
+ 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
+ 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */; };
+ 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };
+ 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };
+ 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };
+ 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };
+ 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };
+ 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };
+ 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; };
+ 2DCD954D1E0B4F2C00145EB5 /* CodePushDemoAppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* CodePushDemoAppTests.m */; };
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
+ D28EB2FC32954427A4422B25 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = CC9DF758D6864DCAA11289C9 /* libz.tbd */; };
+ EA397BA422464BCC859F3D42 /* libCodePush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BD09103A2D2E47629DB319C2 /* libCodePush.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -92,6 +104,13 @@
remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
remoteInfo = React;
};
+ 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
+ remoteInfo = "CodePushDemoApp-tvOS";
+ };
3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
@@ -183,13 +202,6 @@
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
remoteInfo = "jschelpers-tvOS";
};
- 549D09CC1D528CDB00C95E36 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 549D09C81D528CDB00C95E36 /* CodePush.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = 134814201AA4EA6300B7C361;
- remoteInfo = CodePush;
- };
5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
@@ -218,6 +230,13 @@
remoteGlobalIDString = 58B5119B1A9E6C1200147676;
remoteInfo = RCTText;
};
+ C38CCDB11E97B5770004B299 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = D107D63A8C0145D7806614BF /* CodePush.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 134814201AA4EA6300B7C361;
+ remoteInfo = CodePush;
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@@ -240,11 +259,14 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = CodePushDemoApp/Info.plist; sourceTree = ""; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = CodePushDemoApp/main.m; sourceTree = ""; };
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; };
- 549D09C81D528CDB00C95E36 /* CodePush.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CodePush.xcodeproj; path = ../../../ios/CodePush.xcodeproj; sourceTree = ""; };
- 549D09D91D528D4D00C95E36 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+ 2D02E47B1E0B4A5D006451C7 /* CodePushDemoApp-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CodePushDemoApp-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2D02E4901E0B4A5D006451C7 /* CodePushDemoApp-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "CodePushDemoApp-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; };
+ BD09103A2D2E47629DB319C2 /* libCodePush.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libCodePush.a; sourceTree = ""; };
+ CC9DF758D6864DCAA11289C9 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+ D107D63A8C0145D7806614BF /* CodePush.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = CodePush.xcodeproj; path = "../node_modules/react-native-code-push/ios/CodePush.xcodeproj"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -260,10 +282,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 549D09DA1D528D4D00C95E36 /* libz.tbd in Frameworks */,
- 549D09D81D528D0A00C95E36 /* libCodePush.a in Frameworks */,
- 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
+ 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */,
@@ -273,6 +293,30 @@
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
+ EA397BA422464BCC859F3D42 /* libCodePush.a in Frameworks */,
+ D28EB2FC32954427A4422B25 /* libz.tbd in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2D02E4C91E0B4AEC006451C7 /* libReact.a in Frameworks */,
+ 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation-tvOS.a in Frameworks */,
+ 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,
+ 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,
+ 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,
+ 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
+ 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
+ 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -338,6 +382,14 @@
name = "Supporting Files";
sourceTree = "";
};
+ 08BF36A1FE0A4A28A3889572 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ CC9DF758D6864DCAA11289C9 /* libz.tbd */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
139105B71AF99BAD00B5F7CC /* Products */ = {
isa = PBXGroup;
children = (
@@ -388,7 +440,6 @@
5E91572E1DD0AC6500FF2AA8 /* Products */ = {
isa = PBXGroup;
children = (
- 549D09CD1D528CDB00C95E36 /* libCodePush.a */,
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
5E9157351DD0AC6500FF2AA8 /* libRCTAnimation-tvOS.a */,
);
@@ -407,7 +458,6 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
- 549D09C81D528CDB00C95E36 /* CodePush.xcodeproj */,
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
@@ -419,6 +469,7 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
+ D107D63A8C0145D7806614BF /* CodePush.xcodeproj */,
);
name = Libraries;
sourceTree = "";
@@ -435,11 +486,11 @@
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
- 549D09D91D528D4D00C95E36 /* libz.tbd */,
13B07FAE1A68108700A75B9A /* CodePushDemoApp */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* CodePushDemoAppTests */,
83CBBA001A601CBA00E9B192 /* Products */,
+ 08BF36A1FE0A4A28A3889572 /* Frameworks */,
);
indentWidth = 2;
sourceTree = "";
@@ -450,6 +501,16 @@
children = (
13B07F961A680F5B00A75B9A /* CodePushDemoApp.app */,
00E356EE1AD99517003FC87E /* CodePushDemoAppTests.xctest */,
+ 2D02E47B1E0B4A5D006451C7 /* CodePushDemoApp-tvOS.app */,
+ 2D02E4901E0B4A5D006451C7 /* CodePushDemoApp-tvOSTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ C38CCDAE1E97B5770004B299 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ C38CCDB21E97B5770004B299 /* libCodePush.a */,
);
name = Products;
sourceTree = "";
@@ -493,19 +554,64 @@
productReference = 13B07F961A680F5B00A75B9A /* CodePushDemoApp.app */;
productType = "com.apple.product-type.application";
};
+ 2D02E47A1E0B4A5D006451C7 /* CodePushDemoApp-tvOS */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CodePushDemoApp-tvOS" */;
+ buildPhases = (
+ 2D02E4771E0B4A5D006451C7 /* Sources */,
+ 2D02E4781E0B4A5D006451C7 /* Frameworks */,
+ 2D02E4791E0B4A5D006451C7 /* Resources */,
+ 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "CodePushDemoApp-tvOS";
+ productName = "CodePushDemoApp-tvOS";
+ productReference = 2D02E47B1E0B4A5D006451C7 /* CodePushDemoApp-tvOS.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 2D02E48F1E0B4A5D006451C7 /* CodePushDemoApp-tvOSTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CodePushDemoApp-tvOSTests" */;
+ buildPhases = (
+ 2D02E48C1E0B4A5D006451C7 /* Sources */,
+ 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
+ 2D02E48E1E0B4A5D006451C7 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
+ );
+ name = "CodePushDemoApp-tvOSTests";
+ productName = "CodePushDemoApp-tvOSTests";
+ productReference = 2D02E4901E0B4A5D006451C7 /* CodePushDemoApp-tvOSTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0610;
+ LastUpgradeCheck = 610;
ORGANIZATIONNAME = Facebook;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
CreatedOnToolsVersion = 6.2;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
+ 2D02E47A1E0B4A5D006451C7 = {
+ CreatedOnToolsVersion = 8.2.1;
+ ProvisioningStyle = Automatic;
+ };
+ 2D02E48F1E0B4A5D006451C7 = {
+ CreatedOnToolsVersion = 8.2.1;
+ ProvisioningStyle = Automatic;
+ TestTargetID = 2D02E47A1E0B4A5D006451C7;
+ };
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemoApp" */;
@@ -521,8 +627,8 @@
projectDirPath = "";
projectReferences = (
{
- ProductGroup = 549D09C91D528CDB00C95E36 /* Products */;
- ProjectRef = 549D09C81D528CDB00C95E36 /* CodePush.xcodeproj */;
+ ProductGroup = C38CCDAE1E97B5770004B299 /* Products */;
+ ProjectRef = D107D63A8C0145D7806614BF /* CodePush.xcodeproj */;
},
{
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
@@ -573,6 +679,8 @@
targets = (
13B07F861A680F5B00A75B9A /* CodePushDemoApp */,
00E356ED1AD99517003FC87E /* CodePushDemoAppTests */,
+ 2D02E47A1E0B4A5D006451C7 /* CodePushDemoApp-tvOS */,
+ 2D02E48F1E0B4A5D006451C7 /* CodePushDemoApp-tvOSTests */,
);
};
/* End PBXProject section */
@@ -641,14 +749,7 @@
remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
- 549D09CD1D528CDB00C95E36 /* libCodePush.a */ = {
- isa = PBXReferenceProxy;
- fileType = archive.ar;
- path = libCodePush.a;
- remoteRef = 549D09CC1D528CDB00C95E36 /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
+ 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libRCTLinking-tvOS.a";
@@ -760,6 +861,13 @@
remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
+ C38CCDB21E97B5770004B299 /* libCodePush.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libCodePush.a;
+ remoteRef = C38CCDB11E97B5770004B299 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
@@ -779,6 +887,21 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 2D02E4791E0B4A5D006451C7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 2D02E48E1E0B4A5D006451C7 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -796,6 +919,20 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
};
+ 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Bundle React Native Code And Images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -816,6 +953,23 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 2D02E4771E0B4A5D006451C7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
+ 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 2D02E48C1E0B4A5D006451C7 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2DCD954D1E0B4F2C00145EB5 /* CodePushDemoAppTests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -824,6 +978,11 @@
target = 13B07F861A680F5B00A75B9A /* CodePushDemoApp */;
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
};
+ 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 2D02E47A1E0B4A5D006451C7 /* CodePushDemoApp-tvOS */;
+ targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
+ };
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -847,9 +1006,21 @@
"DEBUG=1",
"$(inherited)",
);
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
+ );
INFOPLIST_FILE = CodePushDemoAppTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ );
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CodePushDemoApp.app/CodePushDemoApp";
};
@@ -860,9 +1031,21 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
+ );
INFOPLIST_FILE = CodePushDemoAppTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ );
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CodePushDemoApp.app/CodePushDemoApp";
};
@@ -876,7 +1059,7 @@
DEAD_CODE_STRIPPING = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
- "$(SRCROOT)/../../../ios/**",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
);
INFOPLIST_FILE = CodePushDemoApp/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -897,7 +1080,7 @@
CURRENT_PROJECT_VERSION = 1;
HEADER_SEARCH_PATHS = (
"$(inherited)",
- "$(SRCROOT)/../../../ios/**",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
);
INFOPLIST_FILE = CodePushDemoApp/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -911,6 +1094,124 @@
};
name = Release;
};
+ 2D02E4971E0B4A5E006451C7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_TESTABILITY = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
+ );
+ INFOPLIST_FILE = "CodePushDemoApp-tvOS/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CodePushDemoApp-tvOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TARGETED_DEVICE_FAMILY = 3;
+ TVOS_DEPLOYMENT_TARGET = 9.2;
+ };
+ name = Debug;
+ };
+ 2D02E4981E0B4A5E006451C7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_NO_COMMON_BLOCKS = YES;
+ HEADER_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(SRCROOT)/../node_modules/react-native-code-push/ios/CodePush/**",
+ );
+ INFOPLIST_FILE = "CodePushDemoApp-tvOS/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CodePushDemoApp-tvOS";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TARGETED_DEVICE_FAMILY = 3;
+ TVOS_DEPLOYMENT_TARGET = 9.2;
+ };
+ name = Release;
+ };
+ 2D02E4991E0B4A5E006451C7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_TESTABILITY = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ INFOPLIST_FILE = "CodePushDemoApp-tvOSTests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CodePushDemoApp-tvOSTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CodePushDemoApp-tvOS.app/CodePushDemoApp-tvOS";
+ TVOS_DEPLOYMENT_TARGET = 10.1;
+ };
+ name = Debug;
+ };
+ 2D02E49A1E0B4A5E006451C7 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_NO_COMMON_BLOCKS = YES;
+ INFOPLIST_FILE = "CodePushDemoApp-tvOSTests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.CodePushDemoApp-tvOSTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = appletvos;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CodePushDemoApp-tvOS.app/CodePushDemoApp-tvOS";
+ TVOS_DEPLOYMENT_TARGET = 10.1;
+ };
+ name = Release;
+ };
83CBBA201A601CBA00E9B192 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1008,6 +1309,24 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CodePushDemoApp-tvOS" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2D02E4971E0B4A5E006451C7 /* Debug */,
+ 2D02E4981E0B4A5E006451C7 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "CodePushDemoApp-tvOSTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2D02E4991E0B4A5E006451C7 /* Debug */,
+ 2D02E49A1E0B4A5E006451C7 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "CodePushDemoApp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/Examples/CodePushDemoApp/iOS/CodePushDemoApp/AppDelegate.m b/Examples/CodePushDemoApp/iOS/CodePushDemoApp/AppDelegate.m
index 6913b9e..e3ae813 100644
--- a/Examples/CodePushDemoApp/iOS/CodePushDemoApp/AppDelegate.m
+++ b/Examples/CodePushDemoApp/iOS/CodePushDemoApp/AppDelegate.m
@@ -8,8 +8,8 @@
*/
#import "AppDelegate.h"
+#import
-#import "CodePush.h"
#import
#import
@@ -19,11 +19,8 @@
{
NSURL *jsCodeLocation;
- // Use React Native's RCTBundleURLProvider to resolve your JS bundle location, so that your app will load the JS bundle from the packager server during development.
- //jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
-
- // Use CodePush to resolve your JS bundle location, so that your app will run the version of the code distributed via CodePush
- jsCodeLocation = [CodePush bundleURL];
+
+jsCodeLocation = [CodePush bundleURL];
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"CodePushDemoApp"
diff --git a/Examples/CodePushDemoApp/iOS/CodePushDemoApp/Info.plist b/Examples/CodePushDemoApp/iOS/CodePushDemoApp/Info.plist
index 358a5b4..29dab54 100644
--- a/Examples/CodePushDemoApp/iOS/CodePushDemoApp/Info.plist
+++ b/Examples/CodePushDemoApp/iOS/CodePushDemoApp/Info.plist
@@ -1,56 +1,57 @@
-
- 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
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
- NSLocationWhenInUseUsageDescription
-
- NSAppTransportSecurity
-
-
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
-
- CodePushDeploymentKey
- deployment-key-here
-
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleDisplayName
+ CodePushDemoApp
+ 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
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+ NSLocationWhenInUseUsageDescription
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ localhost
+
+ NSExceptionAllowsInsecureHTTPLoads
+
+
+
+
+ CodePushDeploymentKey
+ deployment-key-here
+
diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOS/Info.plist b/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOS/Info.plist
new file mode 100644
index 0000000..2fb6a11
--- /dev/null
+++ b/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOS/Info.plist
@@ -0,0 +1,54 @@
+
+
+
+
+ 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
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+ NSLocationWhenInUseUsageDescription
+
+ NSAppTransportSecurity
+
+
+ NSExceptionDomains
+
+ localhost
+
+ NSExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOSTests/Info.plist b/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOSTests/Info.plist
new file mode 100644
index 0000000..886825c
--- /dev/null
+++ b/Examples/CodePushDemoApp/ios/CodePushDemoApp-tvOSTests/Info.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+
+
diff --git a/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp-tvOS.xcscheme b/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp-tvOS.xcscheme
new file mode 100644
index 0000000..92d0c1e
--- /dev/null
+++ b/Examples/CodePushDemoApp/ios/CodePushDemoApp.xcodeproj/xcshareddata/xcschemes/CodePushDemoApp-tvOS.xcscheme
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/CodePushDemoApp/package.json b/Examples/CodePushDemoApp/package.json
index 0ba9854..bc97cc2 100644
--- a/Examples/CodePushDemoApp/package.json
+++ b/Examples/CodePushDemoApp/package.json
@@ -3,13 +3,21 @@
"version": "0.0.1",
"private": true,
"scripts": {
- "start": "node node_modules/react-native/local-cli/cli.js start"
+ "start": "react-native start",
+ "test": "jest"
},
"dependencies": {
- "babel-preset-react-native-stage-0": "1.0.1",
- "react": "15.4.0",
- "react-native": "^0.43.0",
- "react-native-code-push": "file:../../",
- "react-native-windows": "0.40.0-rc.1"
+ "react": "16.0.0-alpha.6",
+ "react-native": "^0.43.2",
+ "react-native-code-push": "file:../../"
+ },
+ "devDependencies": {
+ "babel-jest": "19.0.0",
+ "babel-preset-react-native": "1.9.1",
+ "jest": "19.0.2",
+ "react-test-renderer": "16.0.0-alpha.6"
+ },
+ "jest": {
+ "preset": "react-native"
}
}