From 61a54e831fbe59d7b623695fb83c9cc6fea8838a Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Fri, 1 Jul 2022 16:35:14 -0400 Subject: [PATCH] merge --- .gitlab-ci.yml | 1 + MVMCore/MVMCore.xcodeproj/project.pbxproj | 21 +++++++++++-------- .../xcshareddata/xcschemes/MVMCore.xcscheme | 6 +----- .../MVMCoreDismissViewControllerOperation.h | 2 +- .../MVMCoreNavigationHandler.m | 7 ++++--- .../MVMCoreNavigationOperation.h | 4 ++-- .../MVMCorePresentAnimationOperation.h | 4 ++-- .../MVMCorePresentViewControllerOperation.h | 4 ++-- .../MVMCoreGetterUtility+Extension.swift | 7 +++++++ .../Utility/Helpers/MVMCoreGetterUtility.m | 2 +- Scripts/upload_core_frameworks.sh | 1 - 11 files changed, 33 insertions(+), 26 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6abe3f5..523e948 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,6 +13,7 @@ stages: build_project: stage: build script: + - xcodebuild -version - xcodebuild build -project MVMCore/MVMCore.xcodeproj -scheme FatLibrary | xcpretty - BUILD_DIR=$(xcodebuild -showBuildSettings -project MVMCore/MVMCore.xcodeproj | grep BUILD_DIR) only: diff --git a/MVMCore/MVMCore.xcodeproj/project.pbxproj b/MVMCore/MVMCore.xcodeproj/project.pbxproj index 394e10b..e5dbc6c 100644 --- a/MVMCore/MVMCore.xcodeproj/project.pbxproj +++ b/MVMCore/MVMCore.xcodeproj/project.pbxproj @@ -785,7 +785,7 @@ 8876D5C01FB50A9E00EB2E3D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1010; + LastUpgradeCheck = 1320; ORGANIZATIONNAME = myverizon; TargetAttributes = { 8876D5C81FB50A9E00EB2E3D = { @@ -843,7 +843,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "unset TOOLCHAINS #Xcode 7.3 BUG FIX http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode\n\n# define output folder environment variable\nC_PROJECT_NAME=\"MVMCore\"\nPHONE_CONFIGURATION=\"Release\"\nSIMULATOR_CONFIGURATION=\"Debug\"\nSIMULATOR_LIBRARY_PATH=\"${BUILD_DIR}/${SIMULATOR_CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.framework\"\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/universal\n\n# Step 1. Build Device and Simulator versions\nxcodebuild -scheme \"${C_PROJECT_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${PHONE_CONFIGURATION} -sdk iphoneos -archivePath \"${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}\" archive SKIP_INSTALL=false\n\nxcodebuild -target \"${C_PROJECT_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${SIMULATOR_CONFIGURATION} -sdk iphonesimulator -arch x86_64 BUILD_DIR=\"${BUILD_DIR}\" ALWAYS_SEARCH_USER_PATHS=true\n\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\nrm -rf ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework\ncp -R ${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/\"${C_PROJECT_NAME}\".xcarchive/Products/Library/Frameworks/${C_PROJECT_NAME}.framework ${UNIVERSAL_OUTPUTFOLDER}\n\n# Step 2. Create universal binary file using lipo\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}\" \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}\" \"${SIMULATOR_LIBRARY_PATH}/${C_PROJECT_NAME}\"\n\nmv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}\n\n# For Swift framework, Swiftmodule needs to be copied in the universal framework\nif [ -d \"${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/\" ]; then\ncp -a \"${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/\" \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/Modules/${C_PROJECT_NAME}.swiftmodule/\"\nfi\n"; + shellScript = "unset TOOLCHAINS #Xcode 7.3 BUG FIX http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode\n\n# define output folder environment variable\nC_PROJECT_NAME=\"MVMCore\"\nPHONE_CONFIGURATION=\"Release\"\nPHONE_ARCHIVE_PATH=\"${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}.xcarchive\"\nSIMULATOR_CONFIGURATION=\"Debug\"\nSIMULATOR_ARCHIVE_PATH=\"${BUILD_DIR}/${SIMULATOR_CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.xcarchive\"\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/universal\n\n# Step 1. Build Device and Simulator versions\n\nxcodebuild archive \\\n -scheme \"${C_PROJECT_NAME}\" \\\n -configuration ${PHONE_CONFIGURATION} \\\n -archivePath \"${PHONE_ARCHIVE_PATH}\" \\\n -sdk iphoneos \\\n -destination 'generic/platform=iOS' \\\n SKIP_INSTALL=NO\n \nxcodebuild archive \\\n -scheme \"${C_PROJECT_NAME}\" \\\n -configuration ${SIMULATOR_CONFIGURATION} \\\n -archivePath \"${SIMULATOR_ARCHIVE_PATH}\" \\\n -sdk iphonesimulator \\\n -destination 'generic/platform=iOS Simulator' \\\n SKIP_INSTALL=NO\n \nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\nrm -rf ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.xcframework\n\nxcodebuild -create-xcframework \\\n -framework \"${PHONE_ARCHIVE_PATH}/Products/Library/Frameworks/${C_PROJECT_NAME}.framework\" \\\n -framework \"${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/${C_PROJECT_NAME}.framework\" \\\n -output ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.xcframework\n exit 0\n\n\nxcodebuild -scheme \"${C_PROJECT_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${PHONE_CONFIGURATION} -sdk iphoneos -archivePath \"${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}\" archive SKIP_INSTALL=false\n\nxcodebuild -target \"${C_PROJECT_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${SIMULATOR_CONFIGURATION} -sdk iphonesimulator -arch x86_64 BUILD_DIR=\"${BUILD_DIR}\" ALWAYS_SEARCH_USER_PATHS=true\n\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\nrm -rf ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework\ncp -R ${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/\"${C_PROJECT_NAME}\".xcarchive/Products/Library/Frameworks/${C_PROJECT_NAME}.framework ${UNIVERSAL_OUTPUTFOLDER}\n\n# Step 2. Create universal binary file using lipo\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}\" \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}\" \"${SIMULATOR_LIBRARY_PATH}/${C_PROJECT_NAME}\"\n\nmv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}\n\n# For Swift framework, Swiftmodule needs to be copied in the universal framework\nif [ -d \"${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/\" ]; then\ncp -a \"${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/\" \"${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/Modules/${C_PROJECT_NAME}.swiftmodule/\"\nfi\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -982,6 +982,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1009,7 +1010,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -1044,6 +1045,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -1065,7 +1067,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; @@ -1079,6 +1081,7 @@ isa = XCBuildConfiguration; buildSettings = { BITCODE_GENERATION_MODE = bitcode; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; @@ -1090,11 +1093,10 @@ FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../../SharedFrameworks"; INFOPLIST_FILE = MVMCore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 2.0; - ONLY_ACTIVE_ARCH = YES; + MARKETING_VERSION = 3.0; PRODUCT_BUNDLE_IDENTIFIER = com.vzw.MVMCore; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -1108,6 +1110,7 @@ isa = XCBuildConfiguration; buildSettings = { BITCODE_GENERATION_MODE = bitcode; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; @@ -1119,10 +1122,10 @@ FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../../SharedFrameworks"; INFOPLIST_FILE = MVMCore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LIBRARY_SEARCH_PATHS = "$(inherited)"; - MARKETING_VERSION = 2.0; + MARKETING_VERSION = 3.0; PRODUCT_BUNDLE_IDENTIFIER = com.vzw.MVMCore; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; diff --git a/MVMCore/MVMCore.xcodeproj/xcshareddata/xcschemes/MVMCore.xcscheme b/MVMCore/MVMCore.xcodeproj/xcshareddata/xcschemes/MVMCore.xcscheme index 6decab4..aa9aebf 100644 --- a/MVMCore/MVMCore.xcodeproj/xcshareddata/xcschemes/MVMCore.xcscheme +++ b/MVMCore/MVMCore.xcodeproj/xcshareddata/xcschemes/MVMCore.xcscheme @@ -1,6 +1,6 @@ - - - - #import @interface MVMCoreDismissViewControllerOperation : MVMCoreOperation diff --git a/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationHandler.m b/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationHandler.m index a88076e..4fcfb68 100644 --- a/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationHandler.m +++ b/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationHandler.m @@ -18,6 +18,7 @@ #import "MVMCoreLoggingHandler.h" #import "MVMCoreLoadingOverlayHandler.h" #import "MVMCoreDispatchUtility.h" +#import @interface MVMCoreNavigationHandler () @@ -311,7 +312,7 @@ - (void)presentViewController:(nonnull UIViewController *)viewController animated:(BOOL)animated delegate:(nullable NSObject*)delegate completionHandler:(nullable void (^)(void))completionBlock { [MVMCoreDispatchUtility performBlockOnMainThread:^{ - UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [UIApplication sharedApplication].keyWindow.rootViewController; + UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [MVMCoreGetterUtility getKeyWindow].rootViewController; if (!controllerToPresentOn) { // Log if we are attempting to add an alert to nothing. MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:nil message:@"The viewControllerToPresent on property is nil and an attempt was made to present." code:ErrorCodeNoViewControllerToPresentOn domain:ErrorDomainNative location:[NSString stringWithFormat:@"ViewController:%@|Delegate:%@",viewController.description,delegate]]; @@ -328,7 +329,7 @@ - (void)dismissTopViewControllerAnimated:(BOOL)animated delegate:(nullable NSObject*)delegate completionHandler:(nullable void (^)(void))completionBlock { [MVMCoreDispatchUtility performBlockOnMainThread:^{ // Dismiss on the main navigation controller. - UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [UIApplication sharedApplication].keyWindow.rootViewController; + UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [MVMCoreGetterUtility getKeyWindow].rootViewController; MVMCoreDismissViewControllerOperation *operation = [[MVMCoreDismissViewControllerOperation alloc] initAndDismissTopViewController:controllerToPresentOn animated:animated]; operation.completionBlock = completionBlock; [[NSOperationQueue mainQueue] addOperation:operation]; @@ -345,7 +346,7 @@ - (void)dismissToBottom:(BOOL)animated delegate:(nullable NSObject*)delegate completionHandler:(nullable void (^)(void))completionBlock { [MVMCoreDispatchUtility performBlockOnMainThread:^{ // Dismiss on the main navigation controller. - UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [UIApplication sharedApplication].keyWindow.rootViewController; + UIViewController *controllerToPresentOn = self.viewControllerToPresentOn ?: [MVMCoreGetterUtility getKeyWindow].rootViewController; MVMCoreDismissViewControllerOperation *operation = [[MVMCoreDismissViewControllerOperation alloc] initAndDismissViewController:controllerToPresentOn animated:animated]; operation.completionBlock = completionBlock; [[NSOperationQueue mainQueue] addOperation:operation]; diff --git a/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationOperation.h b/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationOperation.h index 349c00c..d3f8722 100644 --- a/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationOperation.h +++ b/MVMCore/MVMCore/PresentationHandling/MVMCoreNavigationOperation.h @@ -8,8 +8,8 @@ // Handles navigation #import -#import "MVMCoreOperation.h" -#import "MVMCorePresentationDelegateProtocol.h" +#import +#import @class MVMCoreNavigationObject; diff --git a/MVMCore/MVMCore/PresentationHandling/MVMCorePresentAnimationOperation.h b/MVMCore/MVMCore/PresentationHandling/MVMCorePresentAnimationOperation.h index fa9e862..4a73872 100644 --- a/MVMCore/MVMCore/PresentationHandling/MVMCorePresentAnimationOperation.h +++ b/MVMCore/MVMCore/PresentationHandling/MVMCorePresentAnimationOperation.h @@ -7,8 +7,8 @@ // // Should be added to the main queue. Presents the view controller on the presenting view controller. -#import "MVMCoreOperation.h" -#import "MVMCorePresentationDelegateProtocol.h" +#import +#import @interface MVMCorePresentAnimationOperation : MVMCoreOperation diff --git a/MVMCore/MVMCore/PresentationHandling/MVMCorePresentViewControllerOperation.h b/MVMCore/MVMCore/PresentationHandling/MVMCorePresentViewControllerOperation.h index 7906638..1556a1c 100644 --- a/MVMCore/MVMCore/PresentationHandling/MVMCorePresentViewControllerOperation.h +++ b/MVMCore/MVMCore/PresentationHandling/MVMCorePresentViewControllerOperation.h @@ -8,8 +8,8 @@ // An operation for presenting a view controller. Depends on alert as well. Should NOT go onto the main queue. #import -#import "MVMCoreOperation.h" -#import "MVMCorePresentationDelegateProtocol.h" +#import +#import @interface MVMCorePresentViewControllerOperation : MVMCoreOperation diff --git a/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility+Extension.swift b/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility+Extension.swift index c5a6854..42b3ce5 100644 --- a/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility+Extension.swift +++ b/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility+Extension.swift @@ -25,3 +25,10 @@ public extension MVMCoreGetterUtility { return (abs((a) - (b)) < threshold) } } + +@objc public extension MVMCoreGetterUtility { + /// Returns the key window. + @objc class func getKeyWindow() -> UIWindow? { + UIApplication.shared.connectedScenes.flatMap { ($0 as? UIWindowScene)?.windows ?? [] }.first { $0.isKeyWindow } + } +} diff --git a/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility.m b/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility.m index c5a8570..4d5127e 100644 --- a/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility.m +++ b/MVMCore/MVMCore/Utility/Helpers/MVMCoreGetterUtility.m @@ -65,7 +65,7 @@ } + (BOOL)isOnIPad { - if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { return YES; } else { return NO; diff --git a/Scripts/upload_core_frameworks.sh b/Scripts/upload_core_frameworks.sh index 714cf16..ce318ae 100755 --- a/Scripts/upload_core_frameworks.sh +++ b/Scripts/upload_core_frameworks.sh @@ -19,6 +19,5 @@ if [ -z $ARTIFACTORY_URL ]; then ARTIFACTORY_URL="https://oneartifactoryprod.verizon.com/artifactory" fi -# Remote View Versions BUILD_DIR=$(xcodebuild -showBuildSettings -project ../MVMCore/MVMCore.xcodeproj | grep -w -o 'BUILD_DIR = .*' | cut -d\ -f3-) ./upload_framework.sh $ARTIFACTORY_URL "${BUILD_DIR}/universal/MVMCore.framework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMCore/[VER]/MVMCore-[VER]-Debug-SNAPSHOT