From 1ac8f4f3815fc2ce7aebf32daa77aa92684d41c3 Mon Sep 17 00:00:00 2001 From: jnpdx Date: Mon, 9 Sep 2019 13:14:54 -0700 Subject: [PATCH 1/7] Fix Xcode warnings --- Downloader.h | 2 +- Downloader.m | 8 ++++---- RNFS.podspec | 2 +- RNFSManager.h | 2 +- RNFSManager.m | 14 +++++++++++--- Uploader.m | 2 +- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/Downloader.h b/Downloader.h index 9c0a6031..f707492d 100644 --- a/Downloader.h +++ b/Downloader.h @@ -4,7 +4,7 @@ typedef void (^DownloadCompleteCallback)(NSNumber*, NSNumber*); typedef void (^ErrorCallback)(NSError*); typedef void (^BeginCallback)(NSNumber*, NSNumber*, NSDictionary*); typedef void (^ProgressCallback)(NSNumber*, NSNumber*); -typedef void (^ResumableCallback)(); +typedef void (^ResumableCallback)(void); @interface RNFSDownloadParams : NSObject diff --git a/Downloader.m b/Downloader.m index 91ba9883..d88a9c02 100644 --- a/Downloader.m +++ b/Downloader.m @@ -90,7 +90,7 @@ - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTas NSNumber* progress = [NSNumber numberWithUnsignedInt: floor(doublePercents)]; if ([progress unsignedIntValue] % [_params.progressDivider integerValue] == 0) { if (([progress unsignedIntValue] != [_lastProgressValue unsignedIntValue]) || ([_bytesWritten unsignedIntegerValue] == [_contentLength longValue])) { - NSLog(@"---Progress callback EMIT--- %zu", [progress unsignedIntValue]); + NSLog(@"---Progress callback EMIT--- %u", [progress unsignedIntValue]); _lastProgressValue = [NSNumber numberWithUnsignedInt:[progress unsignedIntValue]]; return _params.progressCallback(_contentLength, _bytesWritten); } @@ -140,15 +140,15 @@ - (void)stopDownload [_task cancelByProducingResumeData:^(NSData * _Nullable resumeData) { if (resumeData != nil) { self.resumeData = resumeData; - _params.resumableCallback(); + self->_params.resumableCallback(); } else { NSError *error = [NSError errorWithDomain:@"RNFS" - code:@"Aborted" + code:0 //used to pass an NSString @"Aborted" here, but it needs an NSInteger userInfo:@{ NSLocalizedDescriptionKey: @"Download has been aborted" }]; - _params.errorCallback(error); + self->_params.errorCallback(error); } }]; diff --git a/RNFS.podspec b/RNFS.podspec index af731d96..272e07e3 100644 --- a/RNFS.podspec +++ b/RNFS.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.license = pjson["license"] s.author = { "Johannes Lumpe" => "johannes@lum.pe" } - s.ios.deployment_target = '7.0' + s.ios.deployment_target = '8.0' s.tvos.deployment_target = '9.2' s.source = { :git => "https://github.com/itinance/react-native-fs", :tag => "v#{s.version}" } diff --git a/RNFSManager.h b/RNFSManager.h index b0189ed5..f384a41a 100644 --- a/RNFSManager.h +++ b/RNFSManager.h @@ -9,7 +9,7 @@ #import #import -typedef void (^CompletionHandler)(); +typedef void (^CompletionHandler)(void); @interface RNFSManager : NSObject diff --git a/RNFSManager.m b/RNFSManager.m index 68a0d810..492199f3 100755 --- a/RNFSManager.m +++ b/RNFSManager.m @@ -157,8 +157,15 @@ + (BOOL)requiresMainQueueSetup [fH writeData:data]; return resolve(nil); - } @catch (NSException *e) { - return [self reject:reject withError:e]; + } @catch (NSException *exception) { + NSMutableDictionary * info = [NSMutableDictionary dictionary]; + [info setValue:exception.name forKey:@"ExceptionName"]; + [info setValue:exception.reason forKey:@"ExceptionReason"]; + [info setValue:exception.callStackReturnAddresses forKey:@"ExceptionCallStackReturnAddresses"]; + [info setValue:exception.callStackSymbols forKey:@"ExceptionCallStackSymbols"]; + [info setValue:exception.userInfo forKey:@"ExceptionUserInfo"]; + NSError *err = [NSError errorWithDomain:@"RNFS" code:0 userInfo:info]; + return [self reject:reject withError:err]; } } @@ -808,7 +815,8 @@ + (BOOL)requiresMainQueueSetup rejecter: (RCTPromiseRejectBlock) reject) { NSURL* url = [NSURL URLWithString:imageUri]; - __block NSURL* videoURL = [NSURL URLWithString:destination]; + //unused? + //__block NSURL* videoURL = [NSURL URLWithString:destination]; __block NSError *error = nil; PHFetchResult *phAssetFetchResult = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil]; diff --git a/Uploader.m b/Uploader.m index d0dd2a14..4be87362 100644 --- a/Uploader.m +++ b/Uploader.m @@ -106,7 +106,7 @@ - (void)uploadFiles:(RNFSUploadParams*)params NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:(id)self delegateQueue:[NSOperationQueue mainQueue]]; _task = [session dataTaskWithRequest:req completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - return _params.completeCallback(str, response); + return self->_params.completeCallback(str, response); }]; [_task resume]; _params.beginCallback(); From a2e638ed7d410a284d08f0d13ab065799dd8719a Mon Sep 17 00:00:00 2001 From: jnpdx Date: Mon, 9 Sep 2019 13:46:54 -0700 Subject: [PATCH 2/7] Move to modern event emitter --- FS.common.js | 20 +++++++++++--------- RNFSManager.h | 3 ++- RNFSManager.m | 17 ++++++++--------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/FS.common.js b/FS.common.js index d8ba4e45..9a18ef98 100755 --- a/FS.common.js +++ b/FS.common.js @@ -9,8 +9,10 @@ var RNFSManager = require('react-native').NativeModules.RNFSManager; -var NativeAppEventEmitter = require('react-native').NativeAppEventEmitter; // iOS -var DeviceEventEmitter = require('react-native').DeviceEventEmitter; // Android +var NativeEventEmitter = require('react-native').NativeEventEmitter; + +var RNFS_NativeEventEmitter = new NativeEventEmitter(RNFSManager); + var base64 = require('base-64'); var utf8 = require('utf8'); var isIOS = require('react-native').Platform.OS === 'ios'; @@ -494,15 +496,15 @@ var RNFS = { var subscriptions = []; if (options.begin) { - subscriptions.push(NativeAppEventEmitter.addListener('DownloadBegin-' + jobId, options.begin)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('DownloadBegin', options.begin)); } if (options.progress) { - subscriptions.push(NativeAppEventEmitter.addListener('DownloadProgress-' + jobId, options.progress)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('DownloadProgress', options.progress)); } if (options.resumable) { - subscriptions.push(NativeAppEventEmitter.addListener('DownloadResumable-' + jobId, options.resumable)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('DownloadResumable', options.resumable)); } var bridgeOptions = { @@ -547,19 +549,19 @@ var RNFS = { if (options.method && typeof options.method !== 'string') throw new Error('uploadFiles: Invalid value for property `method`'); if (options.begin) { - subscriptions.push(NativeAppEventEmitter.addListener('UploadBegin-' + jobId, options.begin)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('UploadBegin', options.begin)); } if (options.beginCallback && options.beginCallback instanceof Function) { // Deprecated - subscriptions.push(NativeAppEventEmitter.addListener('UploadBegin-' + jobId, options.beginCallback)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('UploadBegin', options.beginCallback)); } if (options.progress) { - subscriptions.push(NativeAppEventEmitter.addListener('UploadProgress-' + jobId, options.progress)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('UploadProgress', options.progress)); } if (options.progressCallback && options.progressCallback instanceof Function) { // Deprecated - subscriptions.push(NativeAppEventEmitter.addListener('UploadProgress-' + jobId, options.progressCallback)); + subscriptions.push(RNFS_NativeEventEmitter.addListener('UploadProgress', options.progressCallback)); } var bridgeOptions = { diff --git a/RNFSManager.h b/RNFSManager.h index f384a41a..8ef10e40 100644 --- a/RNFSManager.h +++ b/RNFSManager.h @@ -7,11 +7,12 @@ // #import +#import #import typedef void (^CompletionHandler)(void); -@interface RNFSManager : NSObject +@interface RNFSManager : RCTEventEmitter +(void)setCompletionHandlerForIdentifier: (NSString *)identifier completionHandler: (CompletionHandler)completionHandler; diff --git a/RNFSManager.m b/RNFSManager.m index 492199f3..fadc43ae 100755 --- a/RNFSManager.m +++ b/RNFSManager.m @@ -508,22 +508,21 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^(NSNumber* statusCode, NSNumber* contentLength, NSDictionary* headers) { - [self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadBegin-%@", jobId] - body:@{@"jobId": jobId, - @"statusCode": statusCode, - @"contentLength": contentLength, - @"headers": headers ?: [NSNull null]}]; + [self sendEventWithName:[NSString stringWithFormat:@"DownloadBegin-%@", jobId] body:@{@"jobId": jobId, + @"statusCode": statusCode, + @"contentLength": contentLength, + @"headers": headers ?: [NSNull null]}]; }; params.progressCallback = ^(NSNumber* contentLength, NSNumber* bytesWritten) { - [self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadProgress-%@", jobId] + [self sendEventWithName:[NSString stringWithFormat:@"DownloadProgress-%@", jobId] body:@{@"jobId": jobId, @"contentLength": contentLength, @"bytesWritten": bytesWritten}]; }; params.resumableCallback = ^() { - [self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"DownloadResumable-%@", jobId] body:nil]; + [self sendEventWithName:[NSString stringWithFormat:@"DownloadResumable-%@", jobId] body:nil]; }; if (!self.downloaders) self.downloaders = [[NSMutableDictionary alloc] init]; @@ -621,12 +620,12 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^() { - [self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"UploadBegin-%@", jobId] + [self sendEventWithName:[NSString stringWithFormat:@"UploadBegin-%@", jobId] body:@{@"jobId": jobId}]; }; params.progressCallback = ^(NSNumber* totalBytesExpectedToSend, NSNumber* totalBytesSent) { - [self.bridge.eventDispatcher sendAppEventWithName:[NSString stringWithFormat:@"UploadProgress-%@", jobId] + [self sendEventWithName:[NSString stringWithFormat:@"UploadProgress-%@", jobId] body:@{@"jobId": jobId, @"totalBytesExpectedToSend": totalBytesExpectedToSend, @"totalBytesSent": totalBytesSent}]; From 16f1f187f9717556735e54db58e1941e197a9576 Mon Sep 17 00:00:00 2001 From: jnpdx Date: Mon, 9 Sep 2019 14:26:16 -0700 Subject: [PATCH 3/7] Fix remaining iOS emitter issues --- RNFSManager.m | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/RNFSManager.m b/RNFSManager.m index fadc43ae..a8d8bcc1 100755 --- a/RNFSManager.m +++ b/RNFSManager.m @@ -459,6 +459,11 @@ + (BOOL)requiresMainQueueSetup resolve(nil); } +- (NSArray *)supportedEvents +{ + return @[@"UploadBegin",@"UploadProgress",@"DownloadBegin",@"DownloadProgress",@"DownloadResumable"]; +} + RCT_EXPORT_METHOD(downloadFile:(NSDictionary *)options resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) @@ -508,21 +513,21 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^(NSNumber* statusCode, NSNumber* contentLength, NSDictionary* headers) { - [self sendEventWithName:[NSString stringWithFormat:@"DownloadBegin-%@", jobId] body:@{@"jobId": jobId, + [self sendEventWithName:@"DownloadBegin" body:@{@"jobId": jobId, @"statusCode": statusCode, @"contentLength": contentLength, @"headers": headers ?: [NSNull null]}]; }; params.progressCallback = ^(NSNumber* contentLength, NSNumber* bytesWritten) { - [self sendEventWithName:[NSString stringWithFormat:@"DownloadProgress-%@", jobId] + [self sendEventWithName:@"DownloadProgress" body:@{@"jobId": jobId, @"contentLength": contentLength, @"bytesWritten": bytesWritten}]; }; params.resumableCallback = ^() { - [self sendEventWithName:[NSString stringWithFormat:@"DownloadResumable-%@", jobId] body:nil]; + [self sendEventWithName:@"DownloadResumable" body:nil]; }; if (!self.downloaders) self.downloaders = [[NSMutableDictionary alloc] init]; @@ -620,12 +625,12 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^() { - [self sendEventWithName:[NSString stringWithFormat:@"UploadBegin-%@", jobId] + [self sendEventWithName:@"UploadBegin" body:@{@"jobId": jobId}]; }; params.progressCallback = ^(NSNumber* totalBytesExpectedToSend, NSNumber* totalBytesSent) { - [self sendEventWithName:[NSString stringWithFormat:@"UploadProgress-%@", jobId] + [self sendEventWithName:@"UploadProgress" body:@{@"jobId": jobId, @"totalBytesExpectedToSend": totalBytesExpectedToSend, @"totalBytesSent": totalBytesSent}]; From 18bcf3f5dc8048530d48edcfa8ae1324b7bb9428 Mon Sep 17 00:00:00 2001 From: jnpdx Date: Mon, 9 Sep 2019 14:26:22 -0700 Subject: [PATCH 4/7] Fix Java Warnings --- android/build.gradle | 2 +- android/src/main/java/com/rnfs/Downloader.java | 6 +----- android/src/main/java/com/rnfs/RNFSManager.java | 12 ++++++------ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 47ae512b..b956cfa3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -19,7 +19,7 @@ android { buildToolsVersion safeExtGet('buildToolsVersion', '26.0.3') defaultConfig { - minSdkVersion safeExtGet('minSdkVersion', 16) + minSdkVersion safeExtGet('minSdkVersion', 19) targetSdkVersion safeExtGet('targetSdkVersion', 26) versionCode 1 versionName "1.0" diff --git a/android/src/main/java/com/rnfs/Downloader.java b/android/src/main/java/com/rnfs/Downloader.java index 3764bd17..b4dbd949 100644 --- a/android/src/main/java/com/rnfs/Downloader.java +++ b/android/src/main/java/com/rnfs/Downloader.java @@ -1,14 +1,10 @@ package com.rnfs; -import java.io.File; import java.io.FileOutputStream; -import java.io.FileInputStream; import java.io.BufferedInputStream; import java.io.InputStream; import java.io.OutputStream; -import java.io.IOException; import java.net.URL; -import java.net.URLConnection; import java.net.HttpURLConnection; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; @@ -90,7 +86,7 @@ private void download(DownloadParams param, DownloadResult res) throws Exception if(statusCode >= 200 && statusCode < 300) { Map> headers = connection.getHeaderFields(); - Map headersFlat = new HashMap(); + Map headersFlat = new HashMap<>(); for (Map.Entry> entry : headers.entrySet()) { String headerKey = entry.getKey(); diff --git a/android/src/main/java/com/rnfs/RNFSManager.java b/android/src/main/java/com/rnfs/RNFSManager.java index 015dae3a..f44a69bb 100755 --- a/android/src/main/java/com/rnfs/RNFSManager.java +++ b/android/src/main/java/com/rnfs/RNFSManager.java @@ -11,7 +11,6 @@ import android.util.Base64; import android.util.SparseArray; import android.media.MediaScannerConnection; -import android.net.Uri; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; @@ -57,8 +56,8 @@ public class RNFSManager extends ReactContextBaseJavaModule { private static final String RNFSFileTypeRegular = "RNFSFileTypeRegular"; private static final String RNFSFileTypeDirectory = "RNFSFileTypeDirectory"; - private SparseArray downloaders = new SparseArray(); - private SparseArray uploaders = new SparseArray(); + private SparseArray downloaders = new SparseArray<>(); + private SparseArray uploaders = new SparseArray<>(); private ReactApplicationContext reactContext; @@ -69,7 +68,7 @@ public RNFSManager(ReactApplicationContext reactContext) { @Override public String getName() { - return this.MODULE_NAME; + return MODULE_NAME; } private Uri getFileUri(String filepath, boolean isDirectoryAllowed) throws IORejectionException { @@ -94,6 +93,7 @@ private String getOriginalFilepath(String filepath, boolean isDirectoryAllowed) if (cursor.moveToFirst()) { originalFilepath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); } + cursor.close(); } catch (IllegalArgumentException ignored) { } } @@ -288,7 +288,7 @@ public void readFileRes(String filename, Promise promise) { byte[] buffer = new byte[stream.available()]; stream.read(buffer); String base64Content = Base64.encodeToString(buffer, Base64.NO_WRAP); - promise.resolve(base64Content);; + promise.resolve(base64Content); } catch (Exception ex) { ex.printStackTrace(); reject(promise, filename, ex); @@ -476,7 +476,7 @@ public void readDirAssets(String directory, Promise promise) { } } catch (IOException ex) { //.. ah.. is a directory or a compressed file? - isDirectory = ex.getMessage().indexOf("compressed") == -1; + isDirectory = !ex.getMessage().contains("compressed"); } fileMap.putInt("size", length); fileMap.putInt("type", isDirectory ? 1 : 0); // if 0, probably a folder.. From de97ec1fc01d7ecb7a8ebe5b11db0ab19eba0c5c Mon Sep 17 00:00:00 2001 From: jnpdx Date: Mon, 9 Sep 2019 14:54:57 -0700 Subject: [PATCH 5/7] Fix remaining Android and iOS errors --- RNFSManager.m | 2 -- android/src/main/java/com/rnfs/RNFSManager.java | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/RNFSManager.m b/RNFSManager.m index a8d8bcc1..e243064b 100755 --- a/RNFSManager.m +++ b/RNFSManager.m @@ -32,8 +32,6 @@ @implementation RNFSManager static NSMutableDictionary *completionHandlers; -@synthesize bridge = _bridge; - RCT_EXPORT_MODULE(); - (dispatch_queue_t)methodQueue diff --git a/android/src/main/java/com/rnfs/RNFSManager.java b/android/src/main/java/com/rnfs/RNFSManager.java index f44a69bb..68e6d5aa 100755 --- a/android/src/main/java/com/rnfs/RNFSManager.java +++ b/android/src/main/java/com/rnfs/RNFSManager.java @@ -742,7 +742,7 @@ public void onDownloadBegin(int statusCode, long contentLength, Map Date: Mon, 9 Sep 2019 15:29:50 -0700 Subject: [PATCH 6/7] nil checks of event bridge --- RNFSManager.m | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/RNFSManager.m b/RNFSManager.m index e243064b..587d557a 100755 --- a/RNFSManager.m +++ b/RNFSManager.m @@ -511,21 +511,24 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^(NSNumber* statusCode, NSNumber* contentLength, NSDictionary* headers) { - [self sendEventWithName:@"DownloadBegin" body:@{@"jobId": jobId, + if (self.bridge != nil) + [self sendEventWithName:@"DownloadBegin" body:@{@"jobId": jobId, @"statusCode": statusCode, @"contentLength": contentLength, @"headers": headers ?: [NSNull null]}]; }; params.progressCallback = ^(NSNumber* contentLength, NSNumber* bytesWritten) { - [self sendEventWithName:@"DownloadProgress" + if (self.bridge != nil) + [self sendEventWithName:@"DownloadProgress" body:@{@"jobId": jobId, @"contentLength": contentLength, @"bytesWritten": bytesWritten}]; }; params.resumableCallback = ^() { - [self sendEventWithName:@"DownloadResumable" body:nil]; + if (self.bridge != nil) + [self sendEventWithName:@"DownloadResumable" body:nil]; }; if (!self.downloaders) self.downloaders = [[NSMutableDictionary alloc] init]; @@ -623,12 +626,14 @@ + (BOOL)requiresMainQueueSetup }; params.beginCallback = ^() { - [self sendEventWithName:@"UploadBegin" + if (self.bridge != nil) + [self sendEventWithName:@"UploadBegin" body:@{@"jobId": jobId}]; }; params.progressCallback = ^(NSNumber* totalBytesExpectedToSend, NSNumber* totalBytesSent) { - [self sendEventWithName:@"UploadProgress" + if (self.bridge != nil) + [self sendEventWithName:@"UploadProgress" body:@{@"jobId": jobId, @"totalBytesExpectedToSend": totalBytesExpectedToSend, @"totalBytesSent": totalBytesSent}]; From 1f258f7ec2ee3779c24b560339b1b21dd0fa7cc8 Mon Sep 17 00:00:00 2001 From: jnpdx Date: Wed, 11 Sep 2019 10:56:44 -0700 Subject: [PATCH 7/7] Change deployment target to 8.0 --- IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj | 4 ++-- RNFS.xcodeproj/project.pbxproj | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj b/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj index 01f053cc..a4a7b4b8 100644 --- a/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj +++ b/IntegrationTests/IntegrationTests.xcodeproj/project.pbxproj @@ -553,7 +553,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../React/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -593,7 +593,7 @@ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../React/**", ); - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; diff --git a/RNFS.xcodeproj/project.pbxproj b/RNFS.xcodeproj/project.pbxproj index 5f9a197f..879b4f43 100644 --- a/RNFS.xcodeproj/project.pbxproj +++ b/RNFS.xcodeproj/project.pbxproj @@ -261,7 +261,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -297,7 +297,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES;