diff --git a/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj b/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj index 2e8d08a..1ee3b8b 100644 --- a/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj +++ b/Examples/CodePushDemoApp/iOS/CodePushDemoApp.xcodeproj/project.pbxproj @@ -21,13 +21,12 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 542D39D41C22CED700D4B648 /* libCodePush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81551E0F1B3B427200F5B9F1 /* libCodePush.a */; }; + 540D20251C76EA0400D6EF41 /* libCodePush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 540D20241C76E4D300D6EF41 /* libCodePush.a */; }; 544161591B8BCA81000D9E25 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 5451ACBA1B86A5B600E2A7DF /* CheckForUpdateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5451ACB81B86A5B600E2A7DF /* CheckForUpdateTests.m */; }; 5451ACEC1B86E40A00E2A7DF /* libRCTTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5451ACEB1B86E34300E2A7DF /* libRCTTest.a */; }; 54D774BA1B87DAF800F2ABF8 /* InstallUpdateTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 54D774B91B87DAF800F2ABF8 /* InstallUpdateTests.m */; }; 54F5F2B41BF6B45D007C3CEA /* DownloadProgressTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 54F5F2B31BF6B45D007C3CEA /* DownloadProgressTests.m */; }; - 81551E1B1B3B428000F5B9F1 /* libCodePush.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81551E0F1B3B427200F5B9F1 /* libCodePush.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -101,6 +100,13 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 540D20231C76E4D300D6EF41 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 81551E0A1B3B427200F5B9F1 /* CodePush.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = CodePush; + }; 5451ACEA1B86E34300E2A7DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 5451ACE61B86E34300E2A7DF /* RCTTest.xcodeproj */; @@ -115,13 +121,6 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RCTLinking; }; - 81551E0E1B3B427200F5B9F1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 81551E0A1B3B427200F5B9F1 /* CodePush.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = CodePush; - }; 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; @@ -155,7 +154,7 @@ 54D774B91B87DAF800F2ABF8 /* InstallUpdateTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InstallUpdateTests.m; sourceTree = ""; }; 54F5F2B31BF6B45D007C3CEA /* DownloadProgressTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DownloadProgressTests.m; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; - 81551E0A1B3B427200F5B9F1 /* CodePush.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CodePush.xcodeproj; path = ../../../CodePush.xcodeproj; sourceTree = ""; }; + 81551E0A1B3B427200F5B9F1 /* CodePush.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CodePush.xcodeproj; path = ../../../ios/CodePush.xcodeproj; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -164,7 +163,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 542D39D41C22CED700D4B648 /* libCodePush.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -172,6 +170,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 540D20251C76EA0400D6EF41 /* libCodePush.a in Frameworks */, 544161591B8BCA81000D9E25 /* libRCTText.a in Frameworks */, 5451ACEC1B86E40A00E2A7DF /* libRCTTest.a in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, @@ -184,7 +183,6 @@ 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - 81551E1B1B3B428000F5B9F1 /* libCodePush.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -295,6 +293,14 @@ name = Products; sourceTree = ""; }; + 540D20201C76E4D300D6EF41 /* Products */ = { + isa = PBXGroup; + children = ( + 540D20241C76E4D300D6EF41 /* libCodePush.a */, + ); + name = Products; + sourceTree = ""; + }; 5451ACE71B86E34300E2A7DF /* Products */ = { isa = PBXGroup; children = ( @@ -311,14 +317,6 @@ name = Products; sourceTree = ""; }; - 81551E0B1B3B427200F5B9F1 /* Products */ = { - isa = PBXGroup; - children = ( - 81551E0F1B3B427200F5B9F1 /* libCodePush.a */, - ); - name = Products; - sourceTree = ""; - }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( @@ -435,7 +433,7 @@ projectDirPath = ""; projectReferences = ( { - ProductGroup = 81551E0B1B3B427200F5B9F1 /* Products */; + ProductGroup = 540D20201C76E4D300D6EF41 /* Products */; ProjectRef = 81551E0A1B3B427200F5B9F1 /* CodePush.xcodeproj */; }, { @@ -559,6 +557,13 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 540D20241C76E4D300D6EF41 /* libCodePush.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libCodePush.a; + remoteRef = 540D20231C76E4D300D6EF41 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 5451ACEB1B86E34300E2A7DF /* libRCTTest.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -573,13 +578,6 @@ remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 81551E0F1B3B427200F5B9F1 /* libCodePush.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libCodePush.a; - remoteRef = 81551E0E1B3B427200F5B9F1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -684,7 +682,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", - "$(SRCROOT)/../../../iOS/**", + "$(SRCROOT)/../../../ios/**", "$(SRCROOT)/../node_modules/react-native/Libraries/Text/", ); INFOPLIST_FILE = ../CodePushDemoAppTests/Info.plist; @@ -708,7 +706,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", - "$(SRCROOT)/../../../iOS/**", + "$(SRCROOT)/../../../ios/**", "$(SRCROOT)/../node_modules/react-native/Libraries/Text/", ); INFOPLIST_FILE = ../CodePushDemoAppTests/Info.plist; @@ -727,7 +725,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", - "$(SRCROOT)/../../../iOS/**", + "$(SRCROOT)/../../../ios/**", ); INFOPLIST_FILE = "$(SRCROOT)/CodePushDemoApp/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -747,7 +745,7 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", - "$(SRCROOT)/../../../iOS/**", + "$(SRCROOT)/../../../ios/**", ); INFOPLIST_FILE = "$(SRCROOT)/CodePushDemoApp/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; diff --git a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java index f38b1c8..fc97fa6 100644 --- a/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java +++ b/android/app/src/main/java/com/microsoft/codepush/react/CodePushUpdateUtils.java @@ -1,5 +1,7 @@ package com.microsoft.codepush.react; +import android.util.Base64; + import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.WritableMap; @@ -60,7 +62,7 @@ public class CodePushUpdateUtils { } byte[] hash = messageDigest.digest(); - return String.format("%064x", new java.math.BigInteger(1, hash)); + return Base64.encodeToString(hash, 0, hash.length, 0); } public static void copyNecessaryFilesFromCurrentPackage(String diffManifestFilePath, String currentPackageFolderPath, String newPackageFolderPath) throws IOException{ diff --git a/CodePush.xcodeproj/project.pbxproj b/ios/CodePush.xcodeproj/project.pbxproj similarity index 93% rename from CodePush.xcodeproj/project.pbxproj rename to ios/CodePush.xcodeproj/project.pbxproj index fcf5bcf..3eee8ce 100644 --- a/CodePush.xcodeproj/project.pbxproj +++ b/ios/CodePush.xcodeproj/project.pbxproj @@ -9,7 +9,7 @@ /* Begin PBXBuildFile section */ 13BE3DEE1AC21097009241FE /* CodePush.m in Sources */ = {isa = PBXBuildFile; fileRef = 13BE3DED1AC21097009241FE /* CodePush.m */; }; 1B23B9141BF9267B000BB2F0 /* RCTConvert+CodePushInstallMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B23B9131BF9267B000BB2F0 /* RCTConvert+CodePushInstallMode.m */; }; - 540D20121C7684FE00D6EF41 /* CodePushUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 540D20111C7684FE00D6EF41 /* CodePushUtils.m */; }; + 540D20121C7684FE00D6EF41 /* CodePushUpdateUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 540D20111C7684FE00D6EF41 /* CodePushUpdateUtils.m */; }; 5421FE311C58AD5A00986A55 /* CodePushTelemetryManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5421FE301C58AD5A00986A55 /* CodePushTelemetryManager.m */; }; 54A0026C1C0E2880004C3CEC /* aescrypt.c in Sources */ = {isa = PBXBuildFile; fileRef = 54A0024C1C0E2880004C3CEC /* aescrypt.c */; }; 54A0026D1C0E2880004C3CEC /* aeskey.c in Sources */ = {isa = PBXBuildFile; fileRef = 54A0024D1C0E2880004C3CEC /* aeskey.c */; }; @@ -44,11 +44,11 @@ /* Begin PBXFileReference section */ 134814201AA4EA6300B7C361 /* libCodePush.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCodePush.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 13BE3DEC1AC21097009241FE /* CodePush.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CodePush.h; path = iOS/CodePush.h; sourceTree = ""; }; - 13BE3DED1AC21097009241FE /* CodePush.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePush.m; path = iOS/CodePush.m; sourceTree = ""; }; - 1B23B9131BF9267B000BB2F0 /* RCTConvert+CodePushInstallMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RCTConvert+CodePushInstallMode.m"; path = "iOS/RCTConvert+CodePushInstallMode.m"; sourceTree = ""; }; - 540D20111C7684FE00D6EF41 /* CodePushUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushUtils.m; path = iOS/CodePushUtils.m; sourceTree = ""; }; - 5421FE301C58AD5A00986A55 /* CodePushTelemetryManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushTelemetryManager.m; path = iOS/CodePushTelemetryManager.m; sourceTree = ""; }; + 13BE3DEC1AC21097009241FE /* CodePush.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CodePush.h; path = CodePush/CodePush.h; sourceTree = ""; }; + 13BE3DED1AC21097009241FE /* CodePush.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePush.m; path = CodePush/CodePush.m; sourceTree = ""; }; + 1B23B9131BF9267B000BB2F0 /* RCTConvert+CodePushInstallMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "RCTConvert+CodePushInstallMode.m"; path = "CodePush/RCTConvert+CodePushInstallMode.m"; sourceTree = ""; }; + 540D20111C7684FE00D6EF41 /* CodePushUpdateUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushUpdateUtils.m; path = CodePush/CodePushUpdateUtils.m; sourceTree = ""; }; + 5421FE301C58AD5A00986A55 /* CodePushTelemetryManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushTelemetryManager.m; path = CodePush/CodePushTelemetryManager.m; sourceTree = ""; }; 54A0024A1C0E2880004C3CEC /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; 54A0024B1C0E2880004C3CEC /* aes_via_ace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes_via_ace.h; sourceTree = ""; }; 54A0024C1C0E2880004C3CEC /* aescrypt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aescrypt.c; sourceTree = ""; }; @@ -82,9 +82,9 @@ 54A002691C0E2880004C3CEC /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; 54A0026A1C0E2880004C3CEC /* SSZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SSZipArchive.h; sourceTree = ""; }; 54A0026B1C0E2880004C3CEC /* SSZipArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SSZipArchive.m; sourceTree = ""; }; - 54FFEDDF1BF550630061DD23 /* CodePushDownloadHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushDownloadHandler.m; path = iOS/CodePushDownloadHandler.m; sourceTree = ""; }; - 810D4E6C1B96935000B397E9 /* CodePushPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushPackage.m; path = iOS/CodePushPackage.m; sourceTree = ""; }; - 81D51F391B6181C2000DA084 /* CodePushConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushConfig.m; path = iOS/CodePushConfig.m; sourceTree = ""; }; + 54FFEDDF1BF550630061DD23 /* CodePushDownloadHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushDownloadHandler.m; path = CodePush/CodePushDownloadHandler.m; sourceTree = ""; }; + 810D4E6C1B96935000B397E9 /* CodePushPackage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushPackage.m; path = CodePush/CodePushPackage.m; sourceTree = ""; }; + 81D51F391B6181C2000DA084 /* CodePushConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CodePushConfig.m; path = CodePush/CodePushConfig.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -116,7 +116,7 @@ 54A0026B1C0E2880004C3CEC /* SSZipArchive.m */, ); name = SSZipArchive; - path = iOS/SSZipArchive; + path = CodePush/SSZipArchive; sourceTree = ""; }; 54A002491C0E2880004C3CEC /* aes */ = { @@ -172,7 +172,7 @@ 810D4E6C1B96935000B397E9 /* CodePushPackage.m */, 5421FE301C58AD5A00986A55 /* CodePushTelemetryManager.m */, 81D51F391B6181C2000DA084 /* CodePushConfig.m */, - 540D20111C7684FE00D6EF41 /* CodePushUtils.m */, + 540D20111C7684FE00D6EF41 /* CodePushUpdateUtils.m */, 13BE3DEC1AC21097009241FE /* CodePush.h */, 13BE3DED1AC21097009241FE /* CodePush.m */, 134814211AA4EA7D00B7C361 /* Products */, @@ -236,7 +236,7 @@ buildActionMask = 2147483647; files = ( 54A0026D1C0E2880004C3CEC /* aeskey.c in Sources */, - 540D20121C7684FE00D6EF41 /* CodePushUtils.m in Sources */, + 540D20121C7684FE00D6EF41 /* CodePushUpdateUtils.m in Sources */, 54A0026E1C0E2880004C3CEC /* aestab.c in Sources */, 54A002761C0E2880004C3CEC /* mztools.c in Sources */, 54A002781C0E2880004C3CEC /* zip.c in Sources */, @@ -342,9 +342,8 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/node_modules/react-native/React/**", - "$(SRCROOT)/Examples/CodePushDemoApp/node_modules/react-native/React/**", - "$(SRCROOT)/../react-native/React/**", + "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../Examples/CodePushDemoApp/node_modules/react-native/React/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -362,9 +361,8 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/node_modules/react-native/React/**", - "$(SRCROOT)/Examples/CodePushDemoApp/node_modules/react-native/React/**", - "$(SRCROOT)/../react-native/React/**", + "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../Examples/CodePushDemoApp/node_modules/react-native/React/**", ); LIBRARY_SEARCH_PATHS = "$(inherited)"; OTHER_LDFLAGS = ( diff --git a/CodePush.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/CodePush.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from CodePush.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to ios/CodePush.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/iOS/CodePush.h b/ios/CodePush/CodePush.h similarity index 92% rename from iOS/CodePush.h rename to ios/CodePush/CodePush.h index 4920700..b77a531 100644 --- a/iOS/CodePush.h +++ b/ios/CodePush/CodePush.h @@ -104,13 +104,8 @@ failCallback:(void (^)(NSError *err))failCallback; @end -@interface CodePushUtils : NSObject +@interface CodePushUpdateUtils : NSObject -+ (void)addContentsOfFolderToManifest:(NSString *)folderPath - pathPrefix:(NSString *)pathPrefix - manifest:(NSMutableArray *)manifest - error:(NSError **)error; -+ (NSString *)computeHash:(NSData *)inputData; + (void)copyEntriesInFolder:(NSString *)sourceFolder destFolder:(NSString *)destFolder error:(NSError **)error; diff --git a/iOS/CodePush.m b/ios/CodePush/CodePush.m similarity index 100% rename from iOS/CodePush.m rename to ios/CodePush/CodePush.m diff --git a/iOS/CodePushConfig.m b/ios/CodePush/CodePushConfig.m similarity index 100% rename from iOS/CodePushConfig.m rename to ios/CodePush/CodePushConfig.m diff --git a/iOS/CodePushDownloadHandler.m b/ios/CodePush/CodePushDownloadHandler.m similarity index 100% rename from iOS/CodePushDownloadHandler.m rename to ios/CodePush/CodePushDownloadHandler.m diff --git a/iOS/CodePushPackage.m b/ios/CodePush/CodePushPackage.m similarity index 91% rename from iOS/CodePushPackage.m rename to ios/CodePush/CodePushPackage.m index eac0371..929f3d3 100644 --- a/iOS/CodePushPackage.m +++ b/ios/CodePush/CodePushPackage.m @@ -203,15 +203,15 @@ NSString * const UnzippedFolderName = @"unzipped"; doneCallback:(void (^)())doneCallback failCallback:(void (^)(NSError *err))failCallback { - NSString *newPackageHash = updatePackage[@"packageHash"]; - NSString *newPackageFolderPath = [self getPackageFolderPath:newPackageHash]; - NSString *newPackageMetadataPath = [newPackageFolderPath stringByAppendingPathComponent:@"app.json"]; + NSString *newUpdateHash = updatePackage[@"packageHash"]; + NSString *newUpdateFolderPath = [self getPackageFolderPath:newUpdateHash]; + NSString *newUpdateMetadataPath = [newUpdateFolderPath stringByAppendingPathComponent:@"app.json"]; NSError *error; - if ([[NSFileManager defaultManager] fileExistsAtPath:newPackageFolderPath]) { + if ([[NSFileManager defaultManager] fileExistsAtPath:newUpdateFolderPath]) { // This removes any stale data in newPackageFolderPath that could have been left // uncleared due to a crash or error during the download or install process. - [[NSFileManager defaultManager] removeItemAtPath:newPackageFolderPath + [[NSFileManager defaultManager] removeItemAtPath:newUpdateFolderPath error:&error]; } else if (![[NSFileManager defaultManager] fileExistsAtPath:[self getCodePushPath]]) { [[NSFileManager defaultManager] createDirectoryAtPath:[self getCodePushPath] @@ -225,7 +225,7 @@ NSString * const UnzippedFolderName = @"unzipped"; } NSString *downloadFilePath = [self getDownloadFilePath]; - NSString *bundleFilePath = [newPackageFolderPath stringByAppendingPathComponent:UpdateBundleFileName]; + NSString *bundleFilePath = [newUpdateFolderPath stringByAppendingPathComponent:UpdateBundleFileName]; CodePushDownloadHandler *downloadHandler = [[CodePushDownloadHandler alloc] init:downloadFilePath @@ -267,7 +267,7 @@ NSString * const UnzippedFolderName = @"unzipped"; } [[NSFileManager defaultManager] copyItemAtPath:currentPackageFolderPath - toPath:newPackageFolderPath + toPath:newUpdateFolderPath error:&error]; if (error) { failCallback(error); @@ -289,11 +289,14 @@ NSString * const UnzippedFolderName = @"unzipped"; error:&error]; NSArray *deletedFiles = manifestJSON[@"deletedFiles"]; for (NSString *deletedFileName in deletedFiles) { - [[NSFileManager defaultManager] removeItemAtPath:[newPackageFolderPath stringByAppendingPathComponent:deletedFileName] - error:&error]; - if (error) { - failCallback(error); - return; + NSString *absoluteDeletedFilePath = [newUpdateFolderPath stringByAppendingPathComponent:deletedFileName]; + if ([[NSFileManager defaultManager] fileExistsAtPath:absoluteDeletedFilePath]) { + [[NSFileManager defaultManager] removeItemAtPath:absoluteDeletedFilePath + error:&error]; + if (error) { + failCallback(error); + return; + } } } @@ -305,8 +308,8 @@ NSString * const UnzippedFolderName = @"unzipped"; } } - [CodePushUtils copyEntriesInFolder:unzippedFolderPath - destFolder:newPackageFolderPath + [CodePushUpdateUtils copyEntriesInFolder:unzippedFolderPath + destFolder:newUpdateFolderPath error:&error]; if (error) { failCallback(error); @@ -320,15 +323,15 @@ NSString * const UnzippedFolderName = @"unzipped"; nonFailingError = nil; } - NSString *relativeBundlePath = [CodePushUtils findMainBundleInFolder:newPackageFolderPath - error:&error]; + NSString *relativeBundlePath = [CodePushUpdateUtils findMainBundleInFolder:newUpdateFolderPath + error:&error]; if (error) { failCallback(error); return; } if (relativeBundlePath) { - NSString *absoluteBundlePath = [newPackageFolderPath stringByAppendingPathComponent:relativeBundlePath]; + NSString *absoluteBundlePath = [newUpdateFolderPath stringByAppendingPathComponent:relativeBundlePath]; NSDictionary *bundleFileAttributes = [[[NSFileManager defaultManager] attributesOfItemAtPath:absoluteBundlePath error:&error] mutableCopy]; if (error) { failCallback(error); @@ -356,8 +359,8 @@ NSString * const UnzippedFolderName = @"unzipped"; return; } - if ([[NSFileManager defaultManager] fileExistsAtPath:newPackageMetadataPath]) { - [[NSFileManager defaultManager] removeItemAtPath:newPackageMetadataPath + if ([[NSFileManager defaultManager] fileExistsAtPath:newUpdateMetadataPath]) { + [[NSFileManager defaultManager] removeItemAtPath:newUpdateMetadataPath error:&error]; if (error) { failCallback(error); @@ -365,9 +368,9 @@ NSString * const UnzippedFolderName = @"unzipped"; } } - if (![CodePushUtils verifyHashForZipUpdate:newPackageFolderPath - expectedHash:newPackageHash - error:&error]) { + if (![CodePushUpdateUtils verifyHashForZipUpdate:newUpdateFolderPath + expectedHash:newUpdateHash + error:&error]) { if (error) { failCallback(error); return; @@ -383,7 +386,7 @@ NSString * const UnzippedFolderName = @"unzipped"; return; } } else { - [[NSFileManager defaultManager] createDirectoryAtPath:newPackageFolderPath + [[NSFileManager defaultManager] createDirectoryAtPath:newUpdateFolderPath withIntermediateDirectories:YES attributes:nil error:&error]; @@ -402,7 +405,7 @@ NSString * const UnzippedFolderName = @"unzipped"; NSString *packageJsonString = [[NSString alloc] initWithData:updateSerializedData encoding:NSUTF8StringEncoding]; - [packageJsonString writeToFile:newPackageMetadataPath + [packageJsonString writeToFile:newUpdateMetadataPath atomically:YES encoding:NSUTF8StringEncoding error:&error]; diff --git a/iOS/CodePushTelemetryManager.m b/ios/CodePush/CodePushTelemetryManager.m similarity index 100% rename from iOS/CodePushTelemetryManager.m rename to ios/CodePush/CodePushTelemetryManager.m diff --git a/iOS/CodePushUtils.m b/ios/CodePush/CodePushUpdateUtils.m similarity index 99% rename from iOS/CodePushUtils.m rename to ios/CodePush/CodePushUpdateUtils.m index fc05b21..8a2e23d 100644 --- a/iOS/CodePushUtils.m +++ b/ios/CodePush/CodePushUpdateUtils.m @@ -1,7 +1,7 @@ #import "CodePush.h" #include -@implementation CodePushUtils +@implementation CodePushUpdateUtils + (void)addContentsOfFolderToManifest:(NSString *)folderPath pathPrefix:(NSString *)pathPrefix diff --git a/iOS/RCTConvert+CodePushInstallMode.m b/ios/CodePush/RCTConvert+CodePushInstallMode.m similarity index 100% rename from iOS/RCTConvert+CodePushInstallMode.m rename to ios/CodePush/RCTConvert+CodePushInstallMode.m diff --git a/iOS/SSZipArchive/Common.h b/ios/CodePush/SSZipArchive/Common.h similarity index 100% rename from iOS/SSZipArchive/Common.h rename to ios/CodePush/SSZipArchive/Common.h diff --git a/iOS/SSZipArchive/README.md b/ios/CodePush/SSZipArchive/README.md similarity index 100% rename from iOS/SSZipArchive/README.md rename to ios/CodePush/SSZipArchive/README.md diff --git a/iOS/SSZipArchive/SSZipArchive.h b/ios/CodePush/SSZipArchive/SSZipArchive.h similarity index 100% rename from iOS/SSZipArchive/SSZipArchive.h rename to ios/CodePush/SSZipArchive/SSZipArchive.h diff --git a/iOS/SSZipArchive/SSZipArchive.m b/ios/CodePush/SSZipArchive/SSZipArchive.m similarity index 100% rename from iOS/SSZipArchive/SSZipArchive.m rename to ios/CodePush/SSZipArchive/SSZipArchive.m diff --git a/iOS/SSZipArchive/aes/aes.h b/ios/CodePush/SSZipArchive/aes/aes.h similarity index 100% rename from iOS/SSZipArchive/aes/aes.h rename to ios/CodePush/SSZipArchive/aes/aes.h diff --git a/iOS/SSZipArchive/aes/aes_via_ace.h b/ios/CodePush/SSZipArchive/aes/aes_via_ace.h similarity index 100% rename from iOS/SSZipArchive/aes/aes_via_ace.h rename to ios/CodePush/SSZipArchive/aes/aes_via_ace.h diff --git a/iOS/SSZipArchive/aes/aescrypt.c b/ios/CodePush/SSZipArchive/aes/aescrypt.c similarity index 100% rename from iOS/SSZipArchive/aes/aescrypt.c rename to ios/CodePush/SSZipArchive/aes/aescrypt.c diff --git a/iOS/SSZipArchive/aes/aeskey.c b/ios/CodePush/SSZipArchive/aes/aeskey.c similarity index 100% rename from iOS/SSZipArchive/aes/aeskey.c rename to ios/CodePush/SSZipArchive/aes/aeskey.c diff --git a/iOS/SSZipArchive/aes/aesopt.h b/ios/CodePush/SSZipArchive/aes/aesopt.h similarity index 100% rename from iOS/SSZipArchive/aes/aesopt.h rename to ios/CodePush/SSZipArchive/aes/aesopt.h diff --git a/iOS/SSZipArchive/aes/aestab.c b/ios/CodePush/SSZipArchive/aes/aestab.c similarity index 100% rename from iOS/SSZipArchive/aes/aestab.c rename to ios/CodePush/SSZipArchive/aes/aestab.c diff --git a/iOS/SSZipArchive/aes/aestab.h b/ios/CodePush/SSZipArchive/aes/aestab.h similarity index 100% rename from iOS/SSZipArchive/aes/aestab.h rename to ios/CodePush/SSZipArchive/aes/aestab.h diff --git a/iOS/SSZipArchive/aes/brg_endian.h b/ios/CodePush/SSZipArchive/aes/brg_endian.h similarity index 100% rename from iOS/SSZipArchive/aes/brg_endian.h rename to ios/CodePush/SSZipArchive/aes/brg_endian.h diff --git a/iOS/SSZipArchive/aes/brg_types.h b/ios/CodePush/SSZipArchive/aes/brg_types.h similarity index 100% rename from iOS/SSZipArchive/aes/brg_types.h rename to ios/CodePush/SSZipArchive/aes/brg_types.h diff --git a/iOS/SSZipArchive/aes/entropy.c b/ios/CodePush/SSZipArchive/aes/entropy.c similarity index 100% rename from iOS/SSZipArchive/aes/entropy.c rename to ios/CodePush/SSZipArchive/aes/entropy.c diff --git a/iOS/SSZipArchive/aes/entropy.h b/ios/CodePush/SSZipArchive/aes/entropy.h similarity index 100% rename from iOS/SSZipArchive/aes/entropy.h rename to ios/CodePush/SSZipArchive/aes/entropy.h diff --git a/iOS/SSZipArchive/aes/fileenc.c b/ios/CodePush/SSZipArchive/aes/fileenc.c similarity index 100% rename from iOS/SSZipArchive/aes/fileenc.c rename to ios/CodePush/SSZipArchive/aes/fileenc.c diff --git a/iOS/SSZipArchive/aes/fileenc.h b/ios/CodePush/SSZipArchive/aes/fileenc.h similarity index 100% rename from iOS/SSZipArchive/aes/fileenc.h rename to ios/CodePush/SSZipArchive/aes/fileenc.h diff --git a/iOS/SSZipArchive/aes/hmac.c b/ios/CodePush/SSZipArchive/aes/hmac.c similarity index 100% rename from iOS/SSZipArchive/aes/hmac.c rename to ios/CodePush/SSZipArchive/aes/hmac.c diff --git a/iOS/SSZipArchive/aes/hmac.h b/ios/CodePush/SSZipArchive/aes/hmac.h similarity index 100% rename from iOS/SSZipArchive/aes/hmac.h rename to ios/CodePush/SSZipArchive/aes/hmac.h diff --git a/iOS/SSZipArchive/aes/prng.c b/ios/CodePush/SSZipArchive/aes/prng.c similarity index 100% rename from iOS/SSZipArchive/aes/prng.c rename to ios/CodePush/SSZipArchive/aes/prng.c diff --git a/iOS/SSZipArchive/aes/prng.h b/ios/CodePush/SSZipArchive/aes/prng.h similarity index 100% rename from iOS/SSZipArchive/aes/prng.h rename to ios/CodePush/SSZipArchive/aes/prng.h diff --git a/iOS/SSZipArchive/aes/pwd2key.c b/ios/CodePush/SSZipArchive/aes/pwd2key.c similarity index 100% rename from iOS/SSZipArchive/aes/pwd2key.c rename to ios/CodePush/SSZipArchive/aes/pwd2key.c diff --git a/iOS/SSZipArchive/aes/pwd2key.h b/ios/CodePush/SSZipArchive/aes/pwd2key.h similarity index 100% rename from iOS/SSZipArchive/aes/pwd2key.h rename to ios/CodePush/SSZipArchive/aes/pwd2key.h diff --git a/iOS/SSZipArchive/aes/sha1.c b/ios/CodePush/SSZipArchive/aes/sha1.c similarity index 100% rename from iOS/SSZipArchive/aes/sha1.c rename to ios/CodePush/SSZipArchive/aes/sha1.c diff --git a/iOS/SSZipArchive/aes/sha1.h b/ios/CodePush/SSZipArchive/aes/sha1.h similarity index 100% rename from iOS/SSZipArchive/aes/sha1.h rename to ios/CodePush/SSZipArchive/aes/sha1.h diff --git a/iOS/SSZipArchive/minizip/crypt.h b/ios/CodePush/SSZipArchive/minizip/crypt.h similarity index 100% rename from iOS/SSZipArchive/minizip/crypt.h rename to ios/CodePush/SSZipArchive/minizip/crypt.h diff --git a/iOS/SSZipArchive/minizip/ioapi.c b/ios/CodePush/SSZipArchive/minizip/ioapi.c similarity index 100% rename from iOS/SSZipArchive/minizip/ioapi.c rename to ios/CodePush/SSZipArchive/minizip/ioapi.c diff --git a/iOS/SSZipArchive/minizip/ioapi.h b/ios/CodePush/SSZipArchive/minizip/ioapi.h similarity index 100% rename from iOS/SSZipArchive/minizip/ioapi.h rename to ios/CodePush/SSZipArchive/minizip/ioapi.h diff --git a/iOS/SSZipArchive/minizip/mztools.c b/ios/CodePush/SSZipArchive/minizip/mztools.c similarity index 100% rename from iOS/SSZipArchive/minizip/mztools.c rename to ios/CodePush/SSZipArchive/minizip/mztools.c diff --git a/iOS/SSZipArchive/minizip/mztools.h b/ios/CodePush/SSZipArchive/minizip/mztools.h similarity index 100% rename from iOS/SSZipArchive/minizip/mztools.h rename to ios/CodePush/SSZipArchive/minizip/mztools.h diff --git a/iOS/SSZipArchive/minizip/unzip.c b/ios/CodePush/SSZipArchive/minizip/unzip.c similarity index 100% rename from iOS/SSZipArchive/minizip/unzip.c rename to ios/CodePush/SSZipArchive/minizip/unzip.c diff --git a/iOS/SSZipArchive/minizip/unzip.h b/ios/CodePush/SSZipArchive/minizip/unzip.h similarity index 100% rename from iOS/SSZipArchive/minizip/unzip.h rename to ios/CodePush/SSZipArchive/minizip/unzip.h diff --git a/iOS/SSZipArchive/minizip/zip.c b/ios/CodePush/SSZipArchive/minizip/zip.c similarity index 100% rename from iOS/SSZipArchive/minizip/zip.c rename to ios/CodePush/SSZipArchive/minizip/zip.c diff --git a/iOS/SSZipArchive/minizip/zip.h b/ios/CodePush/SSZipArchive/minizip/zip.h similarity index 100% rename from iOS/SSZipArchive/minizip/zip.h rename to ios/CodePush/SSZipArchive/minizip/zip.h