diff --git a/Examples/CodePushDemoApp/App.js b/Examples/CodePushDemoApp/App.js
index 9b342e512..2b5cf20ac 100644
--- a/Examples/CodePushDemoApp/App.js
+++ b/Examples/CodePushDemoApp/App.js
@@ -106,7 +106,7 @@ class App extends Component<{}> {
Press for dialog-driven sync
{progressView}
-
+
Restart { this.state.restartAllowed ? "allowed" : "forbidden"}
diff --git a/Examples/create-app.js b/Examples/create-app.js
index 3b7be80d6..6b4868e7a 100644
--- a/Examples/create-app.js
+++ b/Examples/create-app.js
@@ -32,9 +32,18 @@ if (fs.existsSync(appName)) {
process.exit();
}
+// Checking if yarn is installed
+try {
+ execSync('yarn bin');
+} catch (err) {
+ console.error(`You must install 'yarn' to use this script!`);
+ process.exit();
+}
+
let appNameAndroid = `${appName}-android`;
let appNameIOS = `${appName}-ios`;
let reactNativeVersion = args[1] || `react-native@${execSync('npm view react-native version')}`.trim();
+let reactNativeVersionIsLowerThanV049 = isReactNativeVesionLowerThan(49);
let reactNativeCodePushVersion = args[2] || `react-native-code-push@${execSync('npm view react-native-code-push version')}`.trim();
console.log(`App name: ${appName}`);
@@ -89,7 +98,7 @@ function generatePlainReactNativeApp(appName, reactNativeVersion) {
function installCodePush(reactNativeCodePushVersion) {
console.log(`Installing React Native Module for CodePush...`);
- execSync(`npm i --save ${reactNativeCodePushVersion}`);
+ execSync(`yarn add ${reactNativeCodePushVersion}`);
console.log(`React Native Module for CodePush has been installed \n`);
}
@@ -112,22 +121,30 @@ function linkCodePush(androidStagingDeploymentKey, iosStagingDeploymentKey) {
}
function setupAssets() {
- fs.unlinkSync('./index.ios.js');
- fs.unlinkSync('./index.android.js');
-
- fs.writeFileSync('demo.js', fs.readFileSync('../CodePushDemoApp/demo.js'));
- fs.writeFileSync('index.ios.js', fs.readFileSync('../CodePushDemoApp/index.ios.js'));
- fs.writeFileSync('index.android.js', fs.readFileSync('../CodePushDemoApp/index.android.js'));
+ let fileToEdit;
+ if (reactNativeVersionIsLowerThanV049) {
+ fs.unlinkSync('./index.ios.js');
+ fs.unlinkSync('./index.android.js');
+
+ fs.writeFileSync('demo.js', fs.readFileSync('../CodePushDemoApp-pre0.49/demo.js'));
+ fs.writeFileSync('index.ios.js', fs.readFileSync('../CodePushDemoApp-pre0.49/index.ios.js'));
+ fs.writeFileSync('index.android.js', fs.readFileSync('../CodePushDemoApp-pre0.49/index.android.js'));
+ fileToEdit = 'demo.js'
+ } else {
+ fs.writeFileSync('index.js', fs.readFileSync('../CodePushDemoApp/index.js'));
+ fs.writeFileSync('App.js', fs.readFileSync('../CodePushDemoApp/App.js'));
+ fileToEdit = 'index.js'
+ }
copyRecursiveSync('../CodePushDemoApp/images', './images');
- fs.readFile('demo.js', 'utf8', function (err, data) {
+ fs.readFile(fileToEdit, 'utf8', function (err, data) {
if (err) {
return console.error(err);
}
var result = data.replace(/CodePushDemoApp/g, appName);
- fs.writeFile('demo.js', result, 'utf8', function (err) {
+ fs.writeFile(fileToEdit, result, 'utf8', function (err) {
if (err) return console.error(err);
if (!/^win/.test(process.platform)) {
@@ -151,10 +168,12 @@ function optimizeToTestInDebugMode() {
rnXcodeShLocationFolder = 'packager';
}
} catch(e) {}
-
+
+ let rnXcodeShPath = `node_modules/react-native/${rnXcodeShLocationFolder}/react-native-xcode.sh`;
+ // Replace "if [[ "$PLATFORM_NAME" == *simulator ]]; then" with "if false; then" to force bundling
+ execSync(`sed -ie 's/if \\[\\[ "\$PLATFORM_NAME" == \\*simulator \\]\\]; then/if false; then/' ${rnXcodeShPath}`);
execSync(`perl -i -p0e 's/#ifdef DEBUG.*?#endif/jsCodeLocation = [CodePush bundleURL];/s' ios/${appName}/AppDelegate.m`);
- execSync(`sed -ie '17,20d' node_modules/react-native/${rnXcodeShLocationFolder}/react-native-xcode.sh`);
- execSync(`sed -ie 's/targetName.toLowerCase().contains("release")$/true/' node_modules/react-native/react.gradle`);
+ execSync(`sed -ie 's/targetName.toLowerCase().contains("release")/true/' node_modules/react-native/react.gradle`);
}
function grantAccess(folderPath) {
@@ -175,4 +194,14 @@ function copyRecursiveSync(src, dest) {
} else {
fs.linkSync(src, dest);
}
+}
+
+function isReactNativeVesionLowerThan(version) {
+ if (!reactNativeVersion ||
+ reactNativeVersion == "react-native@latest" ||
+ reactNativeVersion == "react-native@next")
+ return false;
+
+ let reactNativeVersionNumberString = reactNativeVersion.split("@")[1];
+ return reactNativeVersionNumberString.split('.')[1] < version;
}
\ No newline at end of file