diff --git a/APIDiffs/api-diffs-1.16.1.md b/APIDiffs/api-diffs-1.16.1.md new file mode 100644 index 00000000..07cf9c89 --- /dev/null +++ b/APIDiffs/api-diffs-1.16.1.md @@ -0,0 +1,24 @@ +# PLShortVideoKit 1.16.0 to 1.16.1 API Differences + +## General Headers + +``` +PLShortVideoRecorder.h +``` + +- *Added* + (void)checkAuthentication:(void(^ __nonnull)(PLSAuthenticationResult result))resultBlock;; + +``` +PLSTypeDefines.h +``` + +- *Added* PLSAuthenticationResult; + + +``` +AVAsset+PLSExtendProperty.h +``` + +- *Added* @property (assign, nonatomic, readonly) UInt32 pls_channel; + +- *Added* @property (assign, nonatomic, readonly) Float64 pls_sampleRate; diff --git a/Example/PLShortVideoKitDemo.xcodeproj/project.pbxproj b/Example/PLShortVideoKitDemo.xcodeproj/project.pbxproj index 063f8673..221cc012 100644 --- a/Example/PLShortVideoKitDemo.xcodeproj/project.pbxproj +++ b/Example/PLShortVideoKitDemo.xcodeproj/project.pbxproj @@ -977,7 +977,6 @@ 0A9435791E6CA2E2008845A3 /* Frameworks */, 0A94357A1E6CA2E2008845A3 /* Resources */, B051BAB51EADFEF900385FF0 /* ShellScript */, - F12800A47717371B5B955FDD /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -1223,24 +1222,6 @@ shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Fabric/run\" 356922ded861e8764b53656f328bf3e7610fb59b 4e8f96a6c525321b1833e0fdb19f396702d2cb0b6e581fdf80efde45b2a3bfc1\n\n\nshortVersion=$(/usr/libexec/PlistBuddy -c \"Print :CFBundleShortVersionString\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\nbuildNumber=$(/usr/libexec/PlistBuddy -c \"Print :CFBundleVersion\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\n\ngitVersion=$(git log -1 --pretty=format:\"git-%cd-%h\" --date=short 2> /dev/null)\nbuildNumber=\"$shortVersion.$gitVersion\"\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $buildNumber\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\"\n\n"; }; - F12800A47717371B5B955FDD /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh", - "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PLPlayerKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1422,7 +1403,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = GDFHW66V92; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/PLShortVideoKitDemo", @@ -1453,7 +1434,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; DEVELOPMENT_TEAM = GDFHW66V92; - ENABLE_BITCODE = NO; + ENABLE_BITCODE = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/PLShortVideoKitDemo", diff --git a/Example/PLShortVideoKitDemo/DubViewController.m b/Example/PLShortVideoKitDemo/DubViewController.m index e4504359..a9f52a48 100644 --- a/Example/PLShortVideoKitDemo/DubViewController.m +++ b/Example/PLShortVideoKitDemo/DubViewController.m @@ -10,7 +10,6 @@ #import "PLSProgressBar.h" #import "PLShortVideoKit/PLShortVideoKit.h" -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -113,7 +112,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example/PLShortVideoKitDemo/EditViewController.m b/Example/PLShortVideoKitDemo/EditViewController.m index 0bc1b73a..841f3904 100644 --- a/Example/PLShortVideoKitDemo/EditViewController.m +++ b/Example/PLShortVideoKitDemo/EditViewController.m @@ -28,7 +28,6 @@ #import #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_RGBCOLOR_ALPHA(r,g,b,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -253,7 +252,7 @@ - (void)viewDidLoad { } - (CGFloat)bottomFixSpace { - return iPhoneX ? 30 : 0; + return iPhoneX_SERIES ? 30 : 0; } - (void)viewWillAppear:(BOOL)animated { @@ -387,7 +386,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); @@ -654,7 +653,7 @@ - (void)setupEditToolboxView { // 配音 button = [self toolBoxButtonWithSelector:@selector(dubAudioButtonEvent:) startX:button.frame.origin.x + button.frame.size.width + 20 - title:@"配音图"]; + title:@"配音"]; // 视频倍速 button = [self toolBoxButtonWithSelector:@selector(videoSpeedButtonEvent:) diff --git a/Example/PLShortVideoKitDemo/GifFormatViewController.m b/Example/PLShortVideoKitDemo/GifFormatViewController.m index a4b943e5..7d0040ba 100644 --- a/Example/PLShortVideoKitDemo/GifFormatViewController.m +++ b/Example/PLShortVideoKitDemo/GifFormatViewController.m @@ -13,7 +13,6 @@ #import "PlayViewController.h" -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -62,7 +61,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example/PLShortVideoKitDemo/Info.plist b/Example/PLShortVideoKitDemo/Info.plist index 942198ff..aeae327e 100644 --- a/Example/PLShortVideoKitDemo/Info.plist +++ b/Example/PLShortVideoKitDemo/Info.plist @@ -15,9 +15,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.16.0 + 1.16.1 CFBundleVersion - 1.16.0.git-2018-12-14-9cc7ee0 + 1.16.1.git-2019-01-28-eac39a6 Fabric APIKey diff --git a/Example/PLShortVideoKitDemo/MovieTransCodeViewController.m b/Example/PLShortVideoKitDemo/MovieTransCodeViewController.m index cbffdbaf..b648a2cb 100644 --- a/Example/PLShortVideoKitDemo/MovieTransCodeViewController.m +++ b/Example/PLShortVideoKitDemo/MovieTransCodeViewController.m @@ -14,7 +14,6 @@ #import "EditViewController.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -160,7 +159,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example/PLShortVideoKitDemo/PhotoAlbumViewController.m b/Example/PLShortVideoKitDemo/PhotoAlbumViewController.m index fd855a9f..34c5c08b 100644 --- a/Example/PLShortVideoKitDemo/PhotoAlbumViewController.m +++ b/Example/PLShortVideoKitDemo/PhotoAlbumViewController.m @@ -13,7 +13,6 @@ #import "EditViewController.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -454,7 +453,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example/PLShortVideoKitDemo/PlayViewController.m b/Example/PLShortVideoKitDemo/PlayViewController.m index c4929cc0..aa64fa0f 100644 --- a/Example/PLShortVideoKitDemo/PlayViewController.m +++ b/Example/PLShortVideoKitDemo/PlayViewController.m @@ -9,8 +9,8 @@ #import "PlayViewController.h" #import #import "PLShortVideoKit/PLShortVideoKit.h" -#import #import "FLAnimatedImage.h" +#import "PLSPlayerView.h" #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -24,9 +24,11 @@ @interface PlayViewController () < PLShortVideoUploaderDelegate, -PLPlayerDelegate, UIGestureRecognizerDelegate > +{ + id _timeObserver; +} // 工具视图 @property (strong, nonatomic) UIView *baseToolboxView; @@ -38,7 +40,9 @@ @interface PlayViewController () @property (strong, nonatomic) UILabel * duration; // 视频播放 -@property (strong, nonatomic) PLPlayer *player; +@property (strong, nonatomic) AVPlayer *player; +@property (strong, nonatomic) PLSPlayerView *playerView; +@property (strong, nonatomic) UIProgressView *processView; // gif 图预览 @property (strong, nonatomic) FLAnimatedImageView *gifView; @@ -98,17 +102,50 @@ - (void)viewDidAppear:(BOOL)animated { FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:self.url]]; self.gifView.animatedImage = image; } + + [self addObserver]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if (self.actionType == PLSActionTypePlayer) { - [self.player stop]; + [self.player pause]; } if (self.actionType == PLSActionTypeGif) { self.gifView.animatedImage = nil; } + + [self removeTimeObserver]; +} + +-(void)addObserver { + if (_timeObserver) return; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerToEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem]; + + __weak typeof(self) weakSelf = self; + _timeObserver = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) { + float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(weakSelf.player.currentItem.duration); + weakSelf.playSlider.value = process; + weakSelf.currentTime.text = [NSString stringWithFormat:@"%.2fs", CMTimeGetSeconds(time)]; + weakSelf.duration.text = [NSString stringWithFormat:@"%.2f", CMTimeGetSeconds(weakSelf.player.currentItem.duration)]; + }]; +} + +- (void)removeTimeObserver { + if (_timeObserver) { + [self.player removeTimeObserver:_timeObserver]; + _timeObserver = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem]; + } +} + +- (void)playerToEnd:(NSNotification *)info { + if (info.object == self.player.currentItem) { + [self.player seekToTime:kCMTimeZero]; + [self.player play]; + } } #pragma mark -- 视图配置 @@ -143,14 +180,21 @@ - (void)setupToolboxUI { } - (void)setupPlayerUI { + + UIFont *font = [UIFont systemFontOfSize:18]; + if (@available(iOS 9.0, *)) { + font = [UIFont monospacedDigitSystemFontOfSize:18 weight:(UIFontWeightRegular)]; + } self.currentTime = [[UILabel alloc] initWithFrame:CGRectMake(20, PLS_SCREEN_HEIGHT - 130, 130, 30)]; self.currentTime.text = @"0.00s"; self.currentTime.textColor = [UIColor blueColor]; + self.currentTime.font = font; [self.view addSubview:self.currentTime]; self.duration = [[UILabel alloc] initWithFrame:CGRectMake(PLS_SCREEN_WIDTH - 80, PLS_SCREEN_HEIGHT - 130, 130, 30)]; - self.duration.text = @"0.00s"; + self.duration.text = [NSString stringWithFormat:@"%.2f", CMTimeGetSeconds(self.player.currentItem.duration)]; self.duration.textColor = [UIColor blueColor]; + self.duration.font = font; [self.view addSubview:self.duration]; self.playSlider = [[UISlider alloc] initWithFrame:CGRectMake(20, PLS_SCREEN_HEIGHT - 100, PLS_SCREEN_WIDTH - 40, 30)]; @@ -166,49 +210,10 @@ - (void)initPlayer { return; } - // 初始化 PLPlayerOption 对象 - PLPlayerOption *option = [PLPlayerOption defaultOption]; - - // 更改需要修改的 option 属性键所对应的值 - [option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets]; - [option setOptionValue:@2000 forKey:PLPlayerOptionKeyMaxL1BufferDuration]; - [option setOptionValue:@1000 forKey:PLPlayerOptionKeyMaxL2BufferDuration]; - [option setOptionValue:@(NO) forKey:PLPlayerOptionKeyVideoToolbox]; - [option setOptionValue:@(kPLLogInfo) forKey:PLPlayerOptionKeyLogLevel]; - - // 初始化 PLPlayer - self.player = [PLPlayer playerWithURL:self.url option:option]; - self.player.loopPlay = YES; - - // 设定代理 (optional) - self.player.delegate = self; - - //获取视频输出视图并添加为到当前 UIView 对象的 Subview - self.player.playerView.frame = CGRectMake(0, PLS_BaseToolboxView_HEIGHT + PLS_SCREEN_WIDTH / 8, PLS_SCREEN_WIDTH, PLS_SCREEN_HEIGHT - PLS_BaseToolboxView_HEIGHT - PLS_SCREEN_WIDTH / 8 - PLS_EditToolboxView_HEIGHT); - self.player.playerView.contentMode = UIViewContentModeScaleAspectFit; - [self.view addSubview:self.player.playerView]; -} - -#pragma mark -- 添加定时器 -- (void)addDurationTimer { - if (self.timer) { - [self.timer invalidate]; - self.timer = nil; - } - - self.timer = [NSTimer scheduledTimerWithTimeInterval:0.5 - target:self - selector:@selector(onDurationTimer) - userInfo:nil - repeats:YES]; -} - -#pragma mark -- 移除定时器 -- (void)removeDurationTimer { - if (self.timer) { - [self.timer invalidate]; - self.timer = nil; - } + self.player = [[AVPlayer alloc] initWithURL:self.url]; + self.playerView = [[PLSPlayerView alloc] initWithFrame:CGRectMake(0, PLS_BaseToolboxView_HEIGHT + PLS_SCREEN_WIDTH / 8, PLS_SCREEN_WIDTH, PLS_SCREEN_HEIGHT - PLS_BaseToolboxView_HEIGHT - PLS_SCREEN_WIDTH / 8 - PLS_EditToolboxView_HEIGHT)]; + self.playerView.player = self.player; + [self.view addSubview:self.playerView]; } #pragma mark -- 视频上传准备 @@ -224,18 +229,6 @@ - (void)setupFileUpload { [self prepareUpload]; } -- (void)onDurationTimer { - double elapsed = CMTimeGetSeconds(self.player.currentTime); - double duration = CMTimeGetSeconds(self.player.totalDuration); - self.playSlider.value = elapsed / duration; - if (isnan(elapsed)) { - self.currentTime.text = self.duration.text; - } else { - self.currentTime.text = [NSString stringWithFormat:@"%.2fs", elapsed]; - self.duration.text = [NSString stringWithFormat:@"%.2fs", duration]; - } -} - - (void)prepareUpload { self.progressView.hidden = YES; self.progressView.progress = 0; @@ -262,10 +255,10 @@ - (void)backButtonClick { #pragma mark -- 播放 - (void)handleSingleFingerToPlayVideoEvent:(id)sender { - if ([self.player isPlaying]) { + if (1.0 == [self.player rate]) { [self.player pause]; } else { - [self.player resume]; + [self.player play]; } } @@ -286,9 +279,13 @@ - (void)uploadButtonClick:(id)sender { #pragma mark -- seekTo - (void)playSeekTo:(id)sender { UISlider * slider = (UISlider *)sender; - CMTime time = CMTimeMake(slider.value * CMTimeGetSeconds(self.player.totalDuration), 1); - self.currentTime.text = [NSString stringWithFormat:@"%.2fs",slider.value]; - [self.player seekTo:time]; + slider.enabled = NO; + CMTime time = CMTimeMake(slider.value * CMTimeGetSeconds(self.player.currentItem.duration), 1); + self.currentTime.text = [NSString stringWithFormat:@"%.2fs", CMTimeGetSeconds(time)]; + __weak typeof(self) weakSelf = self; + [self.player seekToTime:time completionHandler:^(BOOL finished) { + weakSelf.playSlider.enabled = YES; + }]; } #pragma mark -- 提示框 @@ -324,44 +321,6 @@ - (void)shortVideoUploader:(PLShortVideoUploader *)uploader uploadKey:(NSString NSLog(@"uploadPercent: %.2f",uploadPercent); } -#pragma mark -- PLPlayerDelegate 播放器状态获取 -// 实现 来控制流状态的变更 -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state { - // 这里会返回流的各种状态,你可以根据状态做 UI 定制及各类其他业务操作 - // 除了 Error 状态,其他状态都会回调这个方法 - // 开始播放,当连接成功后,将收到第一个 PLPlayerStatusCaching 状态 - // 第一帧渲染后,将收到第一个 PLPlayerStatusPlaying 状态 - // 播放过程中出现卡顿时,将收到 PLPlayerStatusCaching 状态 - // 卡顿结束后,将收到 PLPlayerStatusPlaying 状态 - if (state == PLPlayerStatusReady) { - [self addDurationTimer]; - } - if (state == PLPlayerStatusPlaying) { - NSString *stateInfo = [NSString stringWithFormat:@"connect:%.2f/first:%.2f", _player.connectTime, _player.firstVideoTime]; - NSLog(@"stateInfo: %@", stateInfo); - } - if (state == PLPlayerStatusStopped/* || state == PLPlayerStatusPaused*/) { - self.currentTime.text = self.duration.text; - self.playSlider.value = 1; - [self removeDurationTimer]; - } - - NSLog(@"status: %ld", (long)state); -} - -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error { - // 当发生错误,停止播放时,会回调这个方法 - [self showAlertWithMessage:[NSString stringWithFormat:@"播放出错,error = %@", error]]; -} - -- (void)player:(nonnull PLPlayer *)player codecError:(nonnull NSError *)error { - // 当解码器发生错误时,会回调这个方法 - // 当 videotoolbox 硬解初始化或解码出错时 - // error.code 值为 PLPlayerErrorHWCodecInitFailed/PLPlayerErrorHWDecodeFailed - // 播发器也将自动切换成软解,继续播放 -} - - #pragma mark -- 隐藏状态栏 - (BOOL)prefersStatusBarHidden { return YES; @@ -373,9 +332,6 @@ - (void)didReceiveMemoryWarning { } - (void)dealloc { - [self removeDurationTimer]; - - self.player.delegate = nil; self.player = nil; self.gifView = nil; diff --git a/Example/PLShortVideoKitDemo/PrefixHeader.pch b/Example/PLShortVideoKitDemo/PrefixHeader.pch index 611cfca1..4753e5a0 100644 --- a/Example/PLShortVideoKitDemo/PrefixHeader.pch +++ b/Example/PLShortVideoKitDemo/PrefixHeader.pch @@ -12,6 +12,8 @@ // Include any system framework and library headers here that should be included in all compilation units. // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. +#import "BaseViewcontroller.h" + #ifndef dispatch_main_async_safe #define dispatch_main_async_safe(block)\ if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {\ diff --git a/Example/PLShortVideoKitDemo/RecordViewController.m b/Example/PLShortVideoKitDemo/RecordViewController.m index 9f84fb60..9c3e0681 100644 --- a/Example/PLShortVideoKitDemo/RecordViewController.m +++ b/Example/PLShortVideoKitDemo/RecordViewController.m @@ -154,9 +154,16 @@ - (void)viewWillDisappear:(BOOL)animated { // 短视频录制核心类设置 - (void)setupShortVideoRecorder { + // SDK 的版本信息 NSLog(@"PLShortVideoRecorder versionInfo: %@", [PLShortVideoRecorder versionInfo]); + // SDK 授权信息查询 + [PLShortVideoRecorder checkAuthentication:^(PLSAuthenticationResult result) { + NSString *authResult[] = {@"NotDetermined", @"Denied", @"Authorized"}; + NSLog(@"PLShortVideoRecorder auth status: %@", authResult[result]); + }]; + self.videoConfiguration = [PLSVideoConfiguration defaultConfiguration]; self.videoConfiguration.position = AVCaptureDevicePositionFront; self.videoConfiguration.videoFrameRate = 25; diff --git a/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h b/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h index 768a1423..e13fbb09 100644 --- a/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h +++ b/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h @@ -6,7 +6,38 @@ // Copyright © 2018年 Pili Engineering, Qiniu Inc. All rights reserved. // + #import + +#define iPhoneX_SERIES (enumDeviceTypeIPhoneXR == [BaseViewController deviceType] || enumDeviceTypeIPhoneX == [BaseViewController deviceType] || enumDeviceTypeIPhoneXS == [BaseViewController deviceType] || enumDeviceTypeIPhoneXSMax == [BaseViewController deviceType]) + + +typedef enum : NSUInteger { + //iPhone + enumDeviceTypeIPhone4, + enumDeviceTypeIPhone4s, + enumDeviceTypeIPhone5, + enumDeviceTypeIPhone5c, + enumDeviceTypeIPhone5s, + enumDeviceTypeIPhone6, + enumDeviceTypeIPhone6Plus, + enumDeviceTypeIPhone6s, + enumDeviceTypeIPhone6sPlus, + enumDeviceTypeIPhoneSE, + enumDeviceTypeIPhone7, + enumDeviceTypeIPhone7Plus, + enumDeviceTypeIPhone8, + enumDeviceTypeIPhone8Plus, + enumDeviceTypeIPhoneX, + enumDeviceTypeIPhoneXS, + enumDeviceTypeIPhoneXR, + enumDeviceTypeIPhoneXSMax, + + //iPad + //...... + +} EnumDeviceType; + @import Photos; @interface BaseViewController : UIViewController @@ -32,4 +63,6 @@ + (BOOL)checkForPortrait:(CGAffineTransform)transform; ++ (EnumDeviceType)deviceType; + @end diff --git a/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m b/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m index be72483a..da67a87e 100644 --- a/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m +++ b/Example/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m @@ -8,8 +8,8 @@ #import "BaseViewController.h" #import +#import -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -52,7 +52,7 @@ - (void)setupBaseToolboxView { // 标题 self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { self.titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { self.titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); @@ -81,7 +81,7 @@ - (void)setupBaseToolboxView { [self.baseToolboxView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.equalTo(self.view); - if (iPhoneX) { + if (iPhoneX_SERIES) { make.height.equalTo(@(84)); } else { make.height.equalTo(@(PLS_BaseToolboxView_HEIGHT)); @@ -204,4 +204,62 @@ + (BOOL)checkForPortrait:(CGAffineTransform)transform { return assetPortrait; } ++ (EnumDeviceType)deviceType { + +// https://stackoverflow.com/questions/26028918/how-to-determine-the-current-iphone-device-model/40091083 + + struct utsname info = {0}; + uname(&info); + NSString *modelName = [NSString stringWithUTF8String:info.machine]; + if ([modelName isEqualToString:@"iPhone3,1"] || + [modelName isEqualToString:@"iPhone3,2"] || + [modelName isEqualToString:@"iPhone3,3"]) { + return enumDeviceTypeIPhone4; + } else if ([modelName isEqualToString:@"iPhone4,1"]) { + return enumDeviceTypeIPhone4s; + } else if ([modelName isEqualToString:@"iPhone5,1"] || + [modelName isEqualToString:@"iPhone5,2"]) { + return enumDeviceTypeIPhone5; + } else if ([modelName isEqualToString:@"iPhone5,3"] || + [modelName isEqualToString:@"iPhone5,4"]) { + return enumDeviceTypeIPhone5c; + } else if ([modelName isEqualToString:@"iPhone6,1"] || + [modelName isEqualToString:@"iPhone6,2"]) { + return enumDeviceTypeIPhone5s; + } else if ([modelName isEqualToString:@"iPhone7,2"]) { + return enumDeviceTypeIPhone6; + } else if ([modelName isEqualToString:@"iPhone7,1"]) { + return enumDeviceTypeIPhone6Plus; + } else if ([modelName isEqualToString:@"iPhone8,1"]) { + return enumDeviceTypeIPhone6s; + } else if ([modelName isEqualToString:@"iPhone8,2"]) { + return enumDeviceTypeIPhone6sPlus; + } else if ([modelName isEqualToString:@"iPhone9,1"] || + [modelName isEqualToString:@"iPhone9,3"]) { + return enumDeviceTypeIPhone7; + } else if ([modelName isEqualToString:@"iPhone9,2"] || + [modelName isEqualToString:@"iPhone9,4"]) { + return enumDeviceTypeIPhone7Plus; + } else if ([modelName isEqualToString:@"iPhone8,4"]) { + return enumDeviceTypeIPhoneSE; + } else if ([modelName isEqualToString:@"iPhone10,1"] || + [modelName isEqualToString:@"iPhone10,4"]) { + return enumDeviceTypeIPhone8; + } else if ([modelName isEqualToString:@"iPhone10,2"] || + [modelName isEqualToString:@"iPhone10,5"]) { + return enumDeviceTypeIPhone8Plus; + } else if ([modelName isEqualToString:@"iPhone10,3"] || + [modelName isEqualToString:@"iPhone10,6"]) { + return enumDeviceTypeIPhoneX; + } else if ([modelName isEqualToString:@"iPhone11,2"]) { + return enumDeviceTypeIPhoneXS; + } else if ([modelName isEqualToString:@"iPhone11,4"] || + [modelName isEqualToString:@"iPhone11,6"]) { + return enumDeviceTypeIPhoneXSMax; + } else if ([modelName isEqualToString:@"iPhone11,8"]) { + return enumDeviceTypeIPhoneXR; + } + + return enumDeviceTypeIPhone8; +} @end diff --git a/Example/PLShortVideoKitDemo/VideoMixViewController.m b/Example/PLShortVideoKitDemo/VideoMixViewController.m index d83f03b1..d6cb3552 100644 --- a/Example/PLShortVideoKitDemo/VideoMixViewController.m +++ b/Example/PLShortVideoKitDemo/VideoMixViewController.m @@ -228,7 +228,7 @@ -(void)addObserver { __weak typeof(self) weakSelf = self; _timeObserver = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) { - float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(self.player.currentItem.duration); + float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(weakSelf.player.currentItem.duration); weakSelf.processView.progress = process; }]; } diff --git a/Example/PLShortVideoKitDemo/ViewRecordViewController.m b/Example/PLShortVideoKitDemo/ViewRecordViewController.m index c6eee500..ac150123 100644 --- a/Example/PLShortVideoKitDemo/ViewRecordViewController.m +++ b/Example/PLShortVideoKitDemo/ViewRecordViewController.m @@ -15,7 +15,6 @@ #import "PLShortVideoKit/PLShortVideoKit.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_RGBCOLOR_ALPHA(r,g,b,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)] #define PLS_BaseToolboxView_HEIGHT 64 diff --git a/Example/Podfile b/Example/Podfile index a2c99dee..0514951f 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -8,5 +8,4 @@ target 'PLShortVideoKitDemo' do pod 'Crashlytics', '3.8.4' pod 'Masonry', '1.0.2' pod 'FLAnimatedImage', '1.0.12' - pod 'PLPlayerKit', '3.3.1' end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index c6090d9f..e6e0ed5b 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -5,16 +5,13 @@ PODS: - FLAnimatedImage (1.0.12) - HappyDNS (0.3.14) - Masonry (1.0.2) - - PLPlayerKit (3.3.1): - - PLPlayerKit/iphoneos (= 3.3.1) - - PLPlayerKit/iphoneos (3.3.1) - - PLShortVideoKit (1.16.0): - - PLShortVideoKit/ex-libMuseProcessor (= 1.16.0) - - PLShortVideoKit/libMuseProcessor (= 1.16.0) + - PLShortVideoKit (1.16.1): + - PLShortVideoKit/ex-libMuseProcessor (= 1.16.1) + - PLShortVideoKit/libMuseProcessor (= 1.16.1) - Qiniu (= 7.2.5) - - PLShortVideoKit/ex-libMuseProcessor (1.16.0): + - PLShortVideoKit/ex-libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - - PLShortVideoKit/libMuseProcessor (1.16.0): + - PLShortVideoKit/libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - Qiniu (7.2.5): - HappyDNS (~> 0.3) @@ -24,7 +21,6 @@ DEPENDENCIES: - Fabric (= 1.6.11) - FLAnimatedImage (= 1.0.12) - Masonry (= 1.0.2) - - PLPlayerKit (= 3.3.1) - PLShortVideoKit (from `../`) - Qiniu (= 7.2.5) @@ -35,7 +31,6 @@ SPEC REPOS: - FLAnimatedImage - HappyDNS - Masonry - - PLPlayerKit - Qiniu EXTERNAL SOURCES: @@ -48,10 +43,9 @@ SPEC CHECKSUMS: FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 HappyDNS: dc6a164ee81979093123c241c6353bcf0218add6 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e - PLPlayerKit: 63a9c6a7661f497591c84121e854e8e6ac003256 - PLShortVideoKit: f21d9346e695041a9f1f22b3bf9085d94639cfa6 + PLShortVideoKit: 1261bb8af6184d15f9d1eebad748a5bdcc52cb62 Qiniu: 909b408ee489ea54827e9717be90b94bc9dfbc48 -PODFILE CHECKSUM: 5adf913798fefd1bbf80480db19957a48db763e9 +PODFILE CHECKSUM: 464a1d9cdafee0a2337603af681aa59f2814b116 COCOAPODS: 1.5.3 diff --git a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h b/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h deleted file mode 120000 index 0d366a87..00000000 --- a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h b/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h deleted file mode 120000 index 6326868b..00000000 --- a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h b/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h deleted file mode 120000 index fef6e6cf..00000000 --- a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h b/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h deleted file mode 120000 index b78ef3b1..00000000 --- a/Example/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/PLShortVideoKit.podspec.json b/Example/Pods/Local Podspecs/PLShortVideoKit.podspec.json index da99e8e3..dd7a97d4 100644 --- a/Example/Pods/Local Podspecs/PLShortVideoKit.podspec.json +++ b/Example/Pods/Local Podspecs/PLShortVideoKit.podspec.json @@ -1,6 +1,6 @@ { "name": "PLShortVideoKit", - "version": "1.16.0", + "version": "1.16.1", "summary": "PILI iOS short video record SDK", "homepage": "https://github.com/pili-engineering/PLShortVideoKit", "license": "Apache License 2.0", @@ -8,7 +8,7 @@ "pili": "pili@qiniu.com" }, "source": { - "http": "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.0.zip" + "http": "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.1.zip" }, "platforms": { "ios": "8.0" diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index c6090d9f..e6e0ed5b 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -5,16 +5,13 @@ PODS: - FLAnimatedImage (1.0.12) - HappyDNS (0.3.14) - Masonry (1.0.2) - - PLPlayerKit (3.3.1): - - PLPlayerKit/iphoneos (= 3.3.1) - - PLPlayerKit/iphoneos (3.3.1) - - PLShortVideoKit (1.16.0): - - PLShortVideoKit/ex-libMuseProcessor (= 1.16.0) - - PLShortVideoKit/libMuseProcessor (= 1.16.0) + - PLShortVideoKit (1.16.1): + - PLShortVideoKit/ex-libMuseProcessor (= 1.16.1) + - PLShortVideoKit/libMuseProcessor (= 1.16.1) - Qiniu (= 7.2.5) - - PLShortVideoKit/ex-libMuseProcessor (1.16.0): + - PLShortVideoKit/ex-libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - - PLShortVideoKit/libMuseProcessor (1.16.0): + - PLShortVideoKit/libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - Qiniu (7.2.5): - HappyDNS (~> 0.3) @@ -24,7 +21,6 @@ DEPENDENCIES: - Fabric (= 1.6.11) - FLAnimatedImage (= 1.0.12) - Masonry (= 1.0.2) - - PLPlayerKit (= 3.3.1) - PLShortVideoKit (from `../`) - Qiniu (= 7.2.5) @@ -35,7 +31,6 @@ SPEC REPOS: - FLAnimatedImage - HappyDNS - Masonry - - PLPlayerKit - Qiniu EXTERNAL SOURCES: @@ -48,10 +43,9 @@ SPEC CHECKSUMS: FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 HappyDNS: dc6a164ee81979093123c241c6353bcf0218add6 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e - PLPlayerKit: 63a9c6a7661f497591c84121e854e8e6ac003256 - PLShortVideoKit: f21d9346e695041a9f1f22b3bf9085d94639cfa6 + PLShortVideoKit: 1261bb8af6184d15f9d1eebad748a5bdcc52cb62 Qiniu: 909b408ee489ea54827e9717be90b94bc9dfbc48 -PODFILE CHECKSUM: 5adf913798fefd1bbf80480db19957a48db763e9 +PODFILE CHECKSUM: 464a1d9cdafee0a2337603af681aa59f2814b116 COCOAPODS: 1.5.3 diff --git a/Example/Pods/PLPlayerKit/LICENSE b/Example/Pods/PLPlayerKit/LICENSE deleted file mode 100644 index b5591720..00000000 --- a/Example/Pods/PLPlayerKit/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h deleted file mode 100644 index cb4dca13..00000000 --- a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h +++ /dev/null @@ -1,806 +0,0 @@ -// -// PLPlayer.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#import -#import -#import "PLPlayerOption.h" - -@class UIView; -@class UIImageView; - -/** - @brief 音频采样格式 - - @since 2.4.3 - */ -typedef NS_ENUM(NSInteger, PLPlayerAVSampleFormat) { - PLPlayerAV_SAMPLE_FMT_NONE = -1, - PLPlayerAV_SAMPLE_FMT_U8, ///< unsigned 8 bits - PLPlayerAV_SAMPLE_FMT_S16, ///< signed 16 bits - PLPlayerAV_SAMPLE_FMT_S32, ///< signed 32 bits - PLPlayerAV_SAMPLE_FMT_FLT, ///< float - PLPlayerAV_SAMPLE_FMT_DBL, ///< double - - PLPlayerAV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - PLPlayerAV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - PLPlayerAV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - PLPlayerAV_SAMPLE_FMT_FLTP, ///< float, planar - PLPlayerAV_SAMPLE_FMT_DBLP, ///< double, planar - - PLPlayerAV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - @brief 播放画面旋转模式 - - @since v2.3.0 - */ - -typedef NS_ENUM(NSInteger, PLPlayerRotationsMode) { - PLPlayerNoRotation, // 无旋转 - PLPlayerRotateLeft, // 向左旋 - PLPlayerRotateRight, // 向右旋 - PLPlayerFlipVertical, // 垂直翻转 - PLPlayerFlipHorizonal, // 水平翻转 - PLPlayerRotate180 // 旋转 180 度 -}; - -/** - PLPlayer 的播放状态 - - @since v1.0.0 - */ -typedef NS_ENUM(NSInteger, PLPlayerStatus) { - - /** - PLPlayer 未知状态,只会作为 init 后的初始状态,开始播放之后任何情况下都不会再回到此状态。 - @since v1.0.0 - */ - PLPlayerStatusUnknow = 0, - - /** - PLPlayer 正在准备播放所需组件,在调用 -play 方法时出现。 - - @since v1.0.0 - */ - PLPlayerStatusPreparing, - - /** - PLPlayer 播放组件准备完成,准备开始播放,在调用 -play 方法时出现。 - - @since v1.0.0 - */ - PLPlayerStatusReady, - - /** - PLPlayer 播放组件准备完成,准备开始连接 - - @waring 请勿在此状态时,调用 playWithURL 切换 URL 操作 - - @since v3.2.1 - */ - PLPlayerStatusOpen, - - /** - @abstract PLPlayer 缓存数据为空状态。 - - @discussion 特别需要注意的是当推流端停止推流之后,PLPlayer 将出现 caching 状态直到 timeout 后抛出 timeout 的 error 而不是出现 PLPlayerStatusStopped 状态,因此在直播场景中,当流停止之后一般做法是使用 IM 服务告知播放器停止播放,以达到即时响应主播断流的目的。 - - @since v1.0.0 - */ - PLPlayerStatusCaching, - - /** - PLPlayer 正在播放状态。 - - @since v1.0.0 - */ - PLPlayerStatusPlaying, - - /** - PLPlayer 暂停状态。 - - @since v1.0.0 - */ - PLPlayerStatusPaused, - - /** - @abstract PLPlayer 停止状态 - @discussion 该状态仅会在回放时播放结束出现,RTMP 直播结束并不会出现此状态 - - @since v1.0.0 - */ - PLPlayerStatusStopped, - - /** - PLPlayer 错误状态,播放出现错误时会出现此状态。 - - @since v1.0.0 - */ - PLPlayerStatusError, - - /** - * PLPlayer 自动重连的状态 - */ - PLPlayerStateAutoReconnecting, - - /** - * PLPlayer 播放完成(该状态只针对点播有效) - */ - PLPlayerStatusCompleted, - -}; - -/** - @brief 播放器音视频首帧数据类型 - - @since v3.2.1 - */ - -typedef NS_ENUM(NSInteger, PLPlayerFirstRenderType) { - PLPlayerFirstRenderTypeVideo = 0, // 视频 - PLPlayerFirstRenderTypeAudio // 音频 -}; - -/** - 返回播放器 SDK 的版本信息的字符串。 - - @since v2.2.3 - */ -extern NSString * _Nonnull playerVersion(); - -@class PLPlayer; -/** - 发送队列的代理协议。 - - @since v1.0.0 - */ -@protocol PLPlayerDelegate - -@optional - -/** - 告知代理对象 PLPlayer 即将开始进入后台播放任务 - - @param player 调用该代理方法的 PLPlayer 对象 - - @since v1.0.0 - */ -- (void)playerWillBeginBackgroundTask:(nonnull PLPlayer *)player; - -/** - 告知代理对象 PLPlayer 即将结束后台播放状态任务 - - @param player 调用该方法的 PLPlayer 对象 - - @since v2.1.1 - */ -- (void)playerWillEndBackgroundTask:(nonnull PLPlayer *)player; - -/** - 告知代理对象播放器状态变更 - - @param player 调用该方法的 PLPlayer 对象 - @param state 变更之后的 PLPlayer 状态 - - @since v1.0.0 - */ -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state; - -/** - 告知代理对象播放器因错误停止播放 - - @param player 调用该方法的 PLPlayer 对象 - @param error 携带播放器停止播放错误信息的 NSError 对象 - - @since v1.0.0 - */ -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error; - -/** - 点播已缓冲区域 - - @param player 调用该方法的 PLPlayer 对象 - @param timeRange CMTime , 表示从0时开始至当前缓冲区域,单位秒。 - - @waring 仅对点播有效 - - @since v2.4.1 - */ -- (void)player:(nonnull PLPlayer *)player loadedTimeRange:(CMTime)timeRange; - -/** - 回调将要渲染的帧数据 - 该功能只支持直播 - - @param player 调用该方法的 PLPlayer 对象 - @param frame 将要渲染帧 YUV 数据。 - CVPixelBufferGetPixelFormatType 获取 YUV 的类型。 - 软解为 kCVPixelFormatType_420YpCbCr8Planar. - 硬解为 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange. - @param pts 显示时间戳 单位ms - @param sarNumerator - @param sarDenominator - 其中sar 表示 storage aspect ratio - 视频流的显示比例 sarNumerator sarDenominator - @discussion sarNumerator = 0 表示该参数无效 - - @since v2.4.3 - */ -- (void)player:(nonnull PLPlayer *)player willRenderFrame:(nullable CVPixelBufferRef)frame pts:(int64_t)pts sarNumerator:(int)sarNumerator sarDenominator:(int)sarDenominator; - -/** - 回调音频数据 - - @param player 调用该方法的 PLPlayer 对象 - @param audioBufferList 音频数据 - @param audioStreamDescription 音频格式信息 - @param pts 显示时间戳 是解码器进行显示帧时相对于SCR(系统参考)的时间戳。SCR可以理解为解码器应该开始从磁盘读取数据时的时间 - @param sampleFormat 采样位数 枚举:PLPlayerAVSampleFormat - @return audioBufferList 音频数据 - - @since v2.4.3 - */ -- (nonnull AudioBufferList *)player:(nonnull PLPlayer *)player willAudioRenderBuffer:(nonnull AudioBufferList *)audioBufferList asbd:(AudioStreamBasicDescription)audioStreamDescription pts:(int64_t)pts sampleFormat:(PLPlayerAVSampleFormat)sampleFormat; - -/** - 回调 SEI 数据 - - @param player 调用该方法的 PLPlayer 对象 - @param SEIData SEI数据 - - @since v3.0.1 - */ -- (void)player:(nonnull PLPlayer *)player SEIData:(nullable NSData *)SEIData; - -/** - 音视频渲染首帧回调通知 - - @param player 调用该方法的 PLPlayer 对象 - @param firstRenderType 音视频首帧回调通知类型 - - @since v3.2.1 - */ -- (void)player:(nonnull PLPlayer *)player firstRender:(PLPlayerFirstRenderType)firstRenderType; - -/** - 视频宽高数据回调通知 - - @param player 调用该方法的 PLPlayer 对象 - @param width 视频流宽 - @param height 视频流高 - - @since v3.3.0 - */ -- (void)player:(nonnull PLPlayer *)player width:(int)width height:(int)height; - -/** - seekTo 完成的回调通知 - - @param player 调用该方法的 PLPlayer 对象 - - @since v3.3.0 - */ -- (void)player:(nonnull PLPlayer *)player seekToCompleted:(BOOL)isCompleted; - -@end - -/** - getScreenShotWithCompletionHandler 截图操作为异步, - 完成后将通过 ScreenShotWithCompletionHandler 类型的 block 回调返回 UIImage 类型图片数据。 - - @since v2.2.3 - */ - -typedef void (^ScreenShotWithCompletionHandler)(UIImage * _Nullable image); - - -/** - PLPlayer 是 PLPlayerKit 中负责播放控制的核心类 - - @since v1.0.0 - */ -@interface PLPlayer : NSObject - -/** - 代理对象,用于告知播放器状态改变或其他行为,对象需实现 PLPlayerDelegate 协议 - - @since v1.0.0 - */ -@property (nonatomic, weak, nullable) id delegate; - -/** - 回调方法的调用队列 - - @since v2.1.0 - */ -@property (nonatomic, strong, nullable) dispatch_queue_t delegateQueue; - -/** - 支持音频后台播放的开关, 默认为 YES. 请确认 [AVAudioSession canPlayInBackground] 为 YES。 - - @since v1.0.0 - */ -@property (nonatomic, assign, getter=isBackgroundPlayEnable) BOOL backgroundPlayEnable; - -/** - @abstract 需要播放的 URL - - @discussion 目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (URL 以 rtmp:// 开头) 协议。 - - @since v1.0.0 - */ -@property (nonatomic, copy, nonnull, readonly) NSURL *URL; - -/** - PLPlayer 的播放状态 - - @since v1.0.0 - */ -@property (nonatomic, assign, readonly) PLPlayerStatus status; - -/** - PLPlayer 的 option 对象 - - @since v2.1.0 - */ -@property (nonnull, strong, readonly) PLPlayerOption *option; - -/** - 指示当前 PLPlayer 是否处于正在播放状态 - - @since v1.0.0 - */ -@property (nonatomic, assign, readonly, getter=isPlaying) BOOL playing; - -/** - PLPlayer 的画面输出到该 UIView 对象 - - @since v1.0.0 - */ -@property (nonatomic, strong, nullable, readonly) UIView *playerView; - -/** - PLPlayer 的启动图 - - @discussion 播放开始前显示的图片。 - - @since v2.4.0 - */ -@property (nonatomic, strong, nullable) UIImageView *launchView; - -/** - 是否需要静音 PLPlayer,默认值为NO - - @since v2.1.2 - */ -@property (nonatomic, assign, getter=isMute) BOOL mute; - -/** - PLPlayer 的当前播放时间,仅回放状态下有效,只播放状态下将返回 CMTime(0,30) - - @since v2.1.2 - */ -@property (nonatomic, assign, readonly) CMTime currentTime; - -/** - PLPlayer 的总播放时间,仅回放状态下有效,只播放状态下将返回 CMTime(0,30) - - @since v2.1.2 - */ -@property (nonatomic, assign, readonly) CMTime totalDuration; - -/** - 是否开启重连,默认为 NO - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.2.2 - */ -@property (nonatomic, assign, getter = isAutoReconnectEnable) BOOL autoReconnectEnable; - -/** - 设置画面旋转模式 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign) PLPlayerRotationsMode rotationMode; - -/** - 是否渲染画面,默认为 YES - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign) BOOL enableRender; - -/** - 设置 http header referer 值 - - @since v2.4.1 - */ -@property (nonatomic, strong) NSString * _Nonnull referer; - -#pragma mark -- play info - -/** - meta data - - @since v2.4.0 - */ -@property (nonatomic, strong, readonly) NSDictionary * _Nullable metadata; - -/** - 连接时间 - 从触发播放到建立连接的耗时 - - @since v2.4.3 - */ - -@property (nonatomic, assign, readonly) NSTimeInterval connectTime; - -/** - 首开时间 - 从触发播放到第一帧视频渲染的耗时 - - @since v2.4.3 - */ - -@property (nonatomic, assign, readonly) NSTimeInterval firstVideoTime; - -/** - 视频流的宽 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int width; - -/** - 视频流的高 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int height; - -/** - 视频流的帧率 - - @warning 该属性仅 rtmp/flv 直播有效。 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int videoFPS; - -/** - 播放渲染帧率 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int renderFPS; - -/** - 视频流的码率,单位 kb/s - - @warning 该属性仅 rtmp/flv 直播有效。 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) double bitrate; - -/** - 下载速率,单位 kb/s - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) double downSpeed; - -/** - 私有DRM - - @waring 该属性仅对 HLS 点播有效 - - @since v3.0.0 - */ -@property (nonatomic, strong) NSString * _Nullable DRMKey; - -/** - 变速播放,范围是 0.2-32,默认是 1.0 - - @waring 该属性仅对点播有效 - - @since v3.0.0 - */ -@property (nonatomic, assign) double playSpeed; - -/** - rtmp 流中的视频时间戳信息 - - @waring 该属性仅对 rtmp 有效 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) CMTime rtmpVideoTimeStamp; - -/** - rtmp 流中的音频时间戳信息 - - @waring 该属性仅对 rtmp 有效 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) CMTime rtmpAudioTimeStamp; - -/** - 视频旋转角度 - - @waring 该属性属于视频本身旋转角度 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) int rotate __deprecated_msg("Method deprecated in v3.2.1. Adjust automatically"); - -/** - 视频剪裁播放,配置参数:(x, y, width, height),尺寸需是 4 的倍数,默认全视频画面 - - @waring 该属性只播放和渲染指定位置的画面,其中 x、y、width、height 值均取整使用,若播放新链接需裁剪,则每次新链接 play 前重新设置;若需重置为全视频画面,传 CGRectZero 即可 - - @since v3.2.1 - */ -@property (nonatomic, assign) CGRect videoClipFrame; - -/** - 是否循环播放,默认为 NO - - @waring 该属性仅对点播有效 - - @since v3.2.1 - */ -@property (nonatomic, assign) BOOL loopPlay; - -/** - 提前使用 DNS 解析 URL 中的域名。 - - @discussion 在初始化后,播放前调用该方法,预解析播放地址的域名。 - - @since v3.3.1 - */ -- (void)preDNSHost:(nullable NSURL *)URL; - - -/** - 提前设置 mp4 解析时间。 - - @since v3.3.1 - */ -- (void)mp4PreLoadTime:(CMTime)loadTime; - - -/** - 提前设置点播从某记忆点开始播放。 - - @since v3.3.1 - */ -- (void)preStartPosTime:(CMTime)startTime; - - -/** - 使用 url 和 option 生成一个 PLPlayer 对象, 直播使用此接口 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 生成的PLPlayer 对象 - - @since v2.2.3 - */ -+ (nullable instancetype)playerLiveWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - 使用 url 和 option 生成一个 PLPlayer 对象,点播使用此接口 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 生成的PLPlayer 对象 - - @since v2.2.3 - */ -+ (nullable instancetype)playerWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - 使用 url 和 option 初始化一个 PLPlayer 对象 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 初始化后的 PLPlayer 对象 - - @waring 不支持使用 init, new 初始化 PLPlayer 对象。 - - @since v2.1.0 - */ -- (nullable instancetype)initWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - URL 预加载 - - @discussion 在播放前调用该方法,预加载播放 URL 链接。 - - @warning 请勿与 playWithURL 切换新的 URL 合用,容易出现切换失败,播放流错误等问题 - - @return 是否成功打开 - - @since v3.2.1 - */ -- (BOOL)openPlayerWithURL:(nullable NSURL *)URL; - -/** - 开始播放 - @return 是否成功播放 - - @since v3.2.1 - */ -- (BOOL)play; - -/** - 开始播放新的 url - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - - @return 是否成功播放 - - @since v3.2.1 - */ -- (BOOL)playWithURL:(nullable NSURL *)URL __deprecated; - -/** - 开始播放新的 url - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param sameSource 是否是同种格式播放,同格式切换打开更快 - - @return 是否成功播放 - - @waring 当sameSource 为 YES 时,视频格式与切换前视频格式不同时,会导致视频打开失败 - - @since v3.2.1 - */ -- (BOOL)playWithURL:(nullable NSURL *)URL sameSource:(BOOL)sameSource; - -/** - 当播放器处于暂停状态时调用该方法可以使播放器继续播放 - - @since v1.0.0 - */ -- (void)resume; - -/** - 当播放器处于 playing 或 caching 状态时调用该方法可以暂停播放器 - - @since v1.0.0 - */ -- (void)pause; - -/** - 停止播放器 - - @since v1.0.0 - */ -- (void)stop; - -/** - 快速定位到指定播放时间点,该方法仅在回放时起作用,直播场景下该方法直接返回 - - @param time 需要 - - @since v2.1.2 - */ -- (void)seekTo:(CMTime)time; - -/** - * 设置音量,范围是0-3.0,默认是1.0 - * - * @param volume 音量 - * - * @since v2.2.3 - */ -- (void)setVolume:(float)volume; - -/** - * 获取音量 - * - * @since v2.2.3 - * - * @return 音量 - */ -- (float)getVolume; - -/** - * 截图 - * @param handle 类型 ScreenShotWithCompletionHandler block 。 - * - * @discussion 截图操作为异步,完成后将通过 handle 回调返回 UIImage 类型图片数据。 - * 该功能只支持直播 - * - * @since v2.2.3 - * - */ -- (void)getScreenShotWithCompletionHandler:(nullable ScreenShotWithCompletionHandler)handle; - -/** - * 获取缓冲的文件字节数,已缓冲还未播放的值 - * - * @since v3.3.0 - * - * @return 文件字节数 long long 类型 - * - */ -- (long long)getHttpBufferSize; - -/** - * 是否缓存下载 - * @param bufferingEnabled 是否允许,默认为 YES,允许缓存下载 - * - * @discussion 当 bufferingEnabled 为 YES 时,文件正常下载。若下载中,修改 bufferingEnabled 为 NO,则下载暂停 - * - * @since v3.3.0 - * - */ -- (void)setBufferingEnabled:(BOOL)bufferingEnabled; - -/** - * 获取是否允许缓存下载 - * - * @since v3.3.0 - * - * @return 是否允许缓存下载 - */ -- (BOOL)getBufferingEnabled; -@end - -/** - @discussion AVAudioSessionAvailabilityCheck 提供了与播放器相关的可用性检查的方法. 从 iOS 对 AVAudioSession 接口设计 - 角度的考虑,PLPlayer 不会更改 AVAudioSession 的 category 值, 但是为了方便开发者, 我们提供一组类方法对sharedSession 做 - 播放的可用性检查。你可以调用这些方法来做检查, 以确保最终音频播放的行为与你预期一致, 如果不一致, 请务必先阅读 AVAudioSession - 的相关文档再做设置。 - - @since v1.0.0 - */ -@interface AVAudioSession (AVAudioSessionAvailabilityCheck) - -/** - 检查当前 AVAudioSession 的 category 配置是否可以播放音频。 - - @return 当为 AVAudioSessionCategoryAmbient,AVAudioSessionCategorySoloAmbient, AVAudioSessionCategoryPlayback, - AVAudioSessionCategoryPlayAndRecord中的一种时为 YES, 否则为 NO。 - - @since v1.0.0 - */ -+ (BOOL)isPlayable; - -/** - 检查当前 AVAudioSession 的 category 配置是否可以后台播放。 - - @return 当为 AVAudioSessionCategoryPlayback,AVAudioSessionCategoryPlayAndRecord 中的一种时为 YES, 否则为 NO。 - - @since v1.0.0 - */ -+ (BOOL)canPlayInBackground; - -@end diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h deleted file mode 100644 index 98d14ada..00000000 --- a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h +++ /dev/null @@ -1,92 +0,0 @@ -// -// PLPlayerError.h -// PLPlayerKit -// -// Created by liang on 4/22/16. -// Copyright © 2016年 Pili Engineering. All rights reserved. -// - -#ifndef PLPlayerError_h -#define PLPlayerError_h - -typedef NS_ENUM(NSInteger, PLPlayerError) { - - // PLPlayer error - PLPlayerErrorUnknow = 0, // "Unknow error" - - // Input error - PLPlayerErrorEOF = -1, // End of file - - PLPlayerErrorURLNotSupported = -2000, // "URL to play is not supported." - - PLPlayerErrorAudioSessionNotSupportToPlay = -2001, // "AVAudioSession's category doesn't support audio play." - - PLPlayerErrorAudioFormatNotSupport = -2002, // "RTMP/FLV live audio only support AAC." - - PLPlayerErrorVideoFormatNotSupport = -2003, // "RTMP/FLV live video only support H264." - - PLPlayerErrorStreamFormatNotSupport = -2004, // FFMPEG can not open stream, or can not find stream info.' - - PLPlayerErrorInputTimeout = -2100, // "Input read data timeout." - - PLPLayerErrorInputReadError = -2101, // "Input read data error." - - // Codec error - PLPlayerErrorCodecInitFailed = -2201, // "codec init failed." - - PLPlayerErrorHWCodecInitFailed = -2202, // "hardware codec init faile." - - PLPlayerErrorDecodeFailed = -2203, // "decode failed." - - PLPlayerErrorHWDecodeFailed = -2204, // "hardware decode failed." - - PLPlayerErrorDecodeNoFrame = -2205, // "decode no frame." - - PLPlayerErrorVideoSizeChange = -2206, // "video size change, should stop and replay." - - // RTMP error - PLPlayerErrorRTMPErrorUnknowOption = -999, // "Unknown option %s" - - PLPlayerErrorRTMPErrorAccessDNSFailed = -1000, // "Failed to access the DNS. (addr: %s)" - - PLPlayerErrorRTMPErrorFailedToConnectSocket = -1001, // "Failed to connect socket. %d (%s)" - - PLPlayerErrorRTMPErrorSocksNegotiationFailed = -1002, // "Socks negotiation failed" - - PLPlayerErrorRTMPErrorFailedToCreateSocket = -1003, // "Failed to create socket. %d (%s)" - - PLPlayerErrorRTMPErrorHandshakeFailed = -1004, // "Handshake failed" - - PLPlayerErrorRTMPErrorRTMPConnectFailed = -1005, // "RTMP connect failed" - - PLPlayerErrorRTMPErrorSendFailed = -1006, // "Send error %d (%s), (%d bytes)" - - PLPlayerErrorRTMPErrorServerRequestedClose = -1007, // "RTMP server requested close" - - PLPlayerErrorRTMPErrorNetStreamFailed = -1008, // "NetStream failed" - - PLPlayerErrorRTMPErrorNetStreamPlayFailed = -1009, // "NetStream play failed" - - PLPlayerErrorRTMPErrorNetStreamPlayStreamNotFound = -1010, // "NetStream play stream not found" - - PLPlayerErrorRTMPErrorNetConnectionConnectInvalidApp = -1011, // "NetConnection connect invalip app" - - PLPlayerErrorRTMPErrorSanityFailed = -1012, // "Sanity failed. Trying to send header of type: 0x%02X" - - PLPlayerErrorRTMPErrorSocketClosedByPeer = -1013, // "RTMP socket closed by peer" - - PLPlayerErrorRTMPErrorRTMPConnectStreamFailed = -1014, // "RTMP connect stream failed" - - PLPlayerErrorRTMPErrorSocketTimeout = -1015, // "RTMP socket timeout" - - // SSL errors - PLPlayerErrorRTMPErrorTLSConnectFailed = -1200, // "TLS_Connect failed" - - PLPlayerErrorRTMPErrorNoSSLOrTLSSupport = -1201, // "No SSL/TLS support" - - PLPlayerErrorHTTPErrorHTTPConnectFailed = -1202, // "HTTP connect failed" -}; - - - -#endif /* PLPlayerError_h */ diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h deleted file mode 100644 index 52374a12..00000000 --- a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// PLPlayerKit.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#ifndef PLPlayerKit_h -#define PLPlayerKit_h - -#import "PLPlayer.h" -#import "PLPlayerOption.h" -#import "PLPlayerError.h" - - -#endif /* PLPlayerKit_h */ diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h deleted file mode 100644 index 62fcf1d4..00000000 --- a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h +++ /dev/null @@ -1,248 +0,0 @@ -// -// PLPlayerOption.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#import - -/** - 设置控制台 log 的级别,log 级别在 kPLLogInfo 及以上,则会缓存日志文件, - 日志文件存放的位置为 APP Container/Library/Caches/Pili/PlayerLogs - - */ -typedef enum : NSUInteger { - /** - * No logs - */ - kPLLogNone, - /** - * Error logs only - */ - kPLLogError, - /** - * Error and warning logs - */ - kPLLogWarning, - /** - * Error, warning and info logs - */ - kPLLogInfo, - /** - * Error, warning, info and debug logs - */ - kPLLogDebug, - /** - * Error, warning, info, debug and verbose logs - */ - kPLLogVerbose, -} PLLogLevel; - -/** - 预设置播放器播放 URL 类型 - */ -typedef enum : NSUInteger { - /** - * 未知类型 - */ - kPLPLAY_FORMAT_UnKnown, - /** - * M3U8 类型 - */ - kPLPLAY_FORMAT_M3U8, - /** - * MP4 类型 - */ - kPLPLAY_FORMAT_MP4, - /** - * FLV 类型 - */ - kPLPLAY_FORMAT_FLV, - /** - * MP3 类型,此类型需要提前设置,才可播放 - */ - kPLPLAY_FORMAT_MP3, - /** - * AAC 类型,此类型需要提前设置,才可播放 - */ - kPLPLAY_FORMAT_AAC - -} PLPlayFormat; - -/** - @abstract 接收/发送数据包超时时间间隔所对应的键值,单位为 s ,默认配置为 10s - - @warning 建议设置正数。设置的值小于等于 0 时,表示禁用超时,播放卡住时,将无超时回调。 - 该参数仅对 rtmp/flv 直播生效 - - @since v1.0.0 - */ -extern NSString * _Nonnull PLPlayerOptionKeyTimeoutIntervalForMediaPackets; - -/** - @abstract 一级缓存大小,单位为 ms,默认为 2000ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟 - - @discussion 该缓存存放的是网络层读取到的数据,为保证实时性,超过该缓存池大小的过期音频数据将被丢弃,视频将加速渲染追上音频 - - @warning 该参数仅对 rtmp/flv 直播生效 - - @since v2.1.3 - */ -extern NSString * _Nonnull PLPlayerOptionKeyMaxL1BufferDuration; - -/** - @abstract 默认二级缓存大小,单位为 ms,默认为 300ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟 - - @discussion 该缓存存放的是解码之后待渲染的数据,如果该缓存池满,则二级缓存将不再接收来自一级缓存的数据 - - @warning 该参数仅对 rtmp/flv 直播生效 - - @since v2.1.3 - */ -extern NSString * _Nonnull PLPlayerOptionKeyMaxL2BufferDuration; - -/** - @abstract 是否使用 video toolbox 硬解码。 - - @discussion 使用 video toolbox Player 将尝试硬解码,失败后,将切换回软解码。 - - @waring 该参数仅对 rtmp/flv 直播生效, 默认不使用。支持 iOS 8.0 及更高版本。 - - @since v2.1.4 - */ -extern NSString * _Nonnull PLPlayerOptionKeyVideoToolbox; - -/** - @abstract 配置 log 级别 - - @discussion release 建议使用 kPLLogWarning, debug 建议使用 kPLLogInfo. - - @waring 取值范围: PLLogLevel - - @since v2.2.1 - */ -extern NSString * _Nonnull PLPlayerOptionKeyLogLevel; - -/** - @abstract dns 查询,使用内置 DNS 解析 - - @discussion NSString 类型,开启 DNS 解析,默认使用系统 API 解析 - - @waring 该参数仅对 rtmp/flv 直播生效 - - @since v2.2.1 - */ -extern NSString * _Nonnull PLPlayerOptionKeyDNSManager; - -/** - @abstract 开启/关闭 HappyDNS 的 DNS 解析 - - @discussion 默认关闭 - - @waring 该参数仅对 rtmp 与 flv 生效,值类型为 BOOL - - @since v2.3.0 - */ -extern NSString * _Nonnull PLPlayerOptionKeyHappyDNSEnable __deprecated_msg("Method deprecated in v3.3.0. No support HappyDNS"); - -/** - @abstract 视频缓存目录, 默认为 nil - - @waring 该属性仅对点播 mp4 有效, 当 PLPlayerOptionKeyVideoCacheFolderPath 有值时,默认关闭 DNS 解析 - - @since v3.0.0 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoCacheFolderPath; - -/** - @abstract 视频预设值播放 URL 格式类型 - - @discussion 该参数用于加快首开,提前告知播放器流类型,默认 kPLPLAY_FORMAT_UnKnown - - @waring 取值范围: PLPlayFormat - - @since v3.0.1 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoPreferFormat; - -/** - @abstract 视频缓存扩展名 - - @waring 该属性仅对点播 mp4 有效,需在视频缓存目录 PLPlayerOptionKeyVideoCacheFolderPath 基础上设置 - - @see PLPlayerOptionKeyVideoCacheFolderPath - - @since v3.2.1 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoCacheExtensionName; - -/** - SDK 设备 ID - - @discussion 该参数用于标记 SDK 设备 ID, 默认为 UUID - - @since v3.0.2 - */ -extern NSString * _Nullable PLPlayerOptionKeySDKID; - -/** - PLPlayer 的可选配置类,在初始化 PLPlayer 对象的时候传入其实例进行 PLPlayer 的可选项配置 - - @since v1.0.0 - */ -@interface PLPlayerOption : NSObject - -/** - @abstract 使用默认配置生成一个 PLPlayerOption 对象 - - @return 生成的 PLPlayerOption 对象 - - @since v1.0.0 - */ -+ (nonnull PLPlayerOption *)defaultOption; - -/** - 使用一个 NSDictionary 对象来生成一个 PLPlayerOption 对象 - - @param dic 用于初始化 PLPlyerOption 对象的 NSDictionary 对象 - - @return 生成的 PLPlayerOption 对象 - - @since v1.0.0 - */ -+ (nonnull PLPlayerOption *)optionWithDictionary:(nonnull NSDictionary *)dic; - -/** - 设置相应的键所对应的值 - - @param value 要设置的值 - @param key 要设置值的键 - - @since v1.0.0 - */ -- (void)setOptionValue:(nullable id)value forKey:(nonnull NSString *)key; - -/** - 获取特定键所对应的值 - - @param key 要获取值的键名 - - @return 获取到的值,当该值为 nil 时表示没有找到该键名对应的值。 - - @since v1.0.0 - */ -- (nullable id)optionValueForKey:(nonnull NSString *)key; - -/** - 生成一个包含该 PLPlayer 所有键值对信息的 NSDictionary 对象来 - - @return 所生成的 NSDictionary 对象 - - @since v1.0.0 - */ -- (nonnull NSDictionary *)dictionaryValue; - - -@end diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist deleted file mode 100644 index fe721699..00000000 Binary files a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist and /dev/null differ diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap deleted file mode 100644 index db018f45..00000000 --- a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module PLPlayerKit { - umbrella header "PLPlayerKit.h" - - export * - module * { export * } -} diff --git a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit b/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit deleted file mode 100755 index 5528488c..00000000 Binary files a/Example/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit and /dev/null differ diff --git a/Example/Pods/PLPlayerKit/README.md b/Example/Pods/PLPlayerKit/README.md deleted file mode 100644 index 60dbc25f..00000000 --- a/Example/Pods/PLPlayerKit/README.md +++ /dev/null @@ -1,597 +0,0 @@ -# PLPlayerKit - -PLPlayerKit 是一个适用于 iOS 的音视频播放器 SDK,可高度定制化和二次开发,特色是支持 RTMP, HTTP-FLV 和 HLS 直播流媒体播放。 - -SDK 的 Github 地址:https://github.com/pili-engineering/PLPlayerKit - -功能特性 - -- [x] 高可定制 -- [x] 直播累积延迟消除技术 -- [x] 支持首屏秒开 -- [x] 支持 RTMP 直播流播放 -- [x] 支持 HTTP-FLV 直播流播放 -- [x] 支持 HLS 播放 -- [x] 支持 HTTPS 播放 -- [x] 支持多种画面预览模式 -- [x] 支持画面旋转与镜像 -- [x] 支持播放器音量设置 -- [x] 支持纯音频播放 -- [x] 支持后台播放 -- [x] 支持使用 IP 地址的 URL -- [x] 支持软硬解自动切换 -- [x] 支持 H.265 格式播放 -- [x] 支持 HLS 七牛私有 DRM -- [x] 支持点播倍速播放 -- [x] 支持点播 mp4 视频本地缓存播放 -- [x] 支持 SEI 数据回调 -- [x] 支持 rtmp 原始时间戳 -- [x] 支持 flv 使用 mp3 音频格式 -- [x] 支持 http 的 DNS 异步解析 -- [x] 支持视频根据旋转角度自动旋转 -- [x] 支持视频裁剪播放 -- [x] 支持自定义缓存地址扩展名 -- [x] 支持播放音量放大 -- [x] 支持播放预加载 -- [x] 支持点播循环播放 -- [x] 支持下载暂停功能 -- [x] 支持获取缓冲文件的长度 -- [x] 支持 seekTo 完成的回调 -- [x] 支持提前设置 mp4 解析时间 -- [x] 支持提前设置点播从记忆点播放 - -## 说明 - -从 **v3.0.0** 开始,SDK 全面升级为七牛完全自研的播放器内核,拥有更加优异的性能,升级内容如下: - -- [x] 新增倍数播放功能(0.5x,1x,2x,4x 等) -- [x] 新增 mp4 本地缓存功能 -- [x] 新增 HLS 七牛私有 DRM 的支持 -- [x] 新增 H.265 格式播放的支持 -- [x] 优化 CPU、内存和功耗 -- [x] 优化首开效果,首开速度有大幅提升 -- [x] 优化重连逻辑,不用销毁播放器,网络断开后内部自动重连 -- [x] 优化 mp4 点播,使用双 IO 技术更高效地播放 moov 在尾部的 mp4 文件 -- [x] 支持播放过程中变速不变调,可实现更平滑的追帧效果,更少的卡顿率 -- [x] 新增支持 SEI 数据回调,更多数据交互 -- [x] 新增音视频渲染首帧回调,更便捷 -- [X] 新增预加载切换 URL 功能 - -如果从旧版本升级,建议参考[升级指南](https://github.com/pili-engineering/PLPlayerKit/blob/master/v3.x.x-UpgradeGuide.md)以及[ReleaseNotes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes)文件夹下的各个版本说明,查看注意事项 - -## 内容摘要 - -- [快速开始](#1-快速开始) - - [配置工程](#配置工程) - - [示例代码](#示例代码) -- [版本历史](#版本历史) - -## 快速开始 - -### 配置工程 - -#### CocoaPods 导入 - -- 配置你的 Podfile 文件,默认真机,添加如下配置信息 - -``` -pod 'PLPlayerKit' -``` -- 若需要使用模拟器 + 真机,则改用如下配置 - -``` -pod "PLPlayerKit", :podspec => 'https://raw.githubusercontent.com/pili-engineering/PLPlayerKit/master/PLPlayerKit-Universal.podspec' -``` - -- 安装 CocoaPods 依赖 - -``` -pod update -``` -or -``` -pod install -``` - -- Done! 运行你工程的 workspace - -**注意:鉴于目前 iOS 上架,只支持动态库真机,请在 App 上架前,更换至真机版本** - -#### 手动导入 - -- 根据需要,将 Pod 目录下真机或真机 + 模拟器版本的 framework 文件加入到工程中; -- Build Setting 下 Other Linker Flags 中添加 -ObjC -- Build Phases 下 Link Binary With Libraries 中添加如图所示 -![](http://sdk-release.qnsdk.com/PLPLayerKit.jpg) - -### 添加相关配置 - -添加 App Transport Security Setting - -* 如图所示 - -![](http://7xuil4.com1.z0.glb.clouddn.com/permession.jpg) - - -配置 Required background modes - -* 如图所示 - -![](http://7xuil4.com1.z0.glb.clouddn.com/AllowBackground-4.png) - -### 示例代码 - -在需要的地方添加 - -```Objective-C -#import -``` - -初始化 PLPlayerOption - -```Objective-C -// 初始化 PLPlayerOption 对象 -PLPlayerOption *option = [PLPlayerOption defaultOption]; - -// 更改需要修改的 option 属性键所对应的值 -[option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets]; -[option setOptionValue:@2000 forKey:PLPlayerOptionKeyMaxL1BufferDuration]; -[option setOptionValue:@1000 forKey:PLPlayerOptionKeyMaxL2BufferDuration]; -[option setOptionValue:@(NO) forKey:PLPlayerOptionKeyVideoToolbox]; -[option setOptionValue:@(kPLLogInfo) forKey:PLPlayerOptionKeyLogLevel]; - -``` - -初始化 PLPlayer - -```Objective-C - -// 初始化 PLPlayer -self.player = [PLPlayer playerWithURL:self.URL option:option]; - -// 设定代理 (optional) -self.player.delegate = self; - -``` - -获取播放器的视频输出的 UIView 对象并添加为到当前 UIView 对象的 Subview - -```Objective-C - -//获取视频输出视图并添加为到当前 UIView 对象的 Subview -[self.view addSubview:player.playerView]; - -``` - -开始/暂停操作 - -```Objective-C - -// 播放 -[self.player play]; - -// 停止 -[self.player stop]; - -// 暂停 -[self.player pause]; - -// 继续播放 -[self.player resume]; -``` - -播放器状态获取 - -```Objective-C -// 实现 来控制流状态的变更 -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state { - // 这里会返回流的各种状态,你可以根据状态做 UI 定制及各类其他业务操作 - // 除了 Error 状态,其他状态都会回调这个方法 - // 开始播放,当连接成功后,将收到第一个 PLPlayerStatusCaching 状态 - // 第一帧渲染后,将收到第一个 PLPlayerStatusPlaying 状态 - // 播放过程中出现卡顿时,将收到 PLPlayerStatusCaching 状态 - // 卡顿结束后,将收到 PLPlayerStatusPlaying 状态 -} - -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error { - // 当发生错误,停止播放时,会回调这个方法 -} - -- (void)player:(nonnull PLPlayer *)player codecError:(nonnull NSError *)error { - // 当解码器发生错误时,会回调这个方法 - // 当 videotoolbox 硬解初始化或解码出错时 - // error.code 值为 PLPlayerErrorHWCodecInitFailed/PLPlayerErrorHWDecodeFailed - // 播发器也将自动切换成软解,继续播放 -} -``` - -## 音频部分的特别说明 - -因为 iOS 的音频资源被设计为单例资源,所以如果在 player 中做的任何修改,对外都可能造成影响,并且带来不能预估的各种问题。 - -为了应对这一情况,PLPlayerKit 采取的方式是检查是否可以播放及是否可以进入后台,而在内部不做任何设置。具体是通过扩展 `AVAudioSession` 来做到的,提供了两个方法,如下: - -```Objective-C -/*! - * @description 检查当前 AVAudioSession 的 category 配置是否可以播放音频. 当为 AVAudioSessionCategoryAmbient, - * AVAudioSessionCategorySoloAmbient, AVAudioSessionCategoryPlayback, AVAudioSessionCategoryPlayAndRecord - * 中的一种时为 YES, 否则为 NO. - */ -+ (BOOL)isPlayable; - -/*! - * @description 检查当前 AVAudioSession 的 category 配置是否可以后台播放. 当为 AVAudioSessionCategoryPlayback, - * AVAudioSessionCategoryPlayAndRecord 中的一种时为 YES, 否则为 NO. - */ -+ (BOOL)canPlayInBackground; -``` - -分辨可以检查是否可以播放以及当前 category 的设置是否可以后台播放。 - -**注意:请确保 `isPlayable` 为 YES,即可以播放;`canPlayInBackground` 为 YES,即可以后台播放。** - -达到 `isPlayable` 以及 `canPlayInBackground` 两者为 YES,示例设置代码如下: - -```Objective-C -[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; -[[AVAudioSession sharedInstance] setActive:YES error:nil]; -``` - -## 其它依赖库版本号 -- FFmpeg : v3.3.x -- OpenSSL: OpenSSL_1_1_0f -- Speex: v1.2.0 - -## 版本历史 -- 3.3.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.3.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.3.1.md)) -- 功能 - - 支持调用 seekTo 后回调结果 - - 支持提前设置 mp4 解析时间 - - 支持提前设置点播从记忆点开始播放 - - 支持内部自动检查格式的功能 -- 缺陷 - - 修复 pause 后调整预览 size 导致画面拉伸或压缩的问题 - - 修复开启离线缓存后,偶现无法循环播放的问题 - - 修复 4G 网下 iPv6 解析错误的问题 - - 修复特殊情况下多次创建释放 player 对象导致崩溃的问题 - - 修复截图功能失效的问题 - - 修复弱网环境调用 stop 卡主线程的问题 - - 修复重连崩溃或失败的问题 - - 解决系统 DNS 部分不可用的问题 - - 修复本地 m3u8 文件无法正常播放的问题 - - 修复 open fail 之后 destroy player 的 crash 问题 - - 修复未获取总时长,回调 loadTimeRange 一直为 0 的问题 - - 修复某些长视频 seek 操作异常的问题 - - 修复点播播放完成后,resume 或 seek 至文件开头,播放状态错误的问题 - - 修复优化 mp4 快开带来的一些问题 -- 其他 - - 优化下载数据时内存的使用 - - 去除 `PLPlayerStatus`的两个值`PLPlayerStatusSeeking` 及 `PLPlayerStatusSeekFailed` - - 修改缓冲回调参数`CMTimeRange`为`CMTime` - - 修改 `preDNSHost` 类方法为实例方法 -- 3.3.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.3.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.3.0.md)) -- 功能 - - 支持视频流宽高的回调 - - 支持下载暂停功能 - - 支持获取缓冲文件的长度 - - 支持 seekTo 完成的回调 -- 缺陷 - - 修复内存泄漏的问题 - - 修复获取音量值不够精确的问题 - - 修复循环播放回退及失败的问题 - - 修复特定流打开时间较长的问题 - - 修复特定链接播放有声音没画面的问题 - - 修复设备拍摄视频未修正宽高的问题 - - 修复纯音频 seekTo 失败的问题 - - 修复重连成功后状态未改变的问题 - - 修复暂停后 PLPlayerStatus 状态错误的问题 - - 修复视频播放后设置 playerView 的 contentMode 无效的问题 -- 其他 - - 大幅降低 MP4 长视频首开时间,20M 网络下,2 小时 MP4 文件首开只需 0.6 - 1秒 - - 去除 HappyDNS,使用内置的 DNS 解析 -- 3.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.2.1.md)) -- 功能 - - 支持视频裁剪播放 - - 支持自定义缓存地址扩展名 - - 支持播放音量放大 - - 支持播放预加载 - - 支持点播循环播放 -- 缺陷 - - 修复播放断网 crash 的问题 - - 修复 mp4 开始缓存时重连失败的问题 - - 修复快速切换打开链接的 crash 问题 - - 完善视频画面渲染色彩度 - - 修复变速后声调发生改变的问题 - - 修复 seek 后跳转不精确的问题 - - 修复视频未依据 DAR 比例显示的问题 - - 修复退后台偶现 SIGPIPE 的问题 - - 修复部分 flv 直播流卡住的问题 - - 修复 SEI 数据丢失的问题 - - 修复 videoToolbox 硬解码视频角度未矫正的问题 -- 其他 - - 以动态库的方式发布,仅支持 iOS 8.0 及以上系统 -- 3.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.2.0.md)) -- 功能 - - 支持 flv 使用 mp3 音频格式 - - 支持 http 的 DNS 异步解析 - - 支持视频根据旋转角度自动旋转 -- 缺陷 - - 修复失去音频第一帧渲染问题 - - 修复 OpenGL crash 的问题 - - 修复部分视频音画不同步的问题 - - 修复部分视频花屏、马赛克的问题 - - 修复弱网播放偶现快速切换卡顿的问题 - - 修复进入后台切换第三方应用 crash 的问题 - - 解决由第三方引起的 ffmpeg 冲突问题 - - 修复直播 url 中含有 ?domain= 无法播放的问题 - - 修复音频视频时长不匹配 resume 播放失败的问题 -- 3.1.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.1.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.1.0.md)) -- 功能 - - 支持读取 mp3, aac 格式 - - 支持读取 rtmp 流中的音视频时间戳信息 - - 支持读取视频旋转角度参数 - - 支持 mpeg 格式播放 -- 缺陷 - - 修复 Stop 时偶现的 Crash 及卡住的问题 - - 修复 ipv6 rtmp 无法播放的问题 - - 修复播放纯音频/纯视频流时得不到 playing 状态的问题 - - 修复特定 flv 流重复播放的问题 - - 修复偶现 OpenGL crash 的问题 -- 3.0.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.2.md)) -- 功能 - - 加长 URL 设置长度 -- 缺陷 - - 修复 iPhone X 模拟器崩溃问题 - - 修复数据缓存回调总时长出错问题 - - 修复截图功能无效问题 - - 修复 OpenGL 崩溃问题 - - 修复无法修改 playerView 的 bounds 属性的问题 -- 3.0.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.1.md)) -- 功能 - - 新增 SEI 数据回调 - - 新增播放格式预设置 - - 新增同格式快速播放接口 -- 缺陷 - - 修复播放器错误时收不到 error 状态回调的问题 - - 修复某些 mp4 无法播放的问题 - - 修复多次 stop 时 crash 的问题 -- 3.0.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.0.md)) -- 全面升级为七牛自研的播放器内核,拥有更优异的性能 -- 功能 - - 新增 HLS 七牛私有 DRM 的支持 - - 新增 H.265 格式的播放 - - 新增点播倍速播放 - - 新增点播 mp4 视频缓存播放 -- 优化 - - 优化包体大小 - - 优化 CPU、内存和功耗 - - 优化直播模式下的追帧策略,效果更加平滑 - - 优化重连逻辑,不用销毁播放器,网络断开后内部自动重连 - - 优化 mp4 点播,使用双 IO 技术更高效地播放 moov 在尾部的 mp4 文件 -- 2.4.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.3.md)) -- 功能 - - 新增流分辨率变化的通知 - - 新增提供更多音视频信息的回调接口 - - 新增首开耗时接口 - - 增强 FFmpeg 点播硬解兼容性 -- 缺陷 - - 修复 AVPlayer 点播 pause 状态切换时播放器状态异常的问题 - - 修复 FFmpeg 点播纯音频流时 seek 失败的问题 - - 修复硬解在某些场景下出现绿屏的问题 -- 2.4.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.2.md)) -- 缺陷 - - 修复 AVPlayer 播放时调用 pause 和设置 frame 无效的问题 - - 修复解码器释放时线程并发导致的偶发 crash -- 2.4.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.1.md)) -- 功能 - - 新增 probesize 参数配置 - - 新增播放器初始化后更新 URL 的接口 - - 新增 AVPlayer 点播的缓冲进度接口 - - 增加 http header 中 referer 自定义接口 -- 缺陷 - - 修复锁屏且屏幕黑后,播放没有声音的问题 - - 修复播放器释放时偶发的 crash -- 2.4.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.0.md)) -- 功能 - - 新增 https 支持 - - 新增文件播放 - - 新增 speex, ogg 等音视频格式, avi, m4a 等封装格式支持。 - - 新增 display aspect ratio 信息 - - 新增 DNS 预解析接口 - - 新增开播前封面图 -- 缺陷 - - 修复一些偶发的 crash -- 2.3.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.3.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.3.0.md)) -- 功能 - - 新增直播流画面旋转模式 - - 新增直播流分辨率信息 - - 新增停止渲染的选项 - - 新增基于 FFMPEG 的点播 -- 缺陷 - - 修复一些偶现的 crash -- 优化 - - 优化开始播放的快进时间 -- 2.2.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.4.md)) -- 缺陷 - - 修复与 CocoaLumberjack 符号冲突的问题 -- 2.2.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.3.md)) -- 功能 - - 新增 QoS 功能 - - 新增渲染数据回调 - - 新增截图功能 - - 新增 MP3 后台播放 -- 缺陷 - - 修复后台播放时,触发超时重连,丢失 sps/pps,回到前台画面停住,声音正常的问题 - - 修复 RTMP 扩展时间戳的问题 - - 修复播放器释放阻塞主线程的问题 - - 优化音视频同步机制 - - 优化 caching 状态检查 -- 2.2.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.2.md)) -- 功能 - - 新增 AAC HEV2 音频支持 - - 新增 SDK 自动重连功能,默认不开启 -- 缺陷 - - 修复长时间播放偶发解码 crash - - 修复 pause/resmue 快速调用导致 crash - - 修复重连未更换服务器 IP - - 修复 rtmp 硬解播放视频抖动 - - 修复 flv 开始播放偶发黑屏 - - 修复 flv 超时机制失效 -- 2.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.1.md)) -- 功能 - - 支持 SDK 日志级别设置 - - 新增 HappyDNS 支持 -- 缺陷 - - 修复回看状态不准确问题 - - 修复跳转第三方应用,出现内存增加 - - 修复播放卡住 caching 状态 -- 2.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.0.md)) -- 功能 - - 新增硬解功能 - - 新增 http-flv 支持 - - 新增 iOS9 下的纯 IPV6 环境支持 -- 缺陷 - - 修复快速进入退出黑屏 -- 优化 - - 追帧策略优化 - - 退出后台停止视频解码 -- 2.1.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.3.md)) - - 增加设置一级缓存和二级缓存的选项,便于控制卡顿率 - - 修复播放 OBS 及 FFmpeg 推的流黑屏的问题 - - 修复播放结束后无法重播的问题 - - 修复播放过程中内存暴增的问题 - - 拆分 pili-librtmp 为公共依赖,解决模拟器环境下与 PLStreamingKit 冲突的问题 -- 2.1.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.2.md)) - - 增加确切的错误枚举,方便定位错误类型 - - 增加 mute, currentTime, totalDuration, seekTo 等接口 - - 修复首屏开启以及播放过程中出现缓存后网络恢复是可能出现的 UI 卡顿问题 - - 修复 contentMode 偶尔设置无效的问题 - - 修复重新设置播放 url 播放的问题 - - 修复快速 -stop 以及 -play 出现的内存泄露问题 -- 2.1.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.1.md)) - - 首屏开启速度优化,在网络状况良好的情况下能实现秒开效果 - - 弱网情况下的累积延迟问题优化,较好控制累积延迟在数秒以内 - - 解决了上一版遇到的无法设置 playerView.contentMode 以及 playerOption 的问题 - - 解决了不标准流可能出现的音频断续,播放器内存异常增长问题 - - 后台播放体验优化,修复了后台播放被其他音频打断后出现的一系列问题 - - 解决了应用切换时出现的 UI 卡死问题 -- 2.1.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.0.md)) - - 此次更新为重大版本升级,更改了大量 API 并重构了包括解码渲染在内的多项内容,建议所有用户进行升级,并且根据[快速开始](#快速开始)使用新版 API 对工程重新进行配置。 - - 更改了播放器的音频解码和渲染方式 - - 更改了播放器的时钟同步机制 - - 重构了内部逻辑,使播放器更稳定 - - 重构了播放器 API ,使播放器的使用更加简单明了,去除了使用起来不方便的部分 API - - 解决了播放过程中可能出现声音消失的问题 - - 解决了退后台返回后音视频无法正常同步的问题 - - 修改播放器音视频同步机制 - - 解决持续播放过程中出现部分内存没有正确释放的问题 - - 解决了 iOS 版本小于 8.0 时 Demo 出现的crash问题 -- 2.0.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.4.md)) - - 解决 RTMP 播放时可能黑屏的问题 -- 2.0.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.3.md)) - - 解决 RTMP 播放没有声音 - - 解决 RTMP 无法播放导致内存急增最终 App crash - - 解决 RTMP 无法播放画面只有声音 - - 解决播放 RTMP 时相关的 crash 问题 -- 2.0.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.2.md)) - - 添加 RTMP Cache 机制 - - 添加数据超时属性 - - 修复 RTMP 播放内存 leak - - 修复 RTMP 播放音频错误问题 - - 修复 RTMP 播放主线程卡死问题 - - 优化架构,减少内存和 cpu 占用 -- 2.0.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.1.md)) - - 修复 `contentMode` 设置无效的问题 - - 修复 rtmp 无法播放或播放超时时无 error 抛出的问题 - - 修复 rtmp 播放失败时触发的 cpu 飙升问题 - - 修复 stop 可能触发的 crash 问题 - - 更新 demo 确保在 iOS 9.1 下运行正常 -- 2.0.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.0.md)) - - 添加全新的 `PLPlayer`,弃用 `PLVideoPlayerController` 和 `PLAudioPlayerController` - - 播放 RTMP 音视频流时,进入后台后声音继续播放,不会断开,返回前台追帧显示最新视频帧 - - 针对 RTMP 直播彻底优化,首屏秒开,最小化缓存 - - 完全无 ffmpeg 依赖,包体积再次缩小 - - 优化资源占用,比 1.x 版本内存占用减少 50% 以上 -- 1.2.22 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.22.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.22.md)) - - 修复因收到内存警告而引起的崩溃问题 - - 修复停止播放时,可能进入错误 play state 的问题 -- 1.2.21 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.21.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.21.md)) - - 修复 `PLVideoParameterFrameViewContentMode` 与 `PLVideoParameterDisableDeinterlacing` 设置无效的问题 -- 1.2.20 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.20.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.20.md)) - - 修复 `seekTo:` 不准确的问题 - - 添加 `PLPlayerStateSeeking` 类型 -- 1.2.19 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.19.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.19.md)) - - 修复播放无返回状态的问题(针对无直播的流、hls 回放) - - 修复 hls 回放结束时无 stopped 回调的问题 - - 修复 hls 回放开始的 duration 不为 0 的问题 -- 1.2.18 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.18.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.18.md)) - - 修复在 prepare 状态前释放 player 导致的音频仍然会播放的问题 - - 修复 player 状态返回的类型不正确的问题 - - 优化推出时资源释放 -- 1.2.17 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.17.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.17.md)) - - 修复超时时导致的崩溃的问题 -- 1.2.16 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.17.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.16.md)) - - 添加了音频播放器后台播放的支持 - - 添加了音频播放器后台播放任务开始和结束的回调 - - 添加了音视频播放器超时时长的设定 - - 添加了音视频播放器准备的方法 - - 添加了音视频完全停止播放器的方法 - - 修复播放器不可释放的问题 -- 1.2.15 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.15.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.15.md)) - - 修复 AudioPlayer 无法播放带有视频流的 RTMP 流的问题 -- 1.2.14 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.14.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.14.md)) - - 添加 AudioManager -- 1.2.13 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.13.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.13.md)) - - 添加纯音频播放控件 - - 更新参数字段及类型,确保通用类型可以在音频及视频播放器使用 - - 更新类型名称,增加易读性,减少歧义 -- 1.2.12 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.12.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.12.md)) - - 更改 repo 地址 -- 1.2.11 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.11.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.11.md)) - - 添加对应用状态的判断,减少因进入后台通知延时未能及时暂停播放导致的 crash -- 1.2.10 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.10.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.10.md)) - - 添加音频外设更改时的通知 - - 添加音量变更时的通知 - - 添加打进电话等其他事件导致音频中断的通知 -- 1.2.9 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.9.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.9.md)) - - 修复进入后台后崩溃的问题 - - 更新 example 中 player 代码,支持横竖屏旋转操作 -- 1.2.8 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.8.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.8.md)) - - 添加播放进度回调方法 - - 修复 seekTo 后流状态不正确的问题 -- 1.2.7 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.7.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.7.md)) - - 添加播放器状态属性 - - 添加解码器初始化完成后回调 - - 添加播放器状态回调 - - 添加初始化后自动播放参数 -- 1.2.6 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.6.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.6.md)) - - 添加设置播放位置的操作 - - 添加了快进、快退的操作 - - 添加总播放时长的属性 - - 添加获取音量的属性 - - 添加获取当前播放位置的属性 - - 添加静音操作 -- 1.2.5 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.5.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.5.md)) - - 修复与部分其他库头文件冲突的问题 -- 1.2.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.4.md)) - - 添加了 ```PLMovieParameterFrameViewContentMode``` 参数 - - 修复与部分其他库头文件冲突的问题 - - 修复 Player contentMode 无法更改的问题 -- 1.2.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.3.md)) - - 修复初始化占用主线程导致卡顿的问题 - - 修复错误回调无效的问题 -- 1.2.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.2.md)) - - 修复 lib 未更新导致的 crash -- 1.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.1.md)) - - 添加 failue 情况下的回调,返回 NSError 对象 - - 移除 PLVideoPlayerViewController,请直接使用 PLVideoPlayerController 进行定制 -- 1.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.0.md)) - - 极大缩小 lib 大小 - - 增加可定制的播放控件 PLVideoPlayerController -- 1.1.2 - - 拆分 Flat lib - - 添加了 x86_64 支持,便于在 iPhone 6 Plus 模拟器下调试使用 -- 1.1.1 - - 对库引用做了些修改 -- 1.1.0 - - 发布 CocoaPods 版本 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index d5305f0f..73839498 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,138 +7,138 @@ objects = { /* Begin PBXBuildFile section */ - 00FCAC5BCD9B8CFA2E5948422CD4DDAE /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 02562B809E95BAAB38CF013F36D44D19 /* QNFileRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 026D162622B576A26AF373A66B029492 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 049B460E1DDF110E868627655CE0ADEA /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0663BE59FA130F2E3BFF5C69BA876DB1 /* QNUrlSafeBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 09BF2BDBDD893873FCB34F269A612574 /* HappyDNS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */; }; - 0BED362262BF36B8F775BC5810DD7EDE /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C0ACE468C5A3FC2D6829FF53DBD8479 /* QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1344CB51119D15842FC4D383FEE7A929 /* QNGetAddrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14802D4B61A0203EDC3A8C7570F6E68A /* QNPHAssetResource.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 15C491B54488086CB16B15CB601C9FFC /* QNFile.h in Headers */ = {isa = PBXBuildFile; fileRef = B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15F2517E036D89F20DEC55335BFBFCD8 /* QNAsyncRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 16F9124B427F66CAA1102A766E5666CF /* QNCrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A0C9E85E7788B43EC56BD965B280342 /* QNDes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AECC8954B7B2839370150792D5A9175 /* QNAssessment.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1DDBBAF59891621B45D3F6231D7D1C45 /* QNUrlSafeBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E68AC98F61AB0D5B4464E66DF7E1A2C /* QNHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1EC8595D0E176DB06815789B6F7E35C1 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FF3C6D64DA9D85BD75F8E93DA3E1F7B /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2074CD9320C1A160B046B5560D880930 /* QNResumeUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 241C6F338FFB0EDF2BD15A558486FB50 /* QNResponseInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 250FEC932AE7BCCC71126A5BC5FC7C42 /* QNALAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2649BB0E41BB4BAD1259949A629BAF8C /* QNDnspodFree.h in Headers */ = {isa = PBXBuildFile; fileRef = 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00FCAC5BCD9B8CFA2E5948422CD4DDAE /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 02562B809E95BAAB38CF013F36D44D19 /* QNFileRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 026D162622B576A26AF373A66B029492 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 049B460E1DDF110E868627655CE0ADEA /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0663BE59FA130F2E3BFF5C69BA876DB1 /* QNUrlSafeBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 09BF2BDBDD893873FCB34F269A612574 /* HappyDNS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */; }; + 0BED362262BF36B8F775BC5810DD7EDE /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C0ACE468C5A3FC2D6829FF53DBD8479 /* QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1344CB51119D15842FC4D383FEE7A929 /* QNGetAddrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 14802D4B61A0203EDC3A8C7570F6E68A /* QNPHAssetResource.m in Sources */ = {isa = PBXBuildFile; fileRef = A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 15C491B54488086CB16B15CB601C9FFC /* QNFile.h in Headers */ = {isa = PBXBuildFile; fileRef = E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15F2517E036D89F20DEC55335BFBFCD8 /* QNAsyncRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 16F9124B427F66CAA1102A766E5666CF /* QNCrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A0C9E85E7788B43EC56BD965B280342 /* QNDes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AECC8954B7B2839370150792D5A9175 /* QNAssessment.m in Sources */ = {isa = PBXBuildFile; fileRef = 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1DDBBAF59891621B45D3F6231D7D1C45 /* QNUrlSafeBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E68AC98F61AB0D5B4464E66DF7E1A2C /* QNHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1EC8595D0E176DB06815789B6F7E35C1 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1FF3C6D64DA9D85BD75F8E93DA3E1F7B /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2074CD9320C1A160B046B5560D880930 /* QNResumeUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 241C6F338FFB0EDF2BD15A558486FB50 /* QNResponseInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 250FEC932AE7BCCC71126A5BC5FC7C42 /* QNALAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2649BB0E41BB4BAD1259949A629BAF8C /* QNDnspodFree.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */; settings = {ATTRIBUTES = (Project, ); }; }; 265ED3616AD8DC0516A45DE5473133DD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D31EFA73F770A3C50BFAE023D1E56D3 /* Foundation.framework */; }; - 2A6EEFDF3EE2BBBF63F6063C3F6747A1 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2AD740BC55BB49A3105EF5267B3F9DC8 /* QNDnspodFree.m in Sources */ = {isa = PBXBuildFile; fileRef = FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2AF8E8005BF2A4EBAC866F0A1AF5975C /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B0890F8CC852C7809419D0D23821D1D /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C0F9C4E6CC3087D5D94546FBA6513E9 /* QNFormUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D48D18518EAEE8EA926233AC5A46057 /* QNIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 322066CFEAD1FAD9EF0977D87DE8D189 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3328E089B5039E5EB5551EC892ABF7DF /* QNTxtResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33AEC51DA4D11148AF9E536475F2CA5F /* QNResolvUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A6EEFDF3EE2BBBF63F6063C3F6747A1 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2AD740BC55BB49A3105EF5267B3F9DC8 /* QNDnspodFree.m in Sources */ = {isa = PBXBuildFile; fileRef = DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2AF8E8005BF2A4EBAC866F0A1AF5975C /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B0890F8CC852C7809419D0D23821D1D /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C0F9C4E6CC3087D5D94546FBA6513E9 /* QNFormUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D48D18518EAEE8EA926233AC5A46057 /* QNIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 322066CFEAD1FAD9EF0977D87DE8D189 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3328E089B5039E5EB5551EC892ABF7DF /* QNTxtResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33AEC51DA4D11148AF9E536475F2CA5F /* QNResolvUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 349A7678AD638D5FE26743AAF165A54A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9F6D3552B6EFBAB01346D230F06C4C /* UIKit.framework */; }; - 350B2B79F0527EF423F8DF12A1FA5F3E /* QNPHAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 363D06F81541C8CD064E08DAD245D156 /* QNHijackingDetectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3B3A35DE77437C50D60F6E6636BB6631 /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3DCCE6E7246B1D1FC8167D92B639C2CC /* QNUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 40219C4D96E119A3653199CEF3C5C450 /* QNAssessment.h in Headers */ = {isa = PBXBuildFile; fileRef = 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 419C3D88CB1D304B89D46EE512AED7C8 /* QNIpModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42CD5772BB4545F545F7A94C66FF71FB /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 459CA9A6EDA7270FEC61D71AB2FEDCB2 /* QNFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 477620AD316AA4F7ACC56A9A883BFEBC /* QNTxtResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C6F1763E5F5F1392CD7CF9998070CE5 /* QNFormUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4E3EDE82137478F4649D7313AEF21240 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5163B14F23F3EEAB1678923100E6081C /* QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53C911AB9B274B2540AD2FBE82731F05 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 568B27B0C1F04EB676E89581493BF1EB /* QN_GTM_Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 56AB9718B4C6AAFEAE4CD2476CCC7CCB /* QNResumeUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59E460AA853038A50B89ED33CC615FB4 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AB347BF71B8707C0E682BB6A94EC718 /* QNPHAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B3F88A3B323752583AA0CF2998B91F7 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5ECDFAECC97985582B7C166E09F080AD /* QNResponseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5FCBEE07E8F14838E7BE35BDE84F8248 /* QNALAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6041930BC3BF26EBD7A74CB5CD895FC2 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 647BB53535E2777D43379CF1546B1D9F /* QNResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 65C078F38719873860090B8DBA2A63F0 /* QNResolvUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 65F76863EE834CF454D878FAF5AB5322 /* QNCrc32.m in Sources */ = {isa = PBXBuildFile; fileRef = 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 67DC5C9C4163F9CE8393D5F46D10FF83 /* QNSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 690C4FB4A3AD35235501441EBC25E012 /* QNDomain.m in Sources */ = {isa = PBXBuildFile; fileRef = 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6E3A44502F0AFE891FD101AF7DB7D1F2 /* QNSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6F57B85B843098002BA80A58E1EB7321 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 350B2B79F0527EF423F8DF12A1FA5F3E /* QNPHAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 363D06F81541C8CD064E08DAD245D156 /* QNHijackingDetectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B3A35DE77437C50D60F6E6636BB6631 /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = D857932775054CA8606A306D8B486DAD /* QNDomain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DCCE6E7246B1D1FC8167D92B639C2CC /* QNUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 40219C4D96E119A3653199CEF3C5C450 /* QNAssessment.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 419C3D88CB1D304B89D46EE512AED7C8 /* QNIpModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42CD5772BB4545F545F7A94C66FF71FB /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 459CA9A6EDA7270FEC61D71AB2FEDCB2 /* QNFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 477620AD316AA4F7ACC56A9A883BFEBC /* QNTxtResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C6F1763E5F5F1392CD7CF9998070CE5 /* QNFormUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4E3EDE82137478F4649D7313AEF21240 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5163B14F23F3EEAB1678923100E6081C /* QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 53C911AB9B274B2540AD2FBE82731F05 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 568B27B0C1F04EB676E89581493BF1EB /* QN_GTM_Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 56AB9718B4C6AAFEAE4CD2476CCC7CCB /* QNResumeUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59E460AA853038A50B89ED33CC615FB4 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AB347BF71B8707C0E682BB6A94EC718 /* QNPHAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B3F88A3B323752583AA0CF2998B91F7 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5ECDFAECC97985582B7C166E09F080AD /* QNResponseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5FCBEE07E8F14838E7BE35BDE84F8248 /* QNALAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6041930BC3BF26EBD7A74CB5CD895FC2 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 647BB53535E2777D43379CF1546B1D9F /* QNResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 65C078F38719873860090B8DBA2A63F0 /* QNResolvUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 65F76863EE834CF454D878FAF5AB5322 /* QNCrc32.m in Sources */ = {isa = PBXBuildFile; fileRef = 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 67DC5C9C4163F9CE8393D5F46D10FF83 /* QNSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = F96B35841728F4B46E5858B487545426 /* QNSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 690C4FB4A3AD35235501441EBC25E012 /* QNDomain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6E3A44502F0AFE891FD101AF7DB7D1F2 /* QNSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6F57B85B843098002BA80A58E1EB7321 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 711C5CB0BE75D40FAE77F5AC5E767AD1 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC8ECD367E3091475FE3967365A7B80C /* MobileCoreServices.framework */; }; - 7157D66DCE09397047A7ECF10F15DCBF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71BBEF3A7FAAF62BBC3308850394D79E /* HappyDNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7357363B10B9D7D41665F1B7828BDA43 /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A6AFE6628651F83B627573CE6FE8F21 /* QNConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7B58477AEE26C4DE1ADC00D5E55F8E5A /* QNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B9B58F35E964A3FF6E44170C7510F8B /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BCCD2A47A71CC7B32F13D17E5A4AE62 /* QNUploadOption.m in Sources */ = {isa = PBXBuildFile; fileRef = 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C31EFB76E24C8E8396C0FAE1F3D342F /* QNHex.m in Sources */ = {isa = PBXBuildFile; fileRef = C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7CB156764F8FE79C2842C73928B505EA /* QNUserAgent.m in Sources */ = {isa = PBXBuildFile; fileRef = 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DBF5314D1135331CEE6E6162E162707 /* QNHijackingDetectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DD55156C1DC460651C71BE38835DFB1 /* QNUploadOption+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FE1C36A12C885ECCD858E05C3685AF5 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81A205A4AFB495999F886BB9EB13E908 /* QNNiuDns.m in Sources */ = {isa = PBXBuildFile; fileRef = AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 83A63F557940A009B9E759E23E4CAA65 /* QNRefresher.h in Headers */ = {isa = PBXBuildFile; fileRef = 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83D119A33337E20B29C565E506258A83 /* QNLruCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A01A000B10510D4424E44781AC03814 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8C06FD17EC723CC183FBB5A387672F48 /* QNHex.h in Headers */ = {isa = PBXBuildFile; fileRef = DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C1552D198ED1137025CD54BF433C83A /* QNDnspodEnterprise.m in Sources */ = {isa = PBXBuildFile; fileRef = F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8E6AC34E2A4F8423CD0DF614136AC676 /* QNResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FD9748C3ED58A0EE65630E95CB18248 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */; }; - 903D7C99FA3000D38BCD8C91C37A4C30 /* QNFileDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 905139824E6A1D7C5968D69179D02FEA /* QNPHAssetResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97963980546ADA0E51993C3CEE793D7A /* QNRefresher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7157D66DCE09397047A7ECF10F15DCBF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71BBEF3A7FAAF62BBC3308850394D79E /* HappyDNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7357363B10B9D7D41665F1B7828BDA43 /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A6AFE6628651F83B627573CE6FE8F21 /* QNConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7B58477AEE26C4DE1ADC00D5E55F8E5A /* QNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7B9B58F35E964A3FF6E44170C7510F8B /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BCCD2A47A71CC7B32F13D17E5A4AE62 /* QNUploadOption.m in Sources */ = {isa = PBXBuildFile; fileRef = 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7C31EFB76E24C8E8396C0FAE1F3D342F /* QNHex.m in Sources */ = {isa = PBXBuildFile; fileRef = C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7CB156764F8FE79C2842C73928B505EA /* QNUserAgent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7DBF5314D1135331CEE6E6162E162707 /* QNHijackingDetectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7DD55156C1DC460651C71BE38835DFB1 /* QNUploadOption+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7FE1C36A12C885ECCD858E05C3685AF5 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81A205A4AFB495999F886BB9EB13E908 /* QNNiuDns.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 83A63F557940A009B9E759E23E4CAA65 /* QNRefresher.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83D119A33337E20B29C565E506258A83 /* QNLruCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A01A000B10510D4424E44781AC03814 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8C06FD17EC723CC183FBB5A387672F48 /* QNHex.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C1552D198ED1137025CD54BF433C83A /* QNDnspodEnterprise.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8E6AC34E2A4F8423CD0DF614136AC676 /* QNResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FD9748C3ED58A0EE65630E95CB18248 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */; }; + 903D7C99FA3000D38BCD8C91C37A4C30 /* QNFileDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 905139824E6A1D7C5968D69179D02FEA /* QNPHAssetResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97963980546ADA0E51993C3CEE793D7A /* QNRefresher.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC72569656FDE0D985943483747BD /* QNRefresher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 97A13EB651212D6FC28B81784C63AA45 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F8B2946022455300C6F270F10B82860 /* QuartzCore.framework */; }; - 9B5D721633B82BF8FE44D1A435434DF9 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C84740A73C7B63B807B456C4805729C /* QNLruCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A1811ED36BA3604579E607F3B354DEEB /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A24BAAF3B583B62841356D5F83844B77 /* QNEtag.h in Headers */ = {isa = PBXBuildFile; fileRef = 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3FC444F76F658DBE9D645ED28CA3A9F /* QNUpToken.m in Sources */ = {isa = PBXBuildFile; fileRef = EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A72B151E1A77D43ECB0A57B061BE8C55 /* QN_GTM_Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B5D721633B82BF8FE44D1A435434DF9 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C84740A73C7B63B807B456C4805729C /* QNLruCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A1811ED36BA3604579E607F3B354DEEB /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A24BAAF3B583B62841356D5F83844B77 /* QNEtag.h in Headers */ = {isa = PBXBuildFile; fileRef = FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3FC444F76F658DBE9D645ED28CA3A9F /* QNUpToken.m in Sources */ = {isa = PBXBuildFile; fileRef = A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A72B151E1A77D43ECB0A57B061BE8C55 /* QN_GTM_Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */; settings = {ATTRIBUTES = (Project, ); }; }; A964B233BFF72237CC124B8A06703F97 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB0BFFBD39604FD5121380027C30BCD6 /* ImageIO.framework */; }; - ADB022A853D74C0A9F48BC16D4EA59CF /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B039667FA31A64F29A5638019EF2C9DA /* QNHttpDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3CEB032AD33C2630AFFA6247C6CF072 /* QNIP.m in Sources */ = {isa = PBXBuildFile; fileRef = AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B4BEBC36B586556BFDEDDB9F6D669239 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4BF87B55CEC8C4194226AA6229A0CB6 /* QNHosts.h in Headers */ = {isa = PBXBuildFile; fileRef = 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5BE571A0725C4506001C206FB69C2F7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD0E2AAAB931512989ACFFE8C4938547 /* QNDes.m in Sources */ = {isa = PBXBuildFile; fileRef = E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BD780769CDEB330DA9393897E96D35A7 /* QNUserAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BDB9242EB9D0BB1B63958A70527F0F8C /* QNUploadOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BEFDD2A0B28388F7F78007878829CE51 /* QNAsyncRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0953168C5916BF83D7C7BDE01A2A300 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C377872DFB1866AB37FF5CABDFA1A57D /* QNUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ADB022A853D74C0A9F48BC16D4EA59CF /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B039667FA31A64F29A5638019EF2C9DA /* QNHttpDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3CEB032AD33C2630AFFA6247C6CF072 /* QNIP.m in Sources */ = {isa = PBXBuildFile; fileRef = C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B4BEBC36B586556BFDEDDB9F6D669239 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4BF87B55CEC8C4194226AA6229A0CB6 /* QNHosts.h in Headers */ = {isa = PBXBuildFile; fileRef = 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5BE571A0725C4506001C206FB69C2F7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD0E2AAAB931512989ACFFE8C4938547 /* QNDes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BD780769CDEB330DA9393897E96D35A7 /* QNUserAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BDB9242EB9D0BB1B63958A70527F0F8C /* QNUploadOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEFDD2A0B28388F7F78007878829CE51 /* QNAsyncRun.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0953168C5916BF83D7C7BDE01A2A300 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C377872DFB1866AB37FF5CABDFA1A57D /* QNUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C3E47E820E015EB5CFEA0BB6561E69DB /* Pods-PLShortVideoKitDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0869A48DAE27D06F7DF24D788C64BE4B /* Pods-PLShortVideoKitDemo-dummy.m */; }; - C8248B3C044FD771E89F30C3DA96D66A /* QNPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8A14D2BA8DFC398A5C49D415C4FF2D9 /* QNDnsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CCCCEF59E0D65D69ACE977750110334D /* QNEtag.m in Sources */ = {isa = PBXBuildFile; fileRef = A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CF3A377055BE34BB715B57D7B62BFA40 /* QNSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D31DBF98F610A1ECEB99E97B850C4AD1 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */; }; - D5C96B0960F013065D15C930193B78BC /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D7BDB9E052EB5EA2EC6AF5A83B488127 /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DB4A1305E55FA9EB74EF834970C99BC9 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DFDBC5D645F420C9D2B3AB50F30D2CD6 /* QNRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E05094412173B5ABBBE114312DD1728A /* QNVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E5375B280150DA5C76A9E9E1B80A60CC /* QNUpToken.h in Headers */ = {isa = PBXBuildFile; fileRef = CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E8D2B06760AD270146CF0C5CB07E2043 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA08B876876ED946C490060937093F88 /* Qiniu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */; }; - EC08F5BD81AFB8570FADDBA294CA8D20 /* QNDnspodEnterprise.h in Headers */ = {isa = PBXBuildFile; fileRef = 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED0CB8C2C60D38AE4219B6D10E2B0C12 /* QNSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEFBFFB976D7097E94CC07DF166CEA02 /* QNFileRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F266EB05CCB89275989DCC9BD5E1298A /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F377AB64B571A2033CFD0EA1F143B0A3 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F4C174778043F9D2D52A4F7F0212C3D7 /* QNIpModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F53B229FD6A996DEECC61BF2883E92D0 /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F66769A190AFA0E48A0B8F106DA93809 /* QNRecorderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCD64586536B2C1974F92ACAF8447ACD /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8248B3C044FD771E89F30C3DA96D66A /* QNPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8A14D2BA8DFC398A5C49D415C4FF2D9 /* QNDnsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CCCCEF59E0D65D69ACE977750110334D /* QNEtag.m in Sources */ = {isa = PBXBuildFile; fileRef = 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CF3A377055BE34BB715B57D7B62BFA40 /* QNSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D31DBF98F610A1ECEB99E97B850C4AD1 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */; }; + D5C96B0960F013065D15C930193B78BC /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D7BDB9E052EB5EA2EC6AF5A83B488127 /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DB4A1305E55FA9EB74EF834970C99BC9 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFDBC5D645F420C9D2B3AB50F30D2CD6 /* QNRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E05094412173B5ABBBE114312DD1728A /* QNVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E5375B280150DA5C76A9E9E1B80A60CC /* QNUpToken.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8D2B06760AD270146CF0C5CB07E2043 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA08B876876ED946C490060937093F88 /* Qiniu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */; }; + EC08F5BD81AFB8570FADDBA294CA8D20 /* QNDnspodEnterprise.h in Headers */ = {isa = PBXBuildFile; fileRef = 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED0CB8C2C60D38AE4219B6D10E2B0C12 /* QNSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEFBFFB976D7097E94CC07DF166CEA02 /* QNFileRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F266EB05CCB89275989DCC9BD5E1298A /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F377AB64B571A2033CFD0EA1F143B0A3 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F4C174778043F9D2D52A4F7F0212C3D7 /* QNIpModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F53B229FD6A996DEECC61BF2883E92D0 /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F66769A190AFA0E48A0B8F106DA93809 /* QNRecorderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCD64586536B2C1974F92ACAF8447ACD /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE10BA2FAA90290CC46ADF5ECE10308A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D79B4A5D46B50199E9AC518049DF76A /* CoreGraphics.framework */; }; - FF0C1F9D7641219A66B0BD92639FFE5C /* QiniuSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF437AD3B544553B1BFA4AA5BBAF09F8 /* QNNiuDns.h in Headers */ = {isa = PBXBuildFile; fileRef = BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF0C1F9D7641219A66B0BD92639FFE5C /* QiniuSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF437AD3B544553B1BFA4AA5BBAF09F8 /* QNNiuDns.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -180,175 +180,174 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAssessment.h; path = HappyDNS/Assessment/QNAssessment.h; sourceTree = ""; }; - 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QiniuSDK.h; path = QiniuSDK/QiniuSDK.h; sourceTree = ""; }; - 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNTxtResolver.m; path = HappyDNS/Local/QNTxtResolver.m; sourceTree = ""; }; + 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetResource.h; path = QiniuSDK/Common/QNPHAssetResource.h; sourceTree = ""; }; + 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HappyDNS-dummy.m"; sourceTree = ""; }; + 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAssessment.m; path = HappyDNS/Assessment/QNAssessment.m; sourceTree = ""; }; 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = libMuseProcessor.a; path = Pod/Library/libMuseProcessor.a; sourceTree = ""; }; 0869A48DAE27D06F7DF24D788C64BE4B /* Pods-PLShortVideoKitDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PLShortVideoKitDemo-dummy.m"; sourceTree = ""; }; - 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileDelegate.h; path = QiniuSDK/Common/QNFileDelegate.h; sourceTree = ""; }; - 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIP.h; path = HappyDNS/Util/QNIP.h; sourceTree = ""; }; 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PLShortVideoKit.framework; path = Pod/Library/PLShortVideoKit.framework; sourceTree = ""; }; - 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAsyncRun.m; path = QiniuSDK/Common/QNAsyncRun.m; sourceTree = ""; }; + 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + 0D75AC56D47DF78EB80A6E2C8579FCAE /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; + 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnsManager.h; path = HappyDNS/Common/QNDnsManager.h; sourceTree = ""; }; + 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUserAgent.m; path = QiniuSDK/Http/QNUserAgent.m; sourceTree = ""; }; 10A9146753D3A7E91C2F1BE6486F66E2 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Qiniu.xcconfig; sourceTree = ""; }; - 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolverDelegate.h; path = HappyDNS/Common/QNResolverDelegate.h; sourceTree = ""; }; - 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRecord.m; path = HappyDNS/Common/QNRecord.m; sourceTree = ""; }; - 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFile.m; path = QiniuSDK/Common/QNFile.m; sourceTree = ""; }; - 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNEtag.h; path = QiniuSDK/Common/QNEtag.h; sourceTree = ""; }; - 21ABEED3DBDEF750695386BAC0B9FE60 /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; - 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodEnterprise.h; path = HappyDNS/Http/QNDnspodEnterprise.h; sourceTree = ""; }; - 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNMD5.h; path = HappyDNS/Util/QNMD5.h; sourceTree = ""; }; - 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIpModel.m; path = HappyDNS/Assessment/QNIpModel.m; sourceTree = ""; }; - 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HappyDNS.h; path = HappyDNS/HappyDNS.h; sourceTree = ""; }; + 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetFile.m; path = QiniuSDK/Common/QNPHAssetFile.m; sourceTree = ""; }; + 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QN_GTM_Base64.h; path = QiniuSDK/Common/QN_GTM_Base64.h; sourceTree = ""; }; + 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNCrc32.m; path = QiniuSDK/Common/QNCrc32.m; sourceTree = ""; }; + 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNTxtResolver.h; path = HappyDNS/Local/QNTxtResolver.h; sourceTree = ""; }; + 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUserAgent.h; path = QiniuSDK/Http/QNUserAgent.h; sourceTree = ""; }; + 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; + 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodFree.h; path = HappyDNS/Http/QNDnspodFree.h; sourceTree = ""; }; + 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDomain.m; path = HappyDNS/Common/QNDomain.m; sourceTree = ""; }; + 236F4B78590EAE9229A551FDBF559772 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; + 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNConfiguration.m; path = QiniuSDK/Storage/QNConfiguration.m; sourceTree = ""; }; + 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 2B58165CEDFED39A8BD707B7870198F7 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; 2D31EFA73F770A3C50BFAE023D1E56D3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; - 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QN_GTM_Base64.m; path = QiniuSDK/Common/QN_GTM_Base64.m; sourceTree = ""; }; 3214B6323CCB28CFA455BB7E275952E4 /* libHappyDNS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHappyDNS.a; path = libHappyDNS.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3328EAAB2D4415F0E05872C917C01011 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + 33A7D8CFFA796EDD780E52D05F360123 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; + 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRecord.m; path = HappyDNS/Common/QNRecord.m; sourceTree = ""; }; + 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; 367D89C8977A6E6AA6E76C788A58D691 /* Pods-PLShortVideoKitDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PLShortVideoKitDemo-acknowledgements.plist"; sourceTree = ""; }; - 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSessionManager.h; path = QiniuSDK/Http/QNSessionManager.h; sourceTree = ""; }; - 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHijackingDetectWrapper.m; path = HappyDNS/Local/QNHijackingDetectWrapper.m; sourceTree = ""; }; - 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolver.m; path = HappyDNS/Local/QNResolver.m; sourceTree = ""; }; - 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDomain.h; path = HappyDNS/Common/QNDomain.h; sourceTree = ""; }; - 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNCrc32.m; path = QiniuSDK/Common/QNCrc32.m; sourceTree = ""; }; - 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSystem.h; path = QiniuSDK/Common/QNSystem.h; sourceTree = ""; }; - 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnsManager.m; path = HappyDNS/Common/QNDnsManager.m; sourceTree = ""; }; - 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFormUpload.h; path = QiniuSDK/Storage/QNFormUpload.h; sourceTree = ""; }; - 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 469FC77AD477F4EDED62676055D5CDE4 /* Qiniu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Qiniu-prefix.pch"; sourceTree = ""; }; - 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHosts.h; path = HappyDNS/Local/QNHosts.h; sourceTree = ""; }; - 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNVersion.h; path = QiniuSDK/Common/QNVersion.h; sourceTree = ""; }; - 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnsManager.h; path = HappyDNS/Common/QNDnsManager.h; sourceTree = ""; }; - 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetFile.m; path = QiniuSDK/Common/QNPHAssetFile.m; sourceTree = ""; }; - 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolver.h; path = HappyDNS/Local/QNResolver.h; sourceTree = ""; }; - 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResumeUpload.m; path = QiniuSDK/Storage/QNResumeUpload.m; sourceTree = ""; }; - 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUrlSafeBase64.h; path = QiniuSDK/Common/QNUrlSafeBase64.h; sourceTree = ""; }; + 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHosts.h; path = HappyDNS/Local/QNHosts.h; sourceTree = ""; }; + 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIP.h; path = HappyDNS/Util/QNIP.h; sourceTree = ""; }; + 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNALAssetFile.h; path = QiniuSDK/Common/QNALAssetFile.h; sourceTree = ""; }; + 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNALAssetFile.m; path = QiniuSDK/Common/QNALAssetFile.m; sourceTree = ""; }; + 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRefresher.h; path = HappyDNS/QNRefresher.h; sourceTree = ""; }; + 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHijackingDetectWrapper.m; path = HappyDNS/Local/QNHijackingDetectWrapper.m; sourceTree = ""; }; + 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecorderDelegate.h; path = QiniuSDK/Recorder/QNRecorderDelegate.h; sourceTree = ""; }; + 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResponseInfo.h; path = QiniuSDK/Http/QNResponseInfo.h; sourceTree = ""; }; + 467CC72569656FDE0D985943483747BD /* QNRefresher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRefresher.m; path = HappyDNS/QNRefresher.m; sourceTree = ""; }; + 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHttpDelegate.h; path = QiniuSDK/Http/QNHttpDelegate.h; sourceTree = ""; }; + 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadOption.m; path = QiniuSDK/Storage/QNUploadOption.m; sourceTree = ""; }; + 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUrlSafeBase64.h; path = QiniuSDK/Common/QNUrlSafeBase64.h; sourceTree = ""; }; + 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFile.m; path = QiniuSDK/Common/QNFile.m; sourceTree = ""; }; + 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNetworkInfo.m; path = HappyDNS/Common/QNNetworkInfo.m; sourceTree = ""; }; + 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; + 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNVersion.h; path = QiniuSDK/Common/QNVersion.h; sourceTree = ""; }; + 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodEnterprise.h; path = HappyDNS/Http/QNDnspodEnterprise.h; sourceTree = ""; }; + 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIpModel.h; path = HappyDNS/Assessment/QNIpModel.h; sourceTree = ""; }; 565D99E1EFF1D1AF888A143839705DAE /* Pods-PLShortVideoKitDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PLShortVideoKitDemo-acknowledgements.markdown"; sourceTree = ""; }; - 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadOption.m; path = QiniuSDK/Storage/QNUploadOption.m; sourceTree = ""; }; + 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; 5A16161D246ACB5C4C2DDC66B568CA79 /* PLShortVideoKit.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = PLShortVideoKit.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResumeUpload.h; path = QiniuSDK/Storage/QNResumeUpload.h; sourceTree = ""; }; - 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIpModel.h; path = HappyDNS/Assessment/QNIpModel.h; sourceTree = ""; }; - 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRefresher.m; path = HappyDNS/QNRefresher.m; sourceTree = ""; }; - 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolvUtil.h; path = HappyDNS/Local/QNResolvUtil.h; sourceTree = ""; }; - 5E52E9B9ED55092F70D29C243B951944 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; - 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHttpDelegate.h; path = QiniuSDK/Http/QNHttpDelegate.h; sourceTree = ""; }; + 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadOption.h; path = QiniuSDK/Storage/QNUploadOption.h; sourceTree = ""; }; + 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSessionManager.m; path = QiniuSDK/Http/QNSessionManager.m; sourceTree = ""; }; + 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFileRecorder.m; path = QiniuSDK/Recorder/QNFileRecorder.m; sourceTree = ""; }; 5F8B2946022455300C6F270F10B82860 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNTxtResolver.h; path = HappyDNS/Local/QNTxtResolver.h; sourceTree = ""; }; - 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNGetAddrInfo.h; path = HappyDNS/Util/QNGetAddrInfo.h; sourceTree = ""; }; - 640EC3C21264359303413EFEAC49C5FC /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; - 66D29754CB250301ABADAFD50ACA2D7A /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; - 69667934F740E4F5406EFED77B0227FB /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; + 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + 63C2A276D28472EAAFB8A0C665E148FB /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPipeline.m; path = QiniuSDK/BigData/QNPipeline.m; sourceTree = ""; }; + 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFormUpload.m; path = QiniuSDK/Storage/QNFormUpload.m; sourceTree = ""; }; 6B0A21A8CB6D340933300E61D9571C01 /* Pods-PLShortVideoKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PLShortVideoKitDemo.release.xcconfig"; sourceTree = ""; }; - 6B68CE250D8A73145B26CDCC7D75DC18 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 6BCEA0B4E2FCBD2E7A8A5052BA4BDA14 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; - 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHijackingDetectWrapper.h; path = HappyDNS/Local/QNHijackingDetectWrapper.h; sourceTree = ""; }; 6D79B4A5D46B50199E9AC518049DF76A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QN_GTM_Base64.h; path = QiniuSDK/Common/QN_GTM_Base64.h; sourceTree = ""; }; - 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "QNUploadOption+Private.h"; path = "QiniuSDK/Storage/QNUploadOption+Private.h"; sourceTree = ""; }; - 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAsyncRun.h; path = QiniuSDK/Common/QNAsyncRun.h; sourceTree = ""; }; - 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUserAgent.m; path = QiniuSDK/Http/QNUserAgent.m; sourceTree = ""; }; - 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUserAgent.h; path = QiniuSDK/Http/QNUserAgent.h; sourceTree = ""; }; - 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodFree.h; path = HappyDNS/Http/QNDnspodFree.h; sourceTree = ""; }; - 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDomain.m; path = HappyDNS/Common/QNDomain.m; sourceTree = ""; }; - 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNLruCache.m; path = HappyDNS/Common/QNLruCache.m; sourceTree = ""; }; - 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNLruCache.h; path = HappyDNS/Common/QNLruCache.h; sourceTree = ""; }; - 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAssessment.m; path = HappyDNS/Assessment/QNAssessment.m; sourceTree = ""; }; - 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HappyDNS.xcconfig; sourceTree = ""; }; - 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecorderDelegate.h; path = QiniuSDK/Recorder/QNRecorderDelegate.h; sourceTree = ""; }; + 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileRecorder.h; path = QiniuSDK/Recorder/QNFileRecorder.h; sourceTree = ""; }; + 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResumeUpload.m; path = QiniuSDK/Storage/QNResumeUpload.m; sourceTree = ""; }; + 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnsManager.m; path = HappyDNS/Common/QNDnsManager.m; sourceTree = ""; }; + 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNetworkInfo.h; path = HappyDNS/Common/QNNetworkInfo.h; sourceTree = ""; }; + 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResponseInfo.m; path = QiniuSDK/Http/QNResponseInfo.m; sourceTree = ""; }; + 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNiuDns.m; path = HappyDNS/Http/QNNiuDns.m; sourceTree = ""; }; + 7CF0040A5A0848F301192E2425B1FE15 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDes.h; path = HappyDNS/Util/QNDes.h; sourceTree = ""; }; + 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileDelegate.h; path = QiniuSDK/Common/QNFileDelegate.h; sourceTree = ""; }; + 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HappyDNS.xcconfig; sourceTree = ""; }; + 82F6A9B14C326E2504B27122A838E69E /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; + 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; + 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNLruCache.m; path = HappyDNS/Common/QNLruCache.m; sourceTree = ""; }; 8C491A254E6BED3C367126E111253351 /* Pods-PLShortVideoKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PLShortVideoKitDemo.debug.xcconfig"; sourceTree = ""; }; - 901F38720095621C142CE338704B59A9 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; - 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolvUtil.m; path = HappyDNS/Local/QNResolvUtil.m; sourceTree = ""; }; - 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSystem.m; path = QiniuSDK/Common/QNSystem.m; sourceTree = ""; }; + 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHosts.m; path = HappyDNS/Local/QNHosts.m; sourceTree = ""; }; + 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNTxtResolver.m; path = HappyDNS/Local/QNTxtResolver.m; sourceTree = ""; }; + 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HappyDNS.h; path = HappyDNS/HappyDNS.h; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHijackingDetectWrapper.h; path = HappyDNS/Local/QNHijackingDetectWrapper.h; sourceTree = ""; }; - 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QN_GTM_Base64.m; path = QiniuSDK/Common/QN_GTM_Base64.m; sourceTree = ""; }; - 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDes.h; path = HappyDNS/Util/QNDes.h; sourceTree = ""; }; - 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRefresher.h; path = HappyDNS/QNRefresher.h; sourceTree = ""; }; - 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Qiniu-dummy.m"; sourceTree = ""; }; - 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNMD5.m; path = HappyDNS/Util/QNMD5.m; sourceTree = ""; }; - 9A5BFB1A35BC8E5458248B8BC6391206 /* HappyDNS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HappyDNS-prefix.pch"; sourceTree = ""; }; - 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadOption.h; path = QiniuSDK/Storage/QNUploadOption.h; sourceTree = ""; }; - 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetResource.h; path = QiniuSDK/Common/QNPHAssetResource.h; sourceTree = ""; }; - A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSessionManager.m; path = QiniuSDK/Http/QNSessionManager.m; sourceTree = ""; }; - A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUrlSafeBase64.m; path = QiniuSDK/Common/QNUrlSafeBase64.m; sourceTree = ""; }; + 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNEtag.m; path = QiniuSDK/Common/QNEtag.m; sourceTree = ""; }; + 943E8DB192B27700E2F110BF27F67BF7 /* Qiniu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Qiniu-prefix.pch"; sourceTree = ""; }; + 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAsyncRun.m; path = QiniuSDK/Common/QNAsyncRun.m; sourceTree = ""; }; + 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFormUpload.h; path = QiniuSDK/Storage/QNFormUpload.h; sourceTree = ""; }; + 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolver.m; path = HappyDNS/Local/QNResolver.m; sourceTree = ""; }; + 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDes.m; path = HappyDNS/Util/QNDes.m; sourceTree = ""; }; + 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodEnterprise.m; path = HappyDNS/Http/QNDnspodEnterprise.m; sourceTree = ""; }; + 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolvUtil.h; path = HappyDNS/Local/QNResolvUtil.h; sourceTree = ""; }; + 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolver.h; path = HappyDNS/Local/QNResolver.h; sourceTree = ""; }; + 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetResource.m; path = QiniuSDK/Common/QNPHAssetResource.m; sourceTree = ""; }; + A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUpToken.m; path = QiniuSDK/Storage/QNUpToken.m; sourceTree = ""; }; A77C94B69B20DCCE43853E0A7B34A052 /* Pods-PLShortVideoKitDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PLShortVideoKitDemo-frameworks.sh"; sourceTree = ""; }; - A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNEtag.m; path = QiniuSDK/Common/QNEtag.m; sourceTree = ""; }; - A8D9CFF9323309A324822CB70C172FC0 /* PLPlayerKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PLPlayerKit.framework; path = Pod/Library/PLPlayerKit.framework; sourceTree = ""; }; + A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolvUtil.m; path = HappyDNS/Local/QNResolvUtil.m; sourceTree = ""; }; + A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + AA339544A7A4B8C938206084587B3571 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; + AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecord.h; path = HappyDNS/Common/QNRecord.h; sourceTree = ""; }; AB895406B93DD8B56B9239125F3801C0 /* libPods-PLShortVideoKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PLShortVideoKitDemo.a"; path = "libPods-PLShortVideoKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNALAssetFile.h; path = QiniuSDK/Common/QNALAssetFile.h; sourceTree = ""; }; - AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIP.m; path = HappyDNS/Util/QNIP.m; sourceTree = ""; }; - AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecord.h; path = HappyDNS/Common/QNRecord.h; sourceTree = ""; }; - AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNiuDns.m; path = HappyDNS/Http/QNNiuDns.m; sourceTree = ""; }; - B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFile.h; path = QiniuSDK/Common/QNFile.h; sourceTree = ""; }; - B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNALAssetFile.m; path = QiniuSDK/Common/QNALAssetFile.m; sourceTree = ""; }; + ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPipeline.h; path = QiniuSDK/BigData/QNPipeline.h; sourceTree = ""; }; + BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNMD5.m; path = HappyDNS/Util/QNMD5.m; sourceTree = ""; }; + BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNMD5.h; path = HappyDNS/Util/QNMD5.h; sourceTree = ""; }; BB985C8EB70C15B125D3AA515DCC9AD6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNiuDns.h; path = HappyDNS/Http/QNNiuDns.h; sourceTree = ""; }; - C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNetworkInfo.h; path = HappyDNS/Common/QNNetworkInfo.h; sourceTree = ""; }; - C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHex.m; path = HappyDNS/Util/QNHex.m; sourceTree = ""; }; - C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResponseInfo.h; path = QiniuSDK/Http/QNResponseInfo.h; sourceTree = ""; }; - C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetResource.m; path = QiniuSDK/Common/QNPHAssetResource.m; sourceTree = ""; }; - C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetFile.h; path = QiniuSDK/Common/QNPHAssetFile.h; sourceTree = ""; }; + BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Qiniu-dummy.m"; sourceTree = ""; }; + C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAssessment.h; path = HappyDNS/Assessment/QNAssessment.h; sourceTree = ""; }; + C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIP.m; path = HappyDNS/Util/QNIP.m; sourceTree = ""; }; + C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHex.m; path = HappyDNS/Util/QNHex.m; sourceTree = ""; }; + C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNLruCache.h; path = HappyDNS/Common/QNLruCache.h; sourceTree = ""; }; CB0BFFBD39604FD5121380027C30BCD6 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNConfiguration.h; path = QiniuSDK/Storage/QNConfiguration.h; sourceTree = ""; }; CCD0B8F2AF7F9EBE995C64B1B09FA35A /* libFLAnimatedImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFLAnimatedImage.a; path = libFLAnimatedImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResumeUpload.h; path = QiniuSDK/Storage/QNResumeUpload.h; sourceTree = ""; }; CDAF0D1FDC0E091388EF39A97F607DA9 /* libQiniu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libQiniu.a; path = libQiniu.a; sourceTree = BUILT_PRODUCTS_DIR; }; CE9F6D3552B6EFBAB01346D230F06C4C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUpToken.h; path = QiniuSDK/Storage/QNUpToken.h; sourceTree = ""; }; - D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; - D41B983780B7DD01BFCEDC68E6D51909 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; - D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadManager.h; path = QiniuSDK/Storage/QNUploadManager.h; sourceTree = ""; }; - D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNConfiguration.h; path = QiniuSDK/Storage/QNConfiguration.h; sourceTree = ""; }; - D90E77729108EB4B3B82164A19B911BC /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHex.h; path = HappyDNS/Util/QNHex.h; sourceTree = ""; }; + CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QiniuSDK.h; path = QiniuSDK/QiniuSDK.h; sourceTree = ""; }; + D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetFile.h; path = QiniuSDK/Common/QNPHAssetFile.h; sourceTree = ""; }; + D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHex.h; path = HappyDNS/Util/QNHex.h; sourceTree = ""; }; + D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUpToken.h; path = QiniuSDK/Storage/QNUpToken.h; sourceTree = ""; }; + D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "QNUploadOption+Private.h"; path = "QiniuSDK/Storage/QNUploadOption+Private.h"; sourceTree = ""; }; + D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Qiniu.xcconfig; sourceTree = ""; }; + D857932775054CA8606A306D8B486DAD /* QNDomain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDomain.h; path = HappyDNS/Common/QNDomain.h; sourceTree = ""; }; + D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; DC8ECD367E3091475FE3967365A7B80C /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadManager.m; path = QiniuSDK/Storage/QNUploadManager.m; sourceTree = ""; }; - DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNetworkInfo.m; path = HappyDNS/Common/QNNetworkInfo.m; sourceTree = ""; }; - E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDes.m; path = HappyDNS/Util/QNDes.m; sourceTree = ""; }; - E12B0EB5CD70411F38328A7B3A7A9C7F /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; - E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNGetAddrInfo.m; path = HappyDNS/Util/QNGetAddrInfo.m; sourceTree = ""; }; + DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + DD64CDB74B4DBBF36E70CB6DA94F6AFC /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; + DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadManager.m; path = QiniuSDK/Storage/QNUploadManager.m; sourceTree = ""; }; + DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodFree.m; path = HappyDNS/Http/QNDnspodFree.m; sourceTree = ""; }; + E1740E31A8E1CE76D0B4383F4874DEC4 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; + E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; + E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFile.h; path = QiniuSDK/Common/QNFile.h; sourceTree = ""; }; E5A588A32127ACCF50D2B9EB58A04815 /* Pods-PLShortVideoKitDemo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PLShortVideoKitDemo-resources.sh"; sourceTree = ""; }; - E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResponseInfo.m; path = QiniuSDK/Http/QNResponseInfo.m; sourceTree = ""; }; - E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFileRecorder.m; path = QiniuSDK/Recorder/QNFileRecorder.m; sourceTree = ""; }; - EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; - EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUpToken.m; path = QiniuSDK/Storage/QNUpToken.m; sourceTree = ""; }; - EE8D3F9888CA8DAB2B67FAF266520B9F /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodEnterprise.m; path = HappyDNS/Http/QNDnspodEnterprise.m; sourceTree = ""; }; - F2B4BDD8697134042592216235BF7F67 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; - F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHosts.m; path = HappyDNS/Local/QNHosts.m; sourceTree = ""; }; - F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileRecorder.h; path = QiniuSDK/Recorder/QNFileRecorder.h; sourceTree = ""; }; - F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPipeline.m; path = QiniuSDK/BigData/QNPipeline.m; sourceTree = ""; }; - F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HappyDNS-dummy.m"; sourceTree = ""; }; - F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPipeline.h; path = QiniuSDK/BigData/QNPipeline.h; sourceTree = ""; }; - F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFormUpload.m; path = QiniuSDK/Storage/QNFormUpload.m; sourceTree = ""; }; - FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNConfiguration.m; path = QiniuSDK/Storage/QNConfiguration.m; sourceTree = ""; }; - FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodFree.m; path = HappyDNS/Http/QNDnspodFree.m; sourceTree = ""; }; + E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSystem.m; path = QiniuSDK/Common/QNSystem.m; sourceTree = ""; }; + E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNGetAddrInfo.m; path = HappyDNS/Util/QNGetAddrInfo.m; sourceTree = ""; }; + E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAsyncRun.h; path = QiniuSDK/Common/QNAsyncRun.h; sourceTree = ""; }; + EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNCrc32.h; path = QiniuSDK/Common/QNCrc32.h; sourceTree = ""; }; + F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNGetAddrInfo.h; path = HappyDNS/Util/QNGetAddrInfo.h; sourceTree = ""; }; + F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUrlSafeBase64.m; path = QiniuSDK/Common/QNUrlSafeBase64.m; sourceTree = ""; }; + F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolverDelegate.h; path = HappyDNS/Common/QNResolverDelegate.h; sourceTree = ""; }; + F5424E759CF83153A748AD64CCF0B1EE /* HappyDNS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HappyDNS-prefix.pch"; sourceTree = ""; }; + F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadManager.h; path = QiniuSDK/Storage/QNUploadManager.h; sourceTree = ""; }; + F5AC90D519CD2525287A2C007C226EBB /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; + F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNiuDns.h; path = HappyDNS/Http/QNNiuDns.h; sourceTree = ""; }; + F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + F96B35841728F4B46E5858B487545426 /* QNSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSystem.h; path = QiniuSDK/Common/QNSystem.h; sourceTree = ""; }; FDF7DFD464D5584F6B546997C53E396D /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMasonry.a; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNCrc32.h; path = QiniuSDK/Common/QNCrc32.h; sourceTree = ""; }; - FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; + FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNEtag.h; path = QiniuSDK/Common/QNEtag.h; sourceTree = ""; }; + FEC54D8B52CE0E6BDDA832458CAAE6F1 /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; + FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSessionManager.h; path = QiniuSDK/Http/QNSessionManager.h; sourceTree = ""; }; + FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIpModel.m; path = HappyDNS/Assessment/QNIpModel.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -406,25 +405,6 @@ name = Pod; sourceTree = ""; }; - 0844A41A23F2FDB15E4E9C1743A09C85 /* Frameworks */ = { - isa = PBXGroup; - children = ( - EE8D3F9888CA8DAB2B67FAF266520B9F /* Crashlytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 09568E540F357ADA2B7DF22D424F47A8 /* Fabric */ = { - isa = PBXGroup; - children = ( - 5E52E9B9ED55092F70D29C243B951944 /* FABAttributes.h */, - 69667934F740E4F5406EFED77B0227FB /* Fabric.h */, - 7846B3172BDB0A653227BB90AD3ECE90 /* Frameworks */, - ); - name = Fabric; - path = Fabric; - sourceTree = ""; - }; 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -441,104 +421,15 @@ name = "Targets Support Files"; sourceTree = ""; }; - 25AC3CB1209F7DAB005D85C2BF9848EF /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */, - F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */, - EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */, - 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */, - E594127D79566BE6E2A0749DB7A5F483 /* Support Files */, - ); - name = FLAnimatedImage; - path = FLAnimatedImage; - sourceTree = ""; - }; - 34514E94A88801F157BAAECEEE91D58D /* HappyDNS */ = { - isa = PBXGroup; - children = ( - 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */, - 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */, - 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */, - 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */, - E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */, - 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */, - 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */, - 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */, - F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */, - 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */, - FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */, - 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */, - 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */, - 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */, - E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */, - DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */, - C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */, - 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */, - 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */, - 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */, - F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */, - 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */, - AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */, - 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */, - 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */, - 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */, - 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */, - 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */, - 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */, - C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */, - DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */, - BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */, - AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */, - AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */, - 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */, - 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */, - 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */, - 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */, - 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */, - 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */, - 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */, - 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */, - 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */, - 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */, - 8F53A8492349338BDC648C874A0FC41C /* Support Files */, - ); - name = HappyDNS; - path = HappyDNS; - sourceTree = ""; - }; - 3505BF51248F9AC70038BFE7DA763D10 /* Masonry */ = { + 364A272B9D246B6829811C62EF723565 /* Support Files */ = { isa = PBXGroup; children = ( - DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */, - 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */, - E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */, - 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */, - 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */, - 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */, - 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */, - D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */, - 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */, - E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */, - 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */, - 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */, - 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */, - AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */, - 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */, - 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */, - 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */, - E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */, - B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */, - 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */, - C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */, - 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */, - A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */, - 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */, - 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */, - D5230C5A16E27F8A5DBB6FDEE17196D9 /* Support Files */, + 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */, + 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */, + F5424E759CF83153A748AD64CCF0B1EE /* HappyDNS-prefix.pch */, ); - name = Masonry; - path = Masonry; + name = "Support Files"; + path = "../Target Support Files/HappyDNS"; sourceTree = ""; }; 3CD0DD6F6BE769DD320926D044D37D8B /* iOS */ = { @@ -554,13 +445,51 @@ name = iOS; sourceTree = ""; }; - 3EF29DE01EE58680C018C40B3E797871 /* PLPlayerKit */ = { + 3EF168F914BC1CB6CBB4EB1BE63DF0CE /* Masonry */ = { isa = PBXGroup; children = ( - BF56137A8345A1E155936A74D515E76B /* iphoneos */, + CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */, + E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */, + 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */, + CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */, + 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */, + 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */, + E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */, + C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */, + 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */, + ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */, + 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */, + 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */, + 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */, + D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */, + A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */, + DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */, + A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */, + 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */, + 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */, + F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */, + 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */, + 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */, + 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */, + 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */, + C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */, + 7CC1F96787ABB144725E2ED8CC6D5A1A /* Support Files */, ); - name = PLPlayerKit; - path = PLPlayerKit; + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + 41A019390E22F290607207EF316A9CAD /* FLAnimatedImage */ = { + isa = PBXGroup; + children = ( + E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */, + 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */, + 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */, + 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */, + 62D8176F94FE0A95A4A675467D14E2B1 /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; sourceTree = ""; }; 4288747A0075320E63F4367486FC97F6 /* Pods-PLShortVideoKitDemo */ = { @@ -578,6 +507,14 @@ path = "Target Support Files/Pods-PLShortVideoKitDemo"; sourceTree = ""; }; + 4D9E06AED990043829FB8AC9F08F445C /* Frameworks */ = { + isa = PBXGroup; + children = ( + F5AC90D519CD2525287A2C007C226EBB /* Crashlytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 56AAF8433E98189615B2345C3972DB3C /* Development Pods */ = { isa = PBXGroup; children = ( @@ -586,18 +523,15 @@ name = "Development Pods"; sourceTree = ""; }; - 577722115C48D9752144B425FAC61C65 /* Pods */ = { + 62D8176F94FE0A95A4A675467D14E2B1 /* Support Files */ = { isa = PBXGroup; children = ( - FF147483AE5152810C32F785AF66AC2F /* Crashlytics */, - 09568E540F357ADA2B7DF22D424F47A8 /* Fabric */, - 25AC3CB1209F7DAB005D85C2BF9848EF /* FLAnimatedImage */, - 34514E94A88801F157BAAECEEE91D58D /* HappyDNS */, - 3505BF51248F9AC70038BFE7DA763D10 /* Masonry */, - 3EF29DE01EE58680C018C40B3E797871 /* PLPlayerKit */, - CECDB31B4057BF07F8A811F59F907A16 /* Qiniu */, + 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */, + 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */, + 63C2A276D28472EAAFB8A0C665E148FB /* FLAnimatedImage-prefix.pch */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; 63931BDF741A0CF6226BB1752332D745 /* libMuseProcessor */ = { @@ -608,12 +542,15 @@ name = libMuseProcessor; sourceTree = ""; }; - 7846B3172BDB0A653227BB90AD3ECE90 /* Frameworks */ = { + 7CC1F96787ABB144725E2ED8CC6D5A1A /* Support Files */ = { isa = PBXGroup; children = ( - 6BCEA0B4E2FCBD2E7A8A5052BA4BDA14 /* Fabric.framework */, + 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */, + 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */, + 7CF0040A5A0848F301192E2425B1FE15 /* Masonry-prefix.pch */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/Masonry"; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -622,40 +559,89 @@ 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 56AAF8433E98189615B2345C3972DB3C /* Development Pods */, 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */, - 577722115C48D9752144B425FAC61C65 /* Pods */, + BD1C4CE75170BEB42C2D10B3778C5839 /* Pods */, A4DA24552E522401589F5D1F9873FD13 /* Products */, 0FD5C2DA289259C7C3CF7809A4FC3519 /* Targets Support Files */, ); sourceTree = ""; }; - 82841290F4E53E5F25A2E4E54706BF40 /* Frameworks */ = { + 8181BA8AD87823B1D6B0A1CD8B41EB7A /* Qiniu */ = { isa = PBXGroup; children = ( - A8D9CFF9323309A324822CB70C172FC0 /* PLPlayerKit.framework */, + D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */, + 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */, + 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */, + 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */, + 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */, + EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */, + 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */, + CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */, + 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */, + EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */, + 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */, + FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */, + 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */, + E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */, + 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */, + 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */, + 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */, + 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */, + 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */, + 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */, + 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */, + D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */, + 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */, + 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */, + A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */, + B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */, + 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */, + 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */, + 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */, + 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */, + CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */, + 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */, + FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */, + 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */, + F96B35841728F4B46E5858B487545426 /* QNSystem.h */, + E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */, + F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */, + DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */, + 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */, + 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */, + D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */, + D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */, + A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */, + 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */, + F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */, + 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */, + 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */, + 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */, + 9AAEC43466D23484E851B15F74A20612 /* Support Files */, ); - name = Frameworks; + name = Qiniu; + path = Qiniu; sourceTree = ""; }; - 8F53A8492349338BDC648C874A0FC41C /* Support Files */ = { + 9AAEC43466D23484E851B15F74A20612 /* Support Files */ = { isa = PBXGroup; children = ( - 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */, - F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */, - 9A5BFB1A35BC8E5458248B8BC6391206 /* HappyDNS-prefix.pch */, + D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */, + BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */, + 943E8DB192B27700E2F110BF27F67BF7 /* Qiniu-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/HappyDNS"; + path = "../Target Support Files/Qiniu"; sourceTree = ""; }; - A0E8F2C835E6211CE51B5A36F8199619 /* Support Files */ = { + A2051B22C8EE1DDBA1A6DBFFBF16C47B /* Fabric */ = { isa = PBXGroup; children = ( - 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */, - 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */, - 469FC77AD477F4EDED62676055D5CDE4 /* Qiniu-prefix.pch */, + 33A7D8CFFA796EDD780E52D05F360123 /* FABAttributes.h */, + 2B58165CEDFED39A8BD707B7870198F7 /* Fabric.h */, + F064143FD0A060ACAFCCD86224C201D2 /* Frameworks */, ); - name = "Support Files"; - path = "../Target Support Files/Qiniu"; + name = Fabric; + path = Fabric; sourceTree = ""; }; A4DA24552E522401589F5D1F9873FD13 /* Products */ = { @@ -670,96 +656,102 @@ name = Products; sourceTree = ""; }; - B71EE3AC0DFAA31F12CE2DE64E8C3E31 /* Frameworks */ = { + B05B55FD0ADD1C21BA9041A125C7478C /* HappyDNS */ = { isa = PBXGroup; children = ( - 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */, + 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */, + C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */, + 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */, + 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */, + 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */, + 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */, + 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */, + 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */, + 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */, + 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */, + DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */, + D857932775054CA8606A306D8B486DAD /* QNDomain.h */, + 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */, + F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */, + E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */, + D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */, + C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */, + 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */, + 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */, + 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */, + 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */, + 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */, + C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */, + 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */, + FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */, + C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */, + 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */, + BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */, + BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */, + 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */, + 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */, + F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */, + 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */, + AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */, + 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */, + 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */, + 467CC72569656FDE0D985943483747BD /* QNRefresher.m */, + 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */, + 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */, + F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */, + 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */, + A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */, + 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */, + 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */, + 364A272B9D246B6829811C62EF723565 /* Support Files */, ); - name = Frameworks; + name = HappyDNS; + path = HappyDNS; sourceTree = ""; }; - BF56137A8345A1E155936A74D515E76B /* iphoneos */ = { + B71EE3AC0DFAA31F12CE2DE64E8C3E31 /* Frameworks */ = { isa = PBXGroup; children = ( - 82841290F4E53E5F25A2E4E54706BF40 /* Frameworks */, + 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */, ); - name = iphoneos; + name = Frameworks; sourceTree = ""; }; - C2340B897011D80A1A425A11074477FB /* Frameworks */ = { + BD1C4CE75170BEB42C2D10B3778C5839 /* Pods */ = { isa = PBXGroup; children = ( - 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */, + C140D97114B258E364F7C8A14C4A261E /* Crashlytics */, + A2051B22C8EE1DDBA1A6DBFFBF16C47B /* Fabric */, + 41A019390E22F290607207EF316A9CAD /* FLAnimatedImage */, + B05B55FD0ADD1C21BA9041A125C7478C /* HappyDNS */, + 3EF168F914BC1CB6CBB4EB1BE63DF0CE /* Masonry */, + 8181BA8AD87823B1D6B0A1CD8B41EB7A /* Qiniu */, ); - name = Frameworks; + name = Pods; sourceTree = ""; }; - CECDB31B4057BF07F8A811F59F907A16 /* Qiniu */ = { + C140D97114B258E364F7C8A14C4A261E /* Crashlytics */ = { isa = PBXGroup; children = ( - 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */, - 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */, - 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */, - AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */, - B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */, - 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */, - 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */, - D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */, - FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */, - FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */, - 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */, - 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */, - A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */, - B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */, - 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */, - 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */, - F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */, - E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */, - 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */, - F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */, - 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */, - C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */, - 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */, - 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */, - C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */, - F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */, - F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */, - 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */, - C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */, - E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */, - 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */, - 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */, - 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */, - A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */, - 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */, - 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */, - D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */, - DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */, - 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */, - 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */, - 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */, - CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */, - EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */, - 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */, - A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */, - 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */, - 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */, - 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */, - A0E8F2C835E6211CE51B5A36F8199619 /* Support Files */, + E1740E31A8E1CE76D0B4383F4874DEC4 /* ANSCompatibility.h */, + 236F4B78590EAE9229A551FDBF559772 /* Answers.h */, + 0D75AC56D47DF78EB80A6E2C8579FCAE /* CLSAttributes.h */, + FEC54D8B52CE0E6BDDA832458CAAE6F1 /* CLSLogging.h */, + DD64CDB74B4DBBF36E70CB6DA94F6AFC /* CLSReport.h */, + 3328EAAB2D4415F0E05872C917C01011 /* CLSStackFrame.h */, + AA339544A7A4B8C938206084587B3571 /* Crashlytics.h */, + 4D9E06AED990043829FB8AC9F08F445C /* Frameworks */, ); - name = Qiniu; - path = Qiniu; + name = Crashlytics; + path = Crashlytics; sourceTree = ""; }; - D5230C5A16E27F8A5DBB6FDEE17196D9 /* Support Files */ = { + C2340B897011D80A1A425A11074477FB /* Frameworks */ = { isa = PBXGroup; children = ( - FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */, - 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */, - 6B68CE250D8A73145B26CDCC7D75DC18 /* Masonry-prefix.pch */, + 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */, ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; + name = Frameworks; sourceTree = ""; }; E545F49C91B27E6956164C6F2F9DB88E /* PLShortVideoKit */ = { @@ -773,15 +765,12 @@ path = ../..; sourceTree = ""; }; - E594127D79566BE6E2A0749DB7A5F483 /* Support Files */ = { + F064143FD0A060ACAFCCD86224C201D2 /* Frameworks */ = { isa = PBXGroup; children = ( - D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */, - 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */, - D90E77729108EB4B3B82164A19B911BC /* FLAnimatedImage-prefix.pch */, + 82F6A9B14C326E2504B27122A838E69E /* Fabric.framework */, ); - name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; + name = Frameworks; sourceTree = ""; }; F0EBA6A9C4CC2529564133C8AB83A648 /* ex-libMuseProcessor */ = { @@ -792,22 +781,6 @@ name = "ex-libMuseProcessor"; sourceTree = ""; }; - FF147483AE5152810C32F785AF66AC2F /* Crashlytics */ = { - isa = PBXGroup; - children = ( - 901F38720095621C142CE338704B59A9 /* ANSCompatibility.h */, - 66D29754CB250301ABADAFD50ACA2D7A /* Answers.h */, - 21ABEED3DBDEF750695386BAC0B9FE60 /* CLSAttributes.h */, - E12B0EB5CD70411F38328A7B3A7A9C7F /* CLSLogging.h */, - 640EC3C21264359303413EFEAC49C5FC /* CLSReport.h */, - D41B983780B7DD01BFCEDC68E6D51909 /* CLSStackFrame.h */, - F2B4BDD8697134042592216235BF7F67 /* Crashlytics.h */, - 0844A41A23F2FDB15E4E9C1743A09C85 /* Frameworks */, - ); - name = Crashlytics; - path = Crashlytics; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1169,7 +1142,7 @@ /* Begin XCBuildConfiguration section */ 1D3F48869EA6A0024D621535B6BC77C9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */; + baseConfigurationReference = 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1192,7 +1165,7 @@ }; 4A913B1371A9BF83547DF4463080CE2C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */; + baseConfigurationReference = 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1298,7 +1271,7 @@ }; A254A1D5CAE40ABC54B15E5215496D62 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */; + baseConfigurationReference = 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1388,7 +1361,7 @@ }; B7D70E4BFD7DDD9A379698DADEDE0B1B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1434,7 +1407,7 @@ }; C8E3C2D6708617255E1C212580202A13 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1457,7 +1430,7 @@ }; CE28491D7891218E4673F297662B0A13 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */; + baseConfigurationReference = D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1480,7 +1453,7 @@ }; D28619C315EC806A20B050209A3EADA4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */; + baseConfigurationReference = 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1504,7 +1477,7 @@ }; E7717973A17803DB84A533B5D9919993 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */; + baseConfigurationReference = D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; diff --git a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown index 8f80ab8a..1ccd4deb 100644 --- a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown @@ -81,212 +81,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## PLPlayerKit - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - ## PLShortVideoKit Apache License diff --git a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist index 3a47d11d..bea34f2b 100644 --- a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist @@ -122,218 +122,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - License - Apache License, Version 2.0 - Title - PLPlayerKit - Type - PSGroupSpecifier - FooterText Apache License diff --git a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh index f8bb6726..08e3eaac 100755 --- a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh @@ -141,13 +141,6 @@ strip_invalid_archs() { STRIP_BINARY_RETVAL=1 } - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework" -fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig index ba104370..29ad35df 100644 --- a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig @@ -1,10 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/PLPlayerKit/Pod/Library" "${PODS_ROOT}/../../Pod/Library" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/../../Pod/Library" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLPlayerKit" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HappyDNS" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Qiniu" "${PODS_ROOT}/../../Pod/Library" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLPlayerKit" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"bz2" -l"c++" -l"iconv" -l"resolv" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AudioToolbox" -framework "CoreAudio" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "MobileCoreServices" -framework "OpenGLES" -framework "PLPlayerKit" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"c++" -l"resolv" -l"z" -framework "CoreGraphics" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig index ba104370..29ad35df 100644 --- a/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig @@ -1,10 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/PLPlayerKit/Pod/Library" "${PODS_ROOT}/../../Pod/Library" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/../../Pod/Library" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLPlayerKit" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HappyDNS" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Qiniu" "${PODS_ROOT}/../../Pod/Library" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLPlayerKit" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"bz2" -l"c++" -l"iconv" -l"resolv" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AudioToolbox" -framework "CoreAudio" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "MobileCoreServices" -framework "OpenGLES" -framework "PLPlayerKit" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"c++" -l"resolv" -l"z" -framework "CoreGraphics" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example_TuTu/PLShortVideoKitDemo.xcodeproj/project.pbxproj b/Example_TuTu/PLShortVideoKitDemo.xcodeproj/project.pbxproj index 37832a33..d9d602f3 100644 --- a/Example_TuTu/PLShortVideoKitDemo.xcodeproj/project.pbxproj +++ b/Example_TuTu/PLShortVideoKitDemo.xcodeproj/project.pbxproj @@ -1609,7 +1609,6 @@ 0A9435791E6CA2E2008845A3 /* Frameworks */, 0A94357A1E6CA2E2008845A3 /* Resources */, B051BAB51EADFEF900385FF0 /* ShellScript */, - E97B874681F4942673BDAA0F /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -1939,24 +1938,6 @@ shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Fabric/run\" 356922ded861e8764b53656f328bf3e7610fb59b 4e8f96a6c525321b1833e0fdb19f396702d2cb0b6e581fdf80efde45b2a3bfc1\n\n\nshortVersion=$(/usr/libexec/PlistBuddy -c \"Print :CFBundleShortVersionString\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\nbuildNumber=$(/usr/libexec/PlistBuddy -c \"Print :CFBundleVersion\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\")\n\ngitVersion=$(git log -1 --pretty=format:\"git-%cd-%h\" --date=short 2> /dev/null)\nbuildNumber=\"$shortVersion.$gitVersion\"\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $buildNumber\" \"${PROJECT_DIR}/${INFOPLIST_FILE}\"\n\n"; }; - E97B874681F4942673BDAA0F /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh", - "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PLPlayerKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/Example_TuTu/PLShortVideoKitDemo/DubViewController.m b/Example_TuTu/PLShortVideoKitDemo/DubViewController.m index e4504359..a9f52a48 100644 --- a/Example_TuTu/PLShortVideoKitDemo/DubViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/DubViewController.m @@ -10,7 +10,6 @@ #import "PLSProgressBar.h" #import "PLShortVideoKit/PLShortVideoKit.h" -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -113,7 +112,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example_TuTu/PLShortVideoKitDemo/EditViewController.m b/Example_TuTu/PLShortVideoKitDemo/EditViewController.m index 17640468..8d54bb3b 100644 --- a/Example_TuTu/PLShortVideoKitDemo/EditViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/EditViewController.m @@ -35,7 +35,6 @@ #import "FilterPanelView.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_RGBCOLOR_ALPHA(r,g,b,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -294,7 +293,7 @@ - (void)viewDidLoad { } - (CGFloat)bottomFixSpace { - return iPhoneX ? 30 : 0; + return iPhoneX_SERIES ? 30 : 0; } - (void)viewWillAppear:(BOOL)animated { @@ -428,7 +427,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); @@ -710,7 +709,7 @@ - (void)setupEditToolboxView { // 配音 button = [self toolBoxButtonWithSelector:@selector(dubAudioButtonEvent:) startX:button.frame.origin.x + button.frame.size.width + 20 - title:@"配音图"]; + title:@"配音"]; // 视频倍速 button = [self toolBoxButtonWithSelector:@selector(videoSpeedButtonEvent:) diff --git a/Example_TuTu/PLShortVideoKitDemo/GifFormatViewController.m b/Example_TuTu/PLShortVideoKitDemo/GifFormatViewController.m index a4b943e5..7d0040ba 100644 --- a/Example_TuTu/PLShortVideoKitDemo/GifFormatViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/GifFormatViewController.m @@ -13,7 +13,6 @@ #import "PlayViewController.h" -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -62,7 +61,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example_TuTu/PLShortVideoKitDemo/Info.plist b/Example_TuTu/PLShortVideoKitDemo/Info.plist index 94143a41..00e5d40a 100644 --- a/Example_TuTu/PLShortVideoKitDemo/Info.plist +++ b/Example_TuTu/PLShortVideoKitDemo/Info.plist @@ -15,9 +15,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.16.0 + 1.16.1 CFBundleVersion - 1.16.0.git-2018-12-14-96a8f82 + 1.16.1.git-2019-01-28-1f597d9 Fabric APIKey diff --git a/Example_TuTu/PLShortVideoKitDemo/MovieTransCodeViewController.m b/Example_TuTu/PLShortVideoKitDemo/MovieTransCodeViewController.m index cbffdbaf..b648a2cb 100644 --- a/Example_TuTu/PLShortVideoKitDemo/MovieTransCodeViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/MovieTransCodeViewController.m @@ -14,7 +14,6 @@ #import "EditViewController.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -160,7 +159,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example_TuTu/PLShortVideoKitDemo/PhotoAlbumViewController.m b/Example_TuTu/PLShortVideoKitDemo/PhotoAlbumViewController.m index fd855a9f..34c5c08b 100644 --- a/Example_TuTu/PLShortVideoKitDemo/PhotoAlbumViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/PhotoAlbumViewController.m @@ -13,7 +13,6 @@ #import "EditViewController.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -454,7 +453,7 @@ - (void)setupBaseToolboxView { // 标题 UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); diff --git a/Example_TuTu/PLShortVideoKitDemo/PlayViewController.m b/Example_TuTu/PLShortVideoKitDemo/PlayViewController.m index c4929cc0..aa64fa0f 100644 --- a/Example_TuTu/PLShortVideoKitDemo/PlayViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/PlayViewController.m @@ -9,8 +9,8 @@ #import "PlayViewController.h" #import #import "PLShortVideoKit/PLShortVideoKit.h" -#import #import "FLAnimatedImage.h" +#import "PLSPlayerView.h" #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) #define PLS_SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) @@ -24,9 +24,11 @@ @interface PlayViewController () < PLShortVideoUploaderDelegate, -PLPlayerDelegate, UIGestureRecognizerDelegate > +{ + id _timeObserver; +} // 工具视图 @property (strong, nonatomic) UIView *baseToolboxView; @@ -38,7 +40,9 @@ @interface PlayViewController () @property (strong, nonatomic) UILabel * duration; // 视频播放 -@property (strong, nonatomic) PLPlayer *player; +@property (strong, nonatomic) AVPlayer *player; +@property (strong, nonatomic) PLSPlayerView *playerView; +@property (strong, nonatomic) UIProgressView *processView; // gif 图预览 @property (strong, nonatomic) FLAnimatedImageView *gifView; @@ -98,17 +102,50 @@ - (void)viewDidAppear:(BOOL)animated { FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:self.url]]; self.gifView.animatedImage = image; } + + [self addObserver]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if (self.actionType == PLSActionTypePlayer) { - [self.player stop]; + [self.player pause]; } if (self.actionType == PLSActionTypeGif) { self.gifView.animatedImage = nil; } + + [self removeTimeObserver]; +} + +-(void)addObserver { + if (_timeObserver) return; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerToEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem]; + + __weak typeof(self) weakSelf = self; + _timeObserver = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) { + float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(weakSelf.player.currentItem.duration); + weakSelf.playSlider.value = process; + weakSelf.currentTime.text = [NSString stringWithFormat:@"%.2fs", CMTimeGetSeconds(time)]; + weakSelf.duration.text = [NSString stringWithFormat:@"%.2f", CMTimeGetSeconds(weakSelf.player.currentItem.duration)]; + }]; +} + +- (void)removeTimeObserver { + if (_timeObserver) { + [self.player removeTimeObserver:_timeObserver]; + _timeObserver = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem]; + } +} + +- (void)playerToEnd:(NSNotification *)info { + if (info.object == self.player.currentItem) { + [self.player seekToTime:kCMTimeZero]; + [self.player play]; + } } #pragma mark -- 视图配置 @@ -143,14 +180,21 @@ - (void)setupToolboxUI { } - (void)setupPlayerUI { + + UIFont *font = [UIFont systemFontOfSize:18]; + if (@available(iOS 9.0, *)) { + font = [UIFont monospacedDigitSystemFontOfSize:18 weight:(UIFontWeightRegular)]; + } self.currentTime = [[UILabel alloc] initWithFrame:CGRectMake(20, PLS_SCREEN_HEIGHT - 130, 130, 30)]; self.currentTime.text = @"0.00s"; self.currentTime.textColor = [UIColor blueColor]; + self.currentTime.font = font; [self.view addSubview:self.currentTime]; self.duration = [[UILabel alloc] initWithFrame:CGRectMake(PLS_SCREEN_WIDTH - 80, PLS_SCREEN_HEIGHT - 130, 130, 30)]; - self.duration.text = @"0.00s"; + self.duration.text = [NSString stringWithFormat:@"%.2f", CMTimeGetSeconds(self.player.currentItem.duration)]; self.duration.textColor = [UIColor blueColor]; + self.duration.font = font; [self.view addSubview:self.duration]; self.playSlider = [[UISlider alloc] initWithFrame:CGRectMake(20, PLS_SCREEN_HEIGHT - 100, PLS_SCREEN_WIDTH - 40, 30)]; @@ -166,49 +210,10 @@ - (void)initPlayer { return; } - // 初始化 PLPlayerOption 对象 - PLPlayerOption *option = [PLPlayerOption defaultOption]; - - // 更改需要修改的 option 属性键所对应的值 - [option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets]; - [option setOptionValue:@2000 forKey:PLPlayerOptionKeyMaxL1BufferDuration]; - [option setOptionValue:@1000 forKey:PLPlayerOptionKeyMaxL2BufferDuration]; - [option setOptionValue:@(NO) forKey:PLPlayerOptionKeyVideoToolbox]; - [option setOptionValue:@(kPLLogInfo) forKey:PLPlayerOptionKeyLogLevel]; - - // 初始化 PLPlayer - self.player = [PLPlayer playerWithURL:self.url option:option]; - self.player.loopPlay = YES; - - // 设定代理 (optional) - self.player.delegate = self; - - //获取视频输出视图并添加为到当前 UIView 对象的 Subview - self.player.playerView.frame = CGRectMake(0, PLS_BaseToolboxView_HEIGHT + PLS_SCREEN_WIDTH / 8, PLS_SCREEN_WIDTH, PLS_SCREEN_HEIGHT - PLS_BaseToolboxView_HEIGHT - PLS_SCREEN_WIDTH / 8 - PLS_EditToolboxView_HEIGHT); - self.player.playerView.contentMode = UIViewContentModeScaleAspectFit; - [self.view addSubview:self.player.playerView]; -} - -#pragma mark -- 添加定时器 -- (void)addDurationTimer { - if (self.timer) { - [self.timer invalidate]; - self.timer = nil; - } - - self.timer = [NSTimer scheduledTimerWithTimeInterval:0.5 - target:self - selector:@selector(onDurationTimer) - userInfo:nil - repeats:YES]; -} - -#pragma mark -- 移除定时器 -- (void)removeDurationTimer { - if (self.timer) { - [self.timer invalidate]; - self.timer = nil; - } + self.player = [[AVPlayer alloc] initWithURL:self.url]; + self.playerView = [[PLSPlayerView alloc] initWithFrame:CGRectMake(0, PLS_BaseToolboxView_HEIGHT + PLS_SCREEN_WIDTH / 8, PLS_SCREEN_WIDTH, PLS_SCREEN_HEIGHT - PLS_BaseToolboxView_HEIGHT - PLS_SCREEN_WIDTH / 8 - PLS_EditToolboxView_HEIGHT)]; + self.playerView.player = self.player; + [self.view addSubview:self.playerView]; } #pragma mark -- 视频上传准备 @@ -224,18 +229,6 @@ - (void)setupFileUpload { [self prepareUpload]; } -- (void)onDurationTimer { - double elapsed = CMTimeGetSeconds(self.player.currentTime); - double duration = CMTimeGetSeconds(self.player.totalDuration); - self.playSlider.value = elapsed / duration; - if (isnan(elapsed)) { - self.currentTime.text = self.duration.text; - } else { - self.currentTime.text = [NSString stringWithFormat:@"%.2fs", elapsed]; - self.duration.text = [NSString stringWithFormat:@"%.2fs", duration]; - } -} - - (void)prepareUpload { self.progressView.hidden = YES; self.progressView.progress = 0; @@ -262,10 +255,10 @@ - (void)backButtonClick { #pragma mark -- 播放 - (void)handleSingleFingerToPlayVideoEvent:(id)sender { - if ([self.player isPlaying]) { + if (1.0 == [self.player rate]) { [self.player pause]; } else { - [self.player resume]; + [self.player play]; } } @@ -286,9 +279,13 @@ - (void)uploadButtonClick:(id)sender { #pragma mark -- seekTo - (void)playSeekTo:(id)sender { UISlider * slider = (UISlider *)sender; - CMTime time = CMTimeMake(slider.value * CMTimeGetSeconds(self.player.totalDuration), 1); - self.currentTime.text = [NSString stringWithFormat:@"%.2fs",slider.value]; - [self.player seekTo:time]; + slider.enabled = NO; + CMTime time = CMTimeMake(slider.value * CMTimeGetSeconds(self.player.currentItem.duration), 1); + self.currentTime.text = [NSString stringWithFormat:@"%.2fs", CMTimeGetSeconds(time)]; + __weak typeof(self) weakSelf = self; + [self.player seekToTime:time completionHandler:^(BOOL finished) { + weakSelf.playSlider.enabled = YES; + }]; } #pragma mark -- 提示框 @@ -324,44 +321,6 @@ - (void)shortVideoUploader:(PLShortVideoUploader *)uploader uploadKey:(NSString NSLog(@"uploadPercent: %.2f",uploadPercent); } -#pragma mark -- PLPlayerDelegate 播放器状态获取 -// 实现 来控制流状态的变更 -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state { - // 这里会返回流的各种状态,你可以根据状态做 UI 定制及各类其他业务操作 - // 除了 Error 状态,其他状态都会回调这个方法 - // 开始播放,当连接成功后,将收到第一个 PLPlayerStatusCaching 状态 - // 第一帧渲染后,将收到第一个 PLPlayerStatusPlaying 状态 - // 播放过程中出现卡顿时,将收到 PLPlayerStatusCaching 状态 - // 卡顿结束后,将收到 PLPlayerStatusPlaying 状态 - if (state == PLPlayerStatusReady) { - [self addDurationTimer]; - } - if (state == PLPlayerStatusPlaying) { - NSString *stateInfo = [NSString stringWithFormat:@"connect:%.2f/first:%.2f", _player.connectTime, _player.firstVideoTime]; - NSLog(@"stateInfo: %@", stateInfo); - } - if (state == PLPlayerStatusStopped/* || state == PLPlayerStatusPaused*/) { - self.currentTime.text = self.duration.text; - self.playSlider.value = 1; - [self removeDurationTimer]; - } - - NSLog(@"status: %ld", (long)state); -} - -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error { - // 当发生错误,停止播放时,会回调这个方法 - [self showAlertWithMessage:[NSString stringWithFormat:@"播放出错,error = %@", error]]; -} - -- (void)player:(nonnull PLPlayer *)player codecError:(nonnull NSError *)error { - // 当解码器发生错误时,会回调这个方法 - // 当 videotoolbox 硬解初始化或解码出错时 - // error.code 值为 PLPlayerErrorHWCodecInitFailed/PLPlayerErrorHWDecodeFailed - // 播发器也将自动切换成软解,继续播放 -} - - #pragma mark -- 隐藏状态栏 - (BOOL)prefersStatusBarHidden { return YES; @@ -373,9 +332,6 @@ - (void)didReceiveMemoryWarning { } - (void)dealloc { - [self removeDurationTimer]; - - self.player.delegate = nil; self.player = nil; self.gifView = nil; diff --git a/Example_TuTu/PLShortVideoKitDemo/PrefixHeader.pch b/Example_TuTu/PLShortVideoKitDemo/PrefixHeader.pch index 611cfca1..d461a82d 100644 --- a/Example_TuTu/PLShortVideoKitDemo/PrefixHeader.pch +++ b/Example_TuTu/PLShortVideoKitDemo/PrefixHeader.pch @@ -12,6 +12,11 @@ // Include any system framework and library headers here that should be included in all compilation units. // You will also need to set the Prefix Header build setting of one or more of your targets to reference this file. +#ifdef __OBJC__ + +#import "BaseViewController.h" + + #ifndef dispatch_main_async_safe #define dispatch_main_async_safe(block)\ if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {\ @@ -34,4 +39,6 @@ #define ARRAY_SIZE(c_array) (sizeof((c_array))/sizeof((c_array)[0])) #endif +#endif/* __OBJC__ */ + #endif /* PrefixHeader_pch */ diff --git a/Example_TuTu/PLShortVideoKitDemo/RecordViewController.m b/Example_TuTu/PLShortVideoKitDemo/RecordViewController.m index 67f4db06..442d9755 100644 --- a/Example_TuTu/PLShortVideoKitDemo/RecordViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/RecordViewController.m @@ -234,6 +234,12 @@ - (void)setupShortVideoRecorder { // SDK 的版本信息 NSLog(@"PLShortVideoRecorder versionInfo: %@", [PLShortVideoRecorder versionInfo]); + // SDK 授权信息查询 + [PLShortVideoRecorder checkAuthentication:^(PLSAuthenticationResult result) { + NSString *authResult[] = {@"NotDetermined", @"Denied", @"Authorized"}; + NSLog(@"PLShortVideoRecorder auth status: %@", authResult[result]); + }]; + self.videoConfiguration = [PLSVideoConfiguration defaultConfiguration]; self.videoConfiguration.position = AVCaptureDevicePositionFront; self.videoConfiguration.videoFrameRate = 25; @@ -1350,7 +1356,20 @@ - (void)setupGestureRecognizer { } -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { - return (_filterView.hidden && _stickerView.hidden && _facePanelView.hidden && _cartoonView.hidden); + BOOL result = YES; + if (_filterView) { + result = result && _filterView.hidden; + } + if (_stickerView) { + result = result && _stickerView.hidden; + } + if (_facePanelView) { + result = result && _facePanelView.hidden; + } + if (_cartoonView) { + result = result && _cartoonView.hidden; + } + return result; } // 添加手势的响应事件 diff --git a/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h b/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h index 768a1423..18d125fc 100644 --- a/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h +++ b/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.h @@ -7,6 +7,36 @@ // #import + +#define iPhoneX_SERIES (enumDeviceTypeIPhoneXR == [BaseViewController deviceType] || enumDeviceTypeIPhoneX == [BaseViewController deviceType] || enumDeviceTypeIPhoneXS == [BaseViewController deviceType] || enumDeviceTypeIPhoneXSMax == [BaseViewController deviceType]) + + +typedef enum : NSUInteger { + //iPhone + enumDeviceTypeIPhone4, + enumDeviceTypeIPhone4s, + enumDeviceTypeIPhone5, + enumDeviceTypeIPhone5c, + enumDeviceTypeIPhone5s, + enumDeviceTypeIPhone6, + enumDeviceTypeIPhone6Plus, + enumDeviceTypeIPhone6s, + enumDeviceTypeIPhone6sPlus, + enumDeviceTypeIPhoneSE, + enumDeviceTypeIPhone7, + enumDeviceTypeIPhone7Plus, + enumDeviceTypeIPhone8, + enumDeviceTypeIPhone8Plus, + enumDeviceTypeIPhoneX, + enumDeviceTypeIPhoneXS, + enumDeviceTypeIPhoneXR, + enumDeviceTypeIPhoneXSMax, + + //iPad + //...... + +} EnumDeviceType; + @import Photos; @interface BaseViewController : UIViewController @@ -32,4 +62,6 @@ + (BOOL)checkForPortrait:(CGAffineTransform)transform; ++ (EnumDeviceType)deviceType; + @end diff --git a/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m b/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m index be72483a..d5b1e46d 100644 --- a/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/SegmentEffects/BaseViewController.m @@ -8,8 +8,8 @@ #import "BaseViewController.h" #import +#import -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_BaseToolboxView_HEIGHT 64 #define PLS_SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @@ -52,7 +52,7 @@ - (void)setupBaseToolboxView { // 标题 self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 100, 64)]; - if (iPhoneX) { + if (iPhoneX_SERIES) { self.titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 48); } else { self.titleLabel.center = CGPointMake(PLS_SCREEN_WIDTH / 2, 32); @@ -81,7 +81,7 @@ - (void)setupBaseToolboxView { [self.baseToolboxView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.equalTo(self.view); - if (iPhoneX) { + if (iPhoneX_SERIES) { make.height.equalTo(@(84)); } else { make.height.equalTo(@(PLS_BaseToolboxView_HEIGHT)); @@ -204,4 +204,62 @@ + (BOOL)checkForPortrait:(CGAffineTransform)transform { return assetPortrait; } ++ (EnumDeviceType)deviceType { + +// https://stackoverflow.com/questions/26028918/how-to-determine-the-current-iphone-device-model/40091083 + + struct utsname info = {0}; + uname(&info); + NSString *modelName = [NSString stringWithUTF8String:info.machine]; + if ([modelName isEqualToString:@"iPhone3,1"] || + [modelName isEqualToString:@"iPhone3,2"] || + [modelName isEqualToString:@"iPhone3,3"]) { + return enumDeviceTypeIPhone4; + } else if ([modelName isEqualToString:@"iPhone4,1"]) { + return enumDeviceTypeIPhone4s; + } else if ([modelName isEqualToString:@"iPhone5,1"] || + [modelName isEqualToString:@"iPhone5,2"]) { + return enumDeviceTypeIPhone5; + } else if ([modelName isEqualToString:@"iPhone5,3"] || + [modelName isEqualToString:@"iPhone5,4"]) { + return enumDeviceTypeIPhone5c; + } else if ([modelName isEqualToString:@"iPhone6,1"] || + [modelName isEqualToString:@"iPhone6,2"]) { + return enumDeviceTypeIPhone5s; + } else if ([modelName isEqualToString:@"iPhone7,2"]) { + return enumDeviceTypeIPhone6; + } else if ([modelName isEqualToString:@"iPhone7,1"]) { + return enumDeviceTypeIPhone6Plus; + } else if ([modelName isEqualToString:@"iPhone8,1"]) { + return enumDeviceTypeIPhone6s; + } else if ([modelName isEqualToString:@"iPhone8,2"]) { + return enumDeviceTypeIPhone6sPlus; + } else if ([modelName isEqualToString:@"iPhone9,1"] || + [modelName isEqualToString:@"iPhone9,3"]) { + return enumDeviceTypeIPhone7; + } else if ([modelName isEqualToString:@"iPhone9,2"] || + [modelName isEqualToString:@"iPhone9,4"]) { + return enumDeviceTypeIPhone7Plus; + } else if ([modelName isEqualToString:@"iPhone8,4"]) { + return enumDeviceTypeIPhoneSE; + } else if ([modelName isEqualToString:@"iPhone10,1"] || + [modelName isEqualToString:@"iPhone10,4"]) { + return enumDeviceTypeIPhone8; + } else if ([modelName isEqualToString:@"iPhone10,2"] || + [modelName isEqualToString:@"iPhone10,5"]) { + return enumDeviceTypeIPhone8Plus; + } else if ([modelName isEqualToString:@"iPhone10,3"] || + [modelName isEqualToString:@"iPhone10,6"]) { + return enumDeviceTypeIPhoneX; + } else if ([modelName isEqualToString:@"iPhone11,2"]) { + return enumDeviceTypeIPhoneXS; + } else if ([modelName isEqualToString:@"iPhone11,4"] || + [modelName isEqualToString:@"iPhone11,6"]) { + return enumDeviceTypeIPhoneXSMax; + } else if ([modelName isEqualToString:@"iPhone11,8"]) { + return enumDeviceTypeIPhoneXR; + } + + return enumDeviceTypeIPhone8; +} @end diff --git a/Example_TuTu/PLShortVideoKitDemo/VideoMixViewController.m b/Example_TuTu/PLShortVideoKitDemo/VideoMixViewController.m index d83f03b1..d6cb3552 100644 --- a/Example_TuTu/PLShortVideoKitDemo/VideoMixViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/VideoMixViewController.m @@ -228,7 +228,7 @@ -(void)addObserver { __weak typeof(self) weakSelf = self; _timeObserver = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) { - float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(self.player.currentItem.duration); + float process = CMTimeGetSeconds(time) / CMTimeGetSeconds(weakSelf.player.currentItem.duration); weakSelf.processView.progress = process; }]; } diff --git a/Example_TuTu/PLShortVideoKitDemo/ViewRecordViewController.m b/Example_TuTu/PLShortVideoKitDemo/ViewRecordViewController.m index c6eee500..ac150123 100644 --- a/Example_TuTu/PLShortVideoKitDemo/ViewRecordViewController.m +++ b/Example_TuTu/PLShortVideoKitDemo/ViewRecordViewController.m @@ -15,7 +15,6 @@ #import "PLShortVideoKit/PLShortVideoKit.h" #define AlertViewShow(msg) [[[UIAlertView alloc] initWithTitle:@"warning" message:[NSString stringWithFormat:@"%@", msg] delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil] show] -#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO) #define PLS_RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] #define PLS_RGBCOLOR_ALPHA(r,g,b,a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)] #define PLS_BaseToolboxView_HEIGHT 64 diff --git a/Example_TuTu/Podfile b/Example_TuTu/Podfile index a2c99dee..0514951f 100644 --- a/Example_TuTu/Podfile +++ b/Example_TuTu/Podfile @@ -8,5 +8,4 @@ target 'PLShortVideoKitDemo' do pod 'Crashlytics', '3.8.4' pod 'Masonry', '1.0.2' pod 'FLAnimatedImage', '1.0.12' - pod 'PLPlayerKit', '3.3.1' end diff --git a/Example_TuTu/Podfile.lock b/Example_TuTu/Podfile.lock index c6090d9f..e6e0ed5b 100644 --- a/Example_TuTu/Podfile.lock +++ b/Example_TuTu/Podfile.lock @@ -5,16 +5,13 @@ PODS: - FLAnimatedImage (1.0.12) - HappyDNS (0.3.14) - Masonry (1.0.2) - - PLPlayerKit (3.3.1): - - PLPlayerKit/iphoneos (= 3.3.1) - - PLPlayerKit/iphoneos (3.3.1) - - PLShortVideoKit (1.16.0): - - PLShortVideoKit/ex-libMuseProcessor (= 1.16.0) - - PLShortVideoKit/libMuseProcessor (= 1.16.0) + - PLShortVideoKit (1.16.1): + - PLShortVideoKit/ex-libMuseProcessor (= 1.16.1) + - PLShortVideoKit/libMuseProcessor (= 1.16.1) - Qiniu (= 7.2.5) - - PLShortVideoKit/ex-libMuseProcessor (1.16.0): + - PLShortVideoKit/ex-libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - - PLShortVideoKit/libMuseProcessor (1.16.0): + - PLShortVideoKit/libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - Qiniu (7.2.5): - HappyDNS (~> 0.3) @@ -24,7 +21,6 @@ DEPENDENCIES: - Fabric (= 1.6.11) - FLAnimatedImage (= 1.0.12) - Masonry (= 1.0.2) - - PLPlayerKit (= 3.3.1) - PLShortVideoKit (from `../`) - Qiniu (= 7.2.5) @@ -35,7 +31,6 @@ SPEC REPOS: - FLAnimatedImage - HappyDNS - Masonry - - PLPlayerKit - Qiniu EXTERNAL SOURCES: @@ -48,10 +43,9 @@ SPEC CHECKSUMS: FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 HappyDNS: dc6a164ee81979093123c241c6353bcf0218add6 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e - PLPlayerKit: 63a9c6a7661f497591c84121e854e8e6ac003256 - PLShortVideoKit: f21d9346e695041a9f1f22b3bf9085d94639cfa6 + PLShortVideoKit: 1261bb8af6184d15f9d1eebad748a5bdcc52cb62 Qiniu: 909b408ee489ea54827e9717be90b94bc9dfbc48 -PODFILE CHECKSUM: 5adf913798fefd1bbf80480db19957a48db763e9 +PODFILE CHECKSUM: 464a1d9cdafee0a2337603af681aa59f2814b116 COCOAPODS: 1.5.3 diff --git a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h b/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h deleted file mode 120000 index 0d366a87..00000000 --- a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h \ No newline at end of file diff --git a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h b/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h deleted file mode 120000 index 6326868b..00000000 --- a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerError.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h \ No newline at end of file diff --git a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h b/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h deleted file mode 120000 index fef6e6cf..00000000 --- a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerKit.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h \ No newline at end of file diff --git a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h b/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h deleted file mode 120000 index b78ef3b1..00000000 --- a/Example_TuTu/Pods/Headers/Public/PLPlayerKit/PLPlayerKit/PLPlayerOption.h +++ /dev/null @@ -1 +0,0 @@ -../../../../PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h \ No newline at end of file diff --git a/Example_TuTu/Pods/Local Podspecs/PLShortVideoKit.podspec.json b/Example_TuTu/Pods/Local Podspecs/PLShortVideoKit.podspec.json index da99e8e3..dd7a97d4 100644 --- a/Example_TuTu/Pods/Local Podspecs/PLShortVideoKit.podspec.json +++ b/Example_TuTu/Pods/Local Podspecs/PLShortVideoKit.podspec.json @@ -1,6 +1,6 @@ { "name": "PLShortVideoKit", - "version": "1.16.0", + "version": "1.16.1", "summary": "PILI iOS short video record SDK", "homepage": "https://github.com/pili-engineering/PLShortVideoKit", "license": "Apache License 2.0", @@ -8,7 +8,7 @@ "pili": "pili@qiniu.com" }, "source": { - "http": "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.0.zip" + "http": "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.1.zip" }, "platforms": { "ios": "8.0" diff --git a/Example_TuTu/Pods/Manifest.lock b/Example_TuTu/Pods/Manifest.lock index c6090d9f..e6e0ed5b 100644 --- a/Example_TuTu/Pods/Manifest.lock +++ b/Example_TuTu/Pods/Manifest.lock @@ -5,16 +5,13 @@ PODS: - FLAnimatedImage (1.0.12) - HappyDNS (0.3.14) - Masonry (1.0.2) - - PLPlayerKit (3.3.1): - - PLPlayerKit/iphoneos (= 3.3.1) - - PLPlayerKit/iphoneos (3.3.1) - - PLShortVideoKit (1.16.0): - - PLShortVideoKit/ex-libMuseProcessor (= 1.16.0) - - PLShortVideoKit/libMuseProcessor (= 1.16.0) + - PLShortVideoKit (1.16.1): + - PLShortVideoKit/ex-libMuseProcessor (= 1.16.1) + - PLShortVideoKit/libMuseProcessor (= 1.16.1) - Qiniu (= 7.2.5) - - PLShortVideoKit/ex-libMuseProcessor (1.16.0): + - PLShortVideoKit/ex-libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - - PLShortVideoKit/libMuseProcessor (1.16.0): + - PLShortVideoKit/libMuseProcessor (1.16.1): - Qiniu (= 7.2.5) - Qiniu (7.2.5): - HappyDNS (~> 0.3) @@ -24,7 +21,6 @@ DEPENDENCIES: - Fabric (= 1.6.11) - FLAnimatedImage (= 1.0.12) - Masonry (= 1.0.2) - - PLPlayerKit (= 3.3.1) - PLShortVideoKit (from `../`) - Qiniu (= 7.2.5) @@ -35,7 +31,6 @@ SPEC REPOS: - FLAnimatedImage - HappyDNS - Masonry - - PLPlayerKit - Qiniu EXTERNAL SOURCES: @@ -48,10 +43,9 @@ SPEC CHECKSUMS: FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 HappyDNS: dc6a164ee81979093123c241c6353bcf0218add6 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e - PLPlayerKit: 63a9c6a7661f497591c84121e854e8e6ac003256 - PLShortVideoKit: f21d9346e695041a9f1f22b3bf9085d94639cfa6 + PLShortVideoKit: 1261bb8af6184d15f9d1eebad748a5bdcc52cb62 Qiniu: 909b408ee489ea54827e9717be90b94bc9dfbc48 -PODFILE CHECKSUM: 5adf913798fefd1bbf80480db19957a48db763e9 +PODFILE CHECKSUM: 464a1d9cdafee0a2337603af681aa59f2814b116 COCOAPODS: 1.5.3 diff --git a/Example_TuTu/Pods/PLPlayerKit/LICENSE b/Example_TuTu/Pods/PLPlayerKit/LICENSE deleted file mode 100644 index b5591720..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h deleted file mode 100644 index cb4dca13..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayer.h +++ /dev/null @@ -1,806 +0,0 @@ -// -// PLPlayer.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#import -#import -#import "PLPlayerOption.h" - -@class UIView; -@class UIImageView; - -/** - @brief 音频采样格式 - - @since 2.4.3 - */ -typedef NS_ENUM(NSInteger, PLPlayerAVSampleFormat) { - PLPlayerAV_SAMPLE_FMT_NONE = -1, - PLPlayerAV_SAMPLE_FMT_U8, ///< unsigned 8 bits - PLPlayerAV_SAMPLE_FMT_S16, ///< signed 16 bits - PLPlayerAV_SAMPLE_FMT_S32, ///< signed 32 bits - PLPlayerAV_SAMPLE_FMT_FLT, ///< float - PLPlayerAV_SAMPLE_FMT_DBL, ///< double - - PLPlayerAV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - PLPlayerAV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - PLPlayerAV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - PLPlayerAV_SAMPLE_FMT_FLTP, ///< float, planar - PLPlayerAV_SAMPLE_FMT_DBLP, ///< double, planar - - PLPlayerAV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - @brief 播放画面旋转模式 - - @since v2.3.0 - */ - -typedef NS_ENUM(NSInteger, PLPlayerRotationsMode) { - PLPlayerNoRotation, // 无旋转 - PLPlayerRotateLeft, // 向左旋 - PLPlayerRotateRight, // 向右旋 - PLPlayerFlipVertical, // 垂直翻转 - PLPlayerFlipHorizonal, // 水平翻转 - PLPlayerRotate180 // 旋转 180 度 -}; - -/** - PLPlayer 的播放状态 - - @since v1.0.0 - */ -typedef NS_ENUM(NSInteger, PLPlayerStatus) { - - /** - PLPlayer 未知状态,只会作为 init 后的初始状态,开始播放之后任何情况下都不会再回到此状态。 - @since v1.0.0 - */ - PLPlayerStatusUnknow = 0, - - /** - PLPlayer 正在准备播放所需组件,在调用 -play 方法时出现。 - - @since v1.0.0 - */ - PLPlayerStatusPreparing, - - /** - PLPlayer 播放组件准备完成,准备开始播放,在调用 -play 方法时出现。 - - @since v1.0.0 - */ - PLPlayerStatusReady, - - /** - PLPlayer 播放组件准备完成,准备开始连接 - - @waring 请勿在此状态时,调用 playWithURL 切换 URL 操作 - - @since v3.2.1 - */ - PLPlayerStatusOpen, - - /** - @abstract PLPlayer 缓存数据为空状态。 - - @discussion 特别需要注意的是当推流端停止推流之后,PLPlayer 将出现 caching 状态直到 timeout 后抛出 timeout 的 error 而不是出现 PLPlayerStatusStopped 状态,因此在直播场景中,当流停止之后一般做法是使用 IM 服务告知播放器停止播放,以达到即时响应主播断流的目的。 - - @since v1.0.0 - */ - PLPlayerStatusCaching, - - /** - PLPlayer 正在播放状态。 - - @since v1.0.0 - */ - PLPlayerStatusPlaying, - - /** - PLPlayer 暂停状态。 - - @since v1.0.0 - */ - PLPlayerStatusPaused, - - /** - @abstract PLPlayer 停止状态 - @discussion 该状态仅会在回放时播放结束出现,RTMP 直播结束并不会出现此状态 - - @since v1.0.0 - */ - PLPlayerStatusStopped, - - /** - PLPlayer 错误状态,播放出现错误时会出现此状态。 - - @since v1.0.0 - */ - PLPlayerStatusError, - - /** - * PLPlayer 自动重连的状态 - */ - PLPlayerStateAutoReconnecting, - - /** - * PLPlayer 播放完成(该状态只针对点播有效) - */ - PLPlayerStatusCompleted, - -}; - -/** - @brief 播放器音视频首帧数据类型 - - @since v3.2.1 - */ - -typedef NS_ENUM(NSInteger, PLPlayerFirstRenderType) { - PLPlayerFirstRenderTypeVideo = 0, // 视频 - PLPlayerFirstRenderTypeAudio // 音频 -}; - -/** - 返回播放器 SDK 的版本信息的字符串。 - - @since v2.2.3 - */ -extern NSString * _Nonnull playerVersion(); - -@class PLPlayer; -/** - 发送队列的代理协议。 - - @since v1.0.0 - */ -@protocol PLPlayerDelegate - -@optional - -/** - 告知代理对象 PLPlayer 即将开始进入后台播放任务 - - @param player 调用该代理方法的 PLPlayer 对象 - - @since v1.0.0 - */ -- (void)playerWillBeginBackgroundTask:(nonnull PLPlayer *)player; - -/** - 告知代理对象 PLPlayer 即将结束后台播放状态任务 - - @param player 调用该方法的 PLPlayer 对象 - - @since v2.1.1 - */ -- (void)playerWillEndBackgroundTask:(nonnull PLPlayer *)player; - -/** - 告知代理对象播放器状态变更 - - @param player 调用该方法的 PLPlayer 对象 - @param state 变更之后的 PLPlayer 状态 - - @since v1.0.0 - */ -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state; - -/** - 告知代理对象播放器因错误停止播放 - - @param player 调用该方法的 PLPlayer 对象 - @param error 携带播放器停止播放错误信息的 NSError 对象 - - @since v1.0.0 - */ -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error; - -/** - 点播已缓冲区域 - - @param player 调用该方法的 PLPlayer 对象 - @param timeRange CMTime , 表示从0时开始至当前缓冲区域,单位秒。 - - @waring 仅对点播有效 - - @since v2.4.1 - */ -- (void)player:(nonnull PLPlayer *)player loadedTimeRange:(CMTime)timeRange; - -/** - 回调将要渲染的帧数据 - 该功能只支持直播 - - @param player 调用该方法的 PLPlayer 对象 - @param frame 将要渲染帧 YUV 数据。 - CVPixelBufferGetPixelFormatType 获取 YUV 的类型。 - 软解为 kCVPixelFormatType_420YpCbCr8Planar. - 硬解为 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange. - @param pts 显示时间戳 单位ms - @param sarNumerator - @param sarDenominator - 其中sar 表示 storage aspect ratio - 视频流的显示比例 sarNumerator sarDenominator - @discussion sarNumerator = 0 表示该参数无效 - - @since v2.4.3 - */ -- (void)player:(nonnull PLPlayer *)player willRenderFrame:(nullable CVPixelBufferRef)frame pts:(int64_t)pts sarNumerator:(int)sarNumerator sarDenominator:(int)sarDenominator; - -/** - 回调音频数据 - - @param player 调用该方法的 PLPlayer 对象 - @param audioBufferList 音频数据 - @param audioStreamDescription 音频格式信息 - @param pts 显示时间戳 是解码器进行显示帧时相对于SCR(系统参考)的时间戳。SCR可以理解为解码器应该开始从磁盘读取数据时的时间 - @param sampleFormat 采样位数 枚举:PLPlayerAVSampleFormat - @return audioBufferList 音频数据 - - @since v2.4.3 - */ -- (nonnull AudioBufferList *)player:(nonnull PLPlayer *)player willAudioRenderBuffer:(nonnull AudioBufferList *)audioBufferList asbd:(AudioStreamBasicDescription)audioStreamDescription pts:(int64_t)pts sampleFormat:(PLPlayerAVSampleFormat)sampleFormat; - -/** - 回调 SEI 数据 - - @param player 调用该方法的 PLPlayer 对象 - @param SEIData SEI数据 - - @since v3.0.1 - */ -- (void)player:(nonnull PLPlayer *)player SEIData:(nullable NSData *)SEIData; - -/** - 音视频渲染首帧回调通知 - - @param player 调用该方法的 PLPlayer 对象 - @param firstRenderType 音视频首帧回调通知类型 - - @since v3.2.1 - */ -- (void)player:(nonnull PLPlayer *)player firstRender:(PLPlayerFirstRenderType)firstRenderType; - -/** - 视频宽高数据回调通知 - - @param player 调用该方法的 PLPlayer 对象 - @param width 视频流宽 - @param height 视频流高 - - @since v3.3.0 - */ -- (void)player:(nonnull PLPlayer *)player width:(int)width height:(int)height; - -/** - seekTo 完成的回调通知 - - @param player 调用该方法的 PLPlayer 对象 - - @since v3.3.0 - */ -- (void)player:(nonnull PLPlayer *)player seekToCompleted:(BOOL)isCompleted; - -@end - -/** - getScreenShotWithCompletionHandler 截图操作为异步, - 完成后将通过 ScreenShotWithCompletionHandler 类型的 block 回调返回 UIImage 类型图片数据。 - - @since v2.2.3 - */ - -typedef void (^ScreenShotWithCompletionHandler)(UIImage * _Nullable image); - - -/** - PLPlayer 是 PLPlayerKit 中负责播放控制的核心类 - - @since v1.0.0 - */ -@interface PLPlayer : NSObject - -/** - 代理对象,用于告知播放器状态改变或其他行为,对象需实现 PLPlayerDelegate 协议 - - @since v1.0.0 - */ -@property (nonatomic, weak, nullable) id delegate; - -/** - 回调方法的调用队列 - - @since v2.1.0 - */ -@property (nonatomic, strong, nullable) dispatch_queue_t delegateQueue; - -/** - 支持音频后台播放的开关, 默认为 YES. 请确认 [AVAudioSession canPlayInBackground] 为 YES。 - - @since v1.0.0 - */ -@property (nonatomic, assign, getter=isBackgroundPlayEnable) BOOL backgroundPlayEnable; - -/** - @abstract 需要播放的 URL - - @discussion 目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (URL 以 rtmp:// 开头) 协议。 - - @since v1.0.0 - */ -@property (nonatomic, copy, nonnull, readonly) NSURL *URL; - -/** - PLPlayer 的播放状态 - - @since v1.0.0 - */ -@property (nonatomic, assign, readonly) PLPlayerStatus status; - -/** - PLPlayer 的 option 对象 - - @since v2.1.0 - */ -@property (nonnull, strong, readonly) PLPlayerOption *option; - -/** - 指示当前 PLPlayer 是否处于正在播放状态 - - @since v1.0.0 - */ -@property (nonatomic, assign, readonly, getter=isPlaying) BOOL playing; - -/** - PLPlayer 的画面输出到该 UIView 对象 - - @since v1.0.0 - */ -@property (nonatomic, strong, nullable, readonly) UIView *playerView; - -/** - PLPlayer 的启动图 - - @discussion 播放开始前显示的图片。 - - @since v2.4.0 - */ -@property (nonatomic, strong, nullable) UIImageView *launchView; - -/** - 是否需要静音 PLPlayer,默认值为NO - - @since v2.1.2 - */ -@property (nonatomic, assign, getter=isMute) BOOL mute; - -/** - PLPlayer 的当前播放时间,仅回放状态下有效,只播放状态下将返回 CMTime(0,30) - - @since v2.1.2 - */ -@property (nonatomic, assign, readonly) CMTime currentTime; - -/** - PLPlayer 的总播放时间,仅回放状态下有效,只播放状态下将返回 CMTime(0,30) - - @since v2.1.2 - */ -@property (nonatomic, assign, readonly) CMTime totalDuration; - -/** - 是否开启重连,默认为 NO - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.2.2 - */ -@property (nonatomic, assign, getter = isAutoReconnectEnable) BOOL autoReconnectEnable; - -/** - 设置画面旋转模式 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign) PLPlayerRotationsMode rotationMode; - -/** - 是否渲染画面,默认为 YES - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign) BOOL enableRender; - -/** - 设置 http header referer 值 - - @since v2.4.1 - */ -@property (nonatomic, strong) NSString * _Nonnull referer; - -#pragma mark -- play info - -/** - meta data - - @since v2.4.0 - */ -@property (nonatomic, strong, readonly) NSDictionary * _Nullable metadata; - -/** - 连接时间 - 从触发播放到建立连接的耗时 - - @since v2.4.3 - */ - -@property (nonatomic, assign, readonly) NSTimeInterval connectTime; - -/** - 首开时间 - 从触发播放到第一帧视频渲染的耗时 - - @since v2.4.3 - */ - -@property (nonatomic, assign, readonly) NSTimeInterval firstVideoTime; - -/** - 视频流的宽 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int width; - -/** - 视频流的高 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int height; - -/** - 视频流的帧率 - - @warning 该属性仅 rtmp/flv 直播有效。 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int videoFPS; - -/** - 播放渲染帧率 - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) int renderFPS; - -/** - 视频流的码率,单位 kb/s - - @warning 该属性仅 rtmp/flv 直播有效。 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) double bitrate; - -/** - 下载速率,单位 kb/s - - @waring 该属性仅对 rtmp/flv 直播与 ffmpeg 点播有效 - - @since v2.3.0 - */ -@property (nonatomic, assign, readonly) double downSpeed; - -/** - 私有DRM - - @waring 该属性仅对 HLS 点播有效 - - @since v3.0.0 - */ -@property (nonatomic, strong) NSString * _Nullable DRMKey; - -/** - 变速播放,范围是 0.2-32,默认是 1.0 - - @waring 该属性仅对点播有效 - - @since v3.0.0 - */ -@property (nonatomic, assign) double playSpeed; - -/** - rtmp 流中的视频时间戳信息 - - @waring 该属性仅对 rtmp 有效 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) CMTime rtmpVideoTimeStamp; - -/** - rtmp 流中的音频时间戳信息 - - @waring 该属性仅对 rtmp 有效 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) CMTime rtmpAudioTimeStamp; - -/** - 视频旋转角度 - - @waring 该属性属于视频本身旋转角度 - - @since v3.1.0 - */ -@property (nonatomic, assign, readonly) int rotate __deprecated_msg("Method deprecated in v3.2.1. Adjust automatically"); - -/** - 视频剪裁播放,配置参数:(x, y, width, height),尺寸需是 4 的倍数,默认全视频画面 - - @waring 该属性只播放和渲染指定位置的画面,其中 x、y、width、height 值均取整使用,若播放新链接需裁剪,则每次新链接 play 前重新设置;若需重置为全视频画面,传 CGRectZero 即可 - - @since v3.2.1 - */ -@property (nonatomic, assign) CGRect videoClipFrame; - -/** - 是否循环播放,默认为 NO - - @waring 该属性仅对点播有效 - - @since v3.2.1 - */ -@property (nonatomic, assign) BOOL loopPlay; - -/** - 提前使用 DNS 解析 URL 中的域名。 - - @discussion 在初始化后,播放前调用该方法,预解析播放地址的域名。 - - @since v3.3.1 - */ -- (void)preDNSHost:(nullable NSURL *)URL; - - -/** - 提前设置 mp4 解析时间。 - - @since v3.3.1 - */ -- (void)mp4PreLoadTime:(CMTime)loadTime; - - -/** - 提前设置点播从某记忆点开始播放。 - - @since v3.3.1 - */ -- (void)preStartPosTime:(CMTime)startTime; - - -/** - 使用 url 和 option 生成一个 PLPlayer 对象, 直播使用此接口 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 生成的PLPlayer 对象 - - @since v2.2.3 - */ -+ (nullable instancetype)playerLiveWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - 使用 url 和 option 生成一个 PLPlayer 对象,点播使用此接口 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 生成的PLPlayer 对象 - - @since v2.2.3 - */ -+ (nullable instancetype)playerWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - 使用 url 和 option 初始化一个 PLPlayer 对象 - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param option 播放器初始化选项,传入 nil 值将按照默认选项进行初始化 - - @return 初始化后的 PLPlayer 对象 - - @waring 不支持使用 init, new 初始化 PLPlayer 对象。 - - @since v2.1.0 - */ -- (nullable instancetype)initWithURL:(nullable NSURL *)URL option:(nullable PLPlayerOption *)option; - -/** - URL 预加载 - - @discussion 在播放前调用该方法,预加载播放 URL 链接。 - - @warning 请勿与 playWithURL 切换新的 URL 合用,容易出现切换失败,播放流错误等问题 - - @return 是否成功打开 - - @since v3.2.1 - */ -- (BOOL)openPlayerWithURL:(nullable NSURL *)URL; - -/** - 开始播放 - @return 是否成功播放 - - @since v3.2.1 - */ -- (BOOL)play; - -/** - 开始播放新的 url - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - - @return 是否成功播放 - - @since v3.2.1 - */ -- (BOOL)playWithURL:(nullable NSURL *)URL __deprecated; - -/** - 开始播放新的 url - - @param URL 需要播放的 url ,目前支持 http(s) (url 以 http:// https:// 开头) 与 rtmp (url 以 rtmp:// 开头) 协议。 - @param sameSource 是否是同种格式播放,同格式切换打开更快 - - @return 是否成功播放 - - @waring 当sameSource 为 YES 时,视频格式与切换前视频格式不同时,会导致视频打开失败 - - @since v3.2.1 - */ -- (BOOL)playWithURL:(nullable NSURL *)URL sameSource:(BOOL)sameSource; - -/** - 当播放器处于暂停状态时调用该方法可以使播放器继续播放 - - @since v1.0.0 - */ -- (void)resume; - -/** - 当播放器处于 playing 或 caching 状态时调用该方法可以暂停播放器 - - @since v1.0.0 - */ -- (void)pause; - -/** - 停止播放器 - - @since v1.0.0 - */ -- (void)stop; - -/** - 快速定位到指定播放时间点,该方法仅在回放时起作用,直播场景下该方法直接返回 - - @param time 需要 - - @since v2.1.2 - */ -- (void)seekTo:(CMTime)time; - -/** - * 设置音量,范围是0-3.0,默认是1.0 - * - * @param volume 音量 - * - * @since v2.2.3 - */ -- (void)setVolume:(float)volume; - -/** - * 获取音量 - * - * @since v2.2.3 - * - * @return 音量 - */ -- (float)getVolume; - -/** - * 截图 - * @param handle 类型 ScreenShotWithCompletionHandler block 。 - * - * @discussion 截图操作为异步,完成后将通过 handle 回调返回 UIImage 类型图片数据。 - * 该功能只支持直播 - * - * @since v2.2.3 - * - */ -- (void)getScreenShotWithCompletionHandler:(nullable ScreenShotWithCompletionHandler)handle; - -/** - * 获取缓冲的文件字节数,已缓冲还未播放的值 - * - * @since v3.3.0 - * - * @return 文件字节数 long long 类型 - * - */ -- (long long)getHttpBufferSize; - -/** - * 是否缓存下载 - * @param bufferingEnabled 是否允许,默认为 YES,允许缓存下载 - * - * @discussion 当 bufferingEnabled 为 YES 时,文件正常下载。若下载中,修改 bufferingEnabled 为 NO,则下载暂停 - * - * @since v3.3.0 - * - */ -- (void)setBufferingEnabled:(BOOL)bufferingEnabled; - -/** - * 获取是否允许缓存下载 - * - * @since v3.3.0 - * - * @return 是否允许缓存下载 - */ -- (BOOL)getBufferingEnabled; -@end - -/** - @discussion AVAudioSessionAvailabilityCheck 提供了与播放器相关的可用性检查的方法. 从 iOS 对 AVAudioSession 接口设计 - 角度的考虑,PLPlayer 不会更改 AVAudioSession 的 category 值, 但是为了方便开发者, 我们提供一组类方法对sharedSession 做 - 播放的可用性检查。你可以调用这些方法来做检查, 以确保最终音频播放的行为与你预期一致, 如果不一致, 请务必先阅读 AVAudioSession - 的相关文档再做设置。 - - @since v1.0.0 - */ -@interface AVAudioSession (AVAudioSessionAvailabilityCheck) - -/** - 检查当前 AVAudioSession 的 category 配置是否可以播放音频。 - - @return 当为 AVAudioSessionCategoryAmbient,AVAudioSessionCategorySoloAmbient, AVAudioSessionCategoryPlayback, - AVAudioSessionCategoryPlayAndRecord中的一种时为 YES, 否则为 NO。 - - @since v1.0.0 - */ -+ (BOOL)isPlayable; - -/** - 检查当前 AVAudioSession 的 category 配置是否可以后台播放。 - - @return 当为 AVAudioSessionCategoryPlayback,AVAudioSessionCategoryPlayAndRecord 中的一种时为 YES, 否则为 NO。 - - @since v1.0.0 - */ -+ (BOOL)canPlayInBackground; - -@end diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h deleted file mode 100644 index 98d14ada..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerError.h +++ /dev/null @@ -1,92 +0,0 @@ -// -// PLPlayerError.h -// PLPlayerKit -// -// Created by liang on 4/22/16. -// Copyright © 2016年 Pili Engineering. All rights reserved. -// - -#ifndef PLPlayerError_h -#define PLPlayerError_h - -typedef NS_ENUM(NSInteger, PLPlayerError) { - - // PLPlayer error - PLPlayerErrorUnknow = 0, // "Unknow error" - - // Input error - PLPlayerErrorEOF = -1, // End of file - - PLPlayerErrorURLNotSupported = -2000, // "URL to play is not supported." - - PLPlayerErrorAudioSessionNotSupportToPlay = -2001, // "AVAudioSession's category doesn't support audio play." - - PLPlayerErrorAudioFormatNotSupport = -2002, // "RTMP/FLV live audio only support AAC." - - PLPlayerErrorVideoFormatNotSupport = -2003, // "RTMP/FLV live video only support H264." - - PLPlayerErrorStreamFormatNotSupport = -2004, // FFMPEG can not open stream, or can not find stream info.' - - PLPlayerErrorInputTimeout = -2100, // "Input read data timeout." - - PLPLayerErrorInputReadError = -2101, // "Input read data error." - - // Codec error - PLPlayerErrorCodecInitFailed = -2201, // "codec init failed." - - PLPlayerErrorHWCodecInitFailed = -2202, // "hardware codec init faile." - - PLPlayerErrorDecodeFailed = -2203, // "decode failed." - - PLPlayerErrorHWDecodeFailed = -2204, // "hardware decode failed." - - PLPlayerErrorDecodeNoFrame = -2205, // "decode no frame." - - PLPlayerErrorVideoSizeChange = -2206, // "video size change, should stop and replay." - - // RTMP error - PLPlayerErrorRTMPErrorUnknowOption = -999, // "Unknown option %s" - - PLPlayerErrorRTMPErrorAccessDNSFailed = -1000, // "Failed to access the DNS. (addr: %s)" - - PLPlayerErrorRTMPErrorFailedToConnectSocket = -1001, // "Failed to connect socket. %d (%s)" - - PLPlayerErrorRTMPErrorSocksNegotiationFailed = -1002, // "Socks negotiation failed" - - PLPlayerErrorRTMPErrorFailedToCreateSocket = -1003, // "Failed to create socket. %d (%s)" - - PLPlayerErrorRTMPErrorHandshakeFailed = -1004, // "Handshake failed" - - PLPlayerErrorRTMPErrorRTMPConnectFailed = -1005, // "RTMP connect failed" - - PLPlayerErrorRTMPErrorSendFailed = -1006, // "Send error %d (%s), (%d bytes)" - - PLPlayerErrorRTMPErrorServerRequestedClose = -1007, // "RTMP server requested close" - - PLPlayerErrorRTMPErrorNetStreamFailed = -1008, // "NetStream failed" - - PLPlayerErrorRTMPErrorNetStreamPlayFailed = -1009, // "NetStream play failed" - - PLPlayerErrorRTMPErrorNetStreamPlayStreamNotFound = -1010, // "NetStream play stream not found" - - PLPlayerErrorRTMPErrorNetConnectionConnectInvalidApp = -1011, // "NetConnection connect invalip app" - - PLPlayerErrorRTMPErrorSanityFailed = -1012, // "Sanity failed. Trying to send header of type: 0x%02X" - - PLPlayerErrorRTMPErrorSocketClosedByPeer = -1013, // "RTMP socket closed by peer" - - PLPlayerErrorRTMPErrorRTMPConnectStreamFailed = -1014, // "RTMP connect stream failed" - - PLPlayerErrorRTMPErrorSocketTimeout = -1015, // "RTMP socket timeout" - - // SSL errors - PLPlayerErrorRTMPErrorTLSConnectFailed = -1200, // "TLS_Connect failed" - - PLPlayerErrorRTMPErrorNoSSLOrTLSSupport = -1201, // "No SSL/TLS support" - - PLPlayerErrorHTTPErrorHTTPConnectFailed = -1202, // "HTTP connect failed" -}; - - - -#endif /* PLPlayerError_h */ diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h deleted file mode 100644 index 52374a12..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerKit.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// PLPlayerKit.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#ifndef PLPlayerKit_h -#define PLPlayerKit_h - -#import "PLPlayer.h" -#import "PLPlayerOption.h" -#import "PLPlayerError.h" - - -#endif /* PLPlayerKit_h */ diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h deleted file mode 100644 index 62fcf1d4..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Headers/PLPlayerOption.h +++ /dev/null @@ -1,248 +0,0 @@ -// -// PLPlayerOption.h -// PLPlayerKit -// -// Created by 何昊宇 on 2017/5/15. -// Copyright © 2017年 Aaron. All rights reserved. -// - -#import - -/** - 设置控制台 log 的级别,log 级别在 kPLLogInfo 及以上,则会缓存日志文件, - 日志文件存放的位置为 APP Container/Library/Caches/Pili/PlayerLogs - - */ -typedef enum : NSUInteger { - /** - * No logs - */ - kPLLogNone, - /** - * Error logs only - */ - kPLLogError, - /** - * Error and warning logs - */ - kPLLogWarning, - /** - * Error, warning and info logs - */ - kPLLogInfo, - /** - * Error, warning, info and debug logs - */ - kPLLogDebug, - /** - * Error, warning, info, debug and verbose logs - */ - kPLLogVerbose, -} PLLogLevel; - -/** - 预设置播放器播放 URL 类型 - */ -typedef enum : NSUInteger { - /** - * 未知类型 - */ - kPLPLAY_FORMAT_UnKnown, - /** - * M3U8 类型 - */ - kPLPLAY_FORMAT_M3U8, - /** - * MP4 类型 - */ - kPLPLAY_FORMAT_MP4, - /** - * FLV 类型 - */ - kPLPLAY_FORMAT_FLV, - /** - * MP3 类型,此类型需要提前设置,才可播放 - */ - kPLPLAY_FORMAT_MP3, - /** - * AAC 类型,此类型需要提前设置,才可播放 - */ - kPLPLAY_FORMAT_AAC - -} PLPlayFormat; - -/** - @abstract 接收/发送数据包超时时间间隔所对应的键值,单位为 s ,默认配置为 10s - - @warning 建议设置正数。设置的值小于等于 0 时,表示禁用超时,播放卡住时,将无超时回调。 - 该参数仅对 rtmp/flv 直播生效 - - @since v1.0.0 - */ -extern NSString * _Nonnull PLPlayerOptionKeyTimeoutIntervalForMediaPackets; - -/** - @abstract 一级缓存大小,单位为 ms,默认为 2000ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟 - - @discussion 该缓存存放的是网络层读取到的数据,为保证实时性,超过该缓存池大小的过期音频数据将被丢弃,视频将加速渲染追上音频 - - @warning 该参数仅对 rtmp/flv 直播生效 - - @since v2.1.3 - */ -extern NSString * _Nonnull PLPlayerOptionKeyMaxL1BufferDuration; - -/** - @abstract 默认二级缓存大小,单位为 ms,默认为 300ms,增大该值可以减小播放过程中的卡顿率,但会增大弱网环境的最大累积延迟 - - @discussion 该缓存存放的是解码之后待渲染的数据,如果该缓存池满,则二级缓存将不再接收来自一级缓存的数据 - - @warning 该参数仅对 rtmp/flv 直播生效 - - @since v2.1.3 - */ -extern NSString * _Nonnull PLPlayerOptionKeyMaxL2BufferDuration; - -/** - @abstract 是否使用 video toolbox 硬解码。 - - @discussion 使用 video toolbox Player 将尝试硬解码,失败后,将切换回软解码。 - - @waring 该参数仅对 rtmp/flv 直播生效, 默认不使用。支持 iOS 8.0 及更高版本。 - - @since v2.1.4 - */ -extern NSString * _Nonnull PLPlayerOptionKeyVideoToolbox; - -/** - @abstract 配置 log 级别 - - @discussion release 建议使用 kPLLogWarning, debug 建议使用 kPLLogInfo. - - @waring 取值范围: PLLogLevel - - @since v2.2.1 - */ -extern NSString * _Nonnull PLPlayerOptionKeyLogLevel; - -/** - @abstract dns 查询,使用内置 DNS 解析 - - @discussion NSString 类型,开启 DNS 解析,默认使用系统 API 解析 - - @waring 该参数仅对 rtmp/flv 直播生效 - - @since v2.2.1 - */ -extern NSString * _Nonnull PLPlayerOptionKeyDNSManager; - -/** - @abstract 开启/关闭 HappyDNS 的 DNS 解析 - - @discussion 默认关闭 - - @waring 该参数仅对 rtmp 与 flv 生效,值类型为 BOOL - - @since v2.3.0 - */ -extern NSString * _Nonnull PLPlayerOptionKeyHappyDNSEnable __deprecated_msg("Method deprecated in v3.3.0. No support HappyDNS"); - -/** - @abstract 视频缓存目录, 默认为 nil - - @waring 该属性仅对点播 mp4 有效, 当 PLPlayerOptionKeyVideoCacheFolderPath 有值时,默认关闭 DNS 解析 - - @since v3.0.0 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoCacheFolderPath; - -/** - @abstract 视频预设值播放 URL 格式类型 - - @discussion 该参数用于加快首开,提前告知播放器流类型,默认 kPLPLAY_FORMAT_UnKnown - - @waring 取值范围: PLPlayFormat - - @since v3.0.1 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoPreferFormat; - -/** - @abstract 视频缓存扩展名 - - @waring 该属性仅对点播 mp4 有效,需在视频缓存目录 PLPlayerOptionKeyVideoCacheFolderPath 基础上设置 - - @see PLPlayerOptionKeyVideoCacheFolderPath - - @since v3.2.1 - */ -extern NSString * _Nullable PLPlayerOptionKeyVideoCacheExtensionName; - -/** - SDK 设备 ID - - @discussion 该参数用于标记 SDK 设备 ID, 默认为 UUID - - @since v3.0.2 - */ -extern NSString * _Nullable PLPlayerOptionKeySDKID; - -/** - PLPlayer 的可选配置类,在初始化 PLPlayer 对象的时候传入其实例进行 PLPlayer 的可选项配置 - - @since v1.0.0 - */ -@interface PLPlayerOption : NSObject - -/** - @abstract 使用默认配置生成一个 PLPlayerOption 对象 - - @return 生成的 PLPlayerOption 对象 - - @since v1.0.0 - */ -+ (nonnull PLPlayerOption *)defaultOption; - -/** - 使用一个 NSDictionary 对象来生成一个 PLPlayerOption 对象 - - @param dic 用于初始化 PLPlyerOption 对象的 NSDictionary 对象 - - @return 生成的 PLPlayerOption 对象 - - @since v1.0.0 - */ -+ (nonnull PLPlayerOption *)optionWithDictionary:(nonnull NSDictionary *)dic; - -/** - 设置相应的键所对应的值 - - @param value 要设置的值 - @param key 要设置值的键 - - @since v1.0.0 - */ -- (void)setOptionValue:(nullable id)value forKey:(nonnull NSString *)key; - -/** - 获取特定键所对应的值 - - @param key 要获取值的键名 - - @return 获取到的值,当该值为 nil 时表示没有找到该键名对应的值。 - - @since v1.0.0 - */ -- (nullable id)optionValueForKey:(nonnull NSString *)key; - -/** - 生成一个包含该 PLPlayer 所有键值对信息的 NSDictionary 对象来 - - @return 所生成的 NSDictionary 对象 - - @since v1.0.0 - */ -- (nonnull NSDictionary *)dictionaryValue; - - -@end diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist deleted file mode 100644 index fe721699..00000000 Binary files a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Info.plist and /dev/null differ diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap deleted file mode 100644 index db018f45..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module PLPlayerKit { - umbrella header "PLPlayerKit.h" - - export * - module * { export * } -} diff --git a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit b/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit deleted file mode 100755 index 5528488c..00000000 Binary files a/Example_TuTu/Pods/PLPlayerKit/Pod/Library/PLPlayerKit.framework/PLPlayerKit and /dev/null differ diff --git a/Example_TuTu/Pods/PLPlayerKit/README.md b/Example_TuTu/Pods/PLPlayerKit/README.md deleted file mode 100644 index 60dbc25f..00000000 --- a/Example_TuTu/Pods/PLPlayerKit/README.md +++ /dev/null @@ -1,597 +0,0 @@ -# PLPlayerKit - -PLPlayerKit 是一个适用于 iOS 的音视频播放器 SDK,可高度定制化和二次开发,特色是支持 RTMP, HTTP-FLV 和 HLS 直播流媒体播放。 - -SDK 的 Github 地址:https://github.com/pili-engineering/PLPlayerKit - -功能特性 - -- [x] 高可定制 -- [x] 直播累积延迟消除技术 -- [x] 支持首屏秒开 -- [x] 支持 RTMP 直播流播放 -- [x] 支持 HTTP-FLV 直播流播放 -- [x] 支持 HLS 播放 -- [x] 支持 HTTPS 播放 -- [x] 支持多种画面预览模式 -- [x] 支持画面旋转与镜像 -- [x] 支持播放器音量设置 -- [x] 支持纯音频播放 -- [x] 支持后台播放 -- [x] 支持使用 IP 地址的 URL -- [x] 支持软硬解自动切换 -- [x] 支持 H.265 格式播放 -- [x] 支持 HLS 七牛私有 DRM -- [x] 支持点播倍速播放 -- [x] 支持点播 mp4 视频本地缓存播放 -- [x] 支持 SEI 数据回调 -- [x] 支持 rtmp 原始时间戳 -- [x] 支持 flv 使用 mp3 音频格式 -- [x] 支持 http 的 DNS 异步解析 -- [x] 支持视频根据旋转角度自动旋转 -- [x] 支持视频裁剪播放 -- [x] 支持自定义缓存地址扩展名 -- [x] 支持播放音量放大 -- [x] 支持播放预加载 -- [x] 支持点播循环播放 -- [x] 支持下载暂停功能 -- [x] 支持获取缓冲文件的长度 -- [x] 支持 seekTo 完成的回调 -- [x] 支持提前设置 mp4 解析时间 -- [x] 支持提前设置点播从记忆点播放 - -## 说明 - -从 **v3.0.0** 开始,SDK 全面升级为七牛完全自研的播放器内核,拥有更加优异的性能,升级内容如下: - -- [x] 新增倍数播放功能(0.5x,1x,2x,4x 等) -- [x] 新增 mp4 本地缓存功能 -- [x] 新增 HLS 七牛私有 DRM 的支持 -- [x] 新增 H.265 格式播放的支持 -- [x] 优化 CPU、内存和功耗 -- [x] 优化首开效果,首开速度有大幅提升 -- [x] 优化重连逻辑,不用销毁播放器,网络断开后内部自动重连 -- [x] 优化 mp4 点播,使用双 IO 技术更高效地播放 moov 在尾部的 mp4 文件 -- [x] 支持播放过程中变速不变调,可实现更平滑的追帧效果,更少的卡顿率 -- [x] 新增支持 SEI 数据回调,更多数据交互 -- [x] 新增音视频渲染首帧回调,更便捷 -- [X] 新增预加载切换 URL 功能 - -如果从旧版本升级,建议参考[升级指南](https://github.com/pili-engineering/PLPlayerKit/blob/master/v3.x.x-UpgradeGuide.md)以及[ReleaseNotes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes)文件夹下的各个版本说明,查看注意事项 - -## 内容摘要 - -- [快速开始](#1-快速开始) - - [配置工程](#配置工程) - - [示例代码](#示例代码) -- [版本历史](#版本历史) - -## 快速开始 - -### 配置工程 - -#### CocoaPods 导入 - -- 配置你的 Podfile 文件,默认真机,添加如下配置信息 - -``` -pod 'PLPlayerKit' -``` -- 若需要使用模拟器 + 真机,则改用如下配置 - -``` -pod "PLPlayerKit", :podspec => 'https://raw.githubusercontent.com/pili-engineering/PLPlayerKit/master/PLPlayerKit-Universal.podspec' -``` - -- 安装 CocoaPods 依赖 - -``` -pod update -``` -or -``` -pod install -``` - -- Done! 运行你工程的 workspace - -**注意:鉴于目前 iOS 上架,只支持动态库真机,请在 App 上架前,更换至真机版本** - -#### 手动导入 - -- 根据需要,将 Pod 目录下真机或真机 + 模拟器版本的 framework 文件加入到工程中; -- Build Setting 下 Other Linker Flags 中添加 -ObjC -- Build Phases 下 Link Binary With Libraries 中添加如图所示 -![](http://sdk-release.qnsdk.com/PLPLayerKit.jpg) - -### 添加相关配置 - -添加 App Transport Security Setting - -* 如图所示 - -![](http://7xuil4.com1.z0.glb.clouddn.com/permession.jpg) - - -配置 Required background modes - -* 如图所示 - -![](http://7xuil4.com1.z0.glb.clouddn.com/AllowBackground-4.png) - -### 示例代码 - -在需要的地方添加 - -```Objective-C -#import -``` - -初始化 PLPlayerOption - -```Objective-C -// 初始化 PLPlayerOption 对象 -PLPlayerOption *option = [PLPlayerOption defaultOption]; - -// 更改需要修改的 option 属性键所对应的值 -[option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets]; -[option setOptionValue:@2000 forKey:PLPlayerOptionKeyMaxL1BufferDuration]; -[option setOptionValue:@1000 forKey:PLPlayerOptionKeyMaxL2BufferDuration]; -[option setOptionValue:@(NO) forKey:PLPlayerOptionKeyVideoToolbox]; -[option setOptionValue:@(kPLLogInfo) forKey:PLPlayerOptionKeyLogLevel]; - -``` - -初始化 PLPlayer - -```Objective-C - -// 初始化 PLPlayer -self.player = [PLPlayer playerWithURL:self.URL option:option]; - -// 设定代理 (optional) -self.player.delegate = self; - -``` - -获取播放器的视频输出的 UIView 对象并添加为到当前 UIView 对象的 Subview - -```Objective-C - -//获取视频输出视图并添加为到当前 UIView 对象的 Subview -[self.view addSubview:player.playerView]; - -``` - -开始/暂停操作 - -```Objective-C - -// 播放 -[self.player play]; - -// 停止 -[self.player stop]; - -// 暂停 -[self.player pause]; - -// 继续播放 -[self.player resume]; -``` - -播放器状态获取 - -```Objective-C -// 实现 来控制流状态的变更 -- (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state { - // 这里会返回流的各种状态,你可以根据状态做 UI 定制及各类其他业务操作 - // 除了 Error 状态,其他状态都会回调这个方法 - // 开始播放,当连接成功后,将收到第一个 PLPlayerStatusCaching 状态 - // 第一帧渲染后,将收到第一个 PLPlayerStatusPlaying 状态 - // 播放过程中出现卡顿时,将收到 PLPlayerStatusCaching 状态 - // 卡顿结束后,将收到 PLPlayerStatusPlaying 状态 -} - -- (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error { - // 当发生错误,停止播放时,会回调这个方法 -} - -- (void)player:(nonnull PLPlayer *)player codecError:(nonnull NSError *)error { - // 当解码器发生错误时,会回调这个方法 - // 当 videotoolbox 硬解初始化或解码出错时 - // error.code 值为 PLPlayerErrorHWCodecInitFailed/PLPlayerErrorHWDecodeFailed - // 播发器也将自动切换成软解,继续播放 -} -``` - -## 音频部分的特别说明 - -因为 iOS 的音频资源被设计为单例资源,所以如果在 player 中做的任何修改,对外都可能造成影响,并且带来不能预估的各种问题。 - -为了应对这一情况,PLPlayerKit 采取的方式是检查是否可以播放及是否可以进入后台,而在内部不做任何设置。具体是通过扩展 `AVAudioSession` 来做到的,提供了两个方法,如下: - -```Objective-C -/*! - * @description 检查当前 AVAudioSession 的 category 配置是否可以播放音频. 当为 AVAudioSessionCategoryAmbient, - * AVAudioSessionCategorySoloAmbient, AVAudioSessionCategoryPlayback, AVAudioSessionCategoryPlayAndRecord - * 中的一种时为 YES, 否则为 NO. - */ -+ (BOOL)isPlayable; - -/*! - * @description 检查当前 AVAudioSession 的 category 配置是否可以后台播放. 当为 AVAudioSessionCategoryPlayback, - * AVAudioSessionCategoryPlayAndRecord 中的一种时为 YES, 否则为 NO. - */ -+ (BOOL)canPlayInBackground; -``` - -分辨可以检查是否可以播放以及当前 category 的设置是否可以后台播放。 - -**注意:请确保 `isPlayable` 为 YES,即可以播放;`canPlayInBackground` 为 YES,即可以后台播放。** - -达到 `isPlayable` 以及 `canPlayInBackground` 两者为 YES,示例设置代码如下: - -```Objective-C -[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; -[[AVAudioSession sharedInstance] setActive:YES error:nil]; -``` - -## 其它依赖库版本号 -- FFmpeg : v3.3.x -- OpenSSL: OpenSSL_1_1_0f -- Speex: v1.2.0 - -## 版本历史 -- 3.3.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.3.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.3.1.md)) -- 功能 - - 支持调用 seekTo 后回调结果 - - 支持提前设置 mp4 解析时间 - - 支持提前设置点播从记忆点开始播放 - - 支持内部自动检查格式的功能 -- 缺陷 - - 修复 pause 后调整预览 size 导致画面拉伸或压缩的问题 - - 修复开启离线缓存后,偶现无法循环播放的问题 - - 修复 4G 网下 iPv6 解析错误的问题 - - 修复特殊情况下多次创建释放 player 对象导致崩溃的问题 - - 修复截图功能失效的问题 - - 修复弱网环境调用 stop 卡主线程的问题 - - 修复重连崩溃或失败的问题 - - 解决系统 DNS 部分不可用的问题 - - 修复本地 m3u8 文件无法正常播放的问题 - - 修复 open fail 之后 destroy player 的 crash 问题 - - 修复未获取总时长,回调 loadTimeRange 一直为 0 的问题 - - 修复某些长视频 seek 操作异常的问题 - - 修复点播播放完成后,resume 或 seek 至文件开头,播放状态错误的问题 - - 修复优化 mp4 快开带来的一些问题 -- 其他 - - 优化下载数据时内存的使用 - - 去除 `PLPlayerStatus`的两个值`PLPlayerStatusSeeking` 及 `PLPlayerStatusSeekFailed` - - 修改缓冲回调参数`CMTimeRange`为`CMTime` - - 修改 `preDNSHost` 类方法为实例方法 -- 3.3.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.3.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.3.0.md)) -- 功能 - - 支持视频流宽高的回调 - - 支持下载暂停功能 - - 支持获取缓冲文件的长度 - - 支持 seekTo 完成的回调 -- 缺陷 - - 修复内存泄漏的问题 - - 修复获取音量值不够精确的问题 - - 修复循环播放回退及失败的问题 - - 修复特定流打开时间较长的问题 - - 修复特定链接播放有声音没画面的问题 - - 修复设备拍摄视频未修正宽高的问题 - - 修复纯音频 seekTo 失败的问题 - - 修复重连成功后状态未改变的问题 - - 修复暂停后 PLPlayerStatus 状态错误的问题 - - 修复视频播放后设置 playerView 的 contentMode 无效的问题 -- 其他 - - 大幅降低 MP4 长视频首开时间,20M 网络下,2 小时 MP4 文件首开只需 0.6 - 1秒 - - 去除 HappyDNS,使用内置的 DNS 解析 -- 3.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.2.1.md)) -- 功能 - - 支持视频裁剪播放 - - 支持自定义缓存地址扩展名 - - 支持播放音量放大 - - 支持播放预加载 - - 支持点播循环播放 -- 缺陷 - - 修复播放断网 crash 的问题 - - 修复 mp4 开始缓存时重连失败的问题 - - 修复快速切换打开链接的 crash 问题 - - 完善视频画面渲染色彩度 - - 修复变速后声调发生改变的问题 - - 修复 seek 后跳转不精确的问题 - - 修复视频未依据 DAR 比例显示的问题 - - 修复退后台偶现 SIGPIPE 的问题 - - 修复部分 flv 直播流卡住的问题 - - 修复 SEI 数据丢失的问题 - - 修复 videoToolbox 硬解码视频角度未矫正的问题 -- 其他 - - 以动态库的方式发布,仅支持 iOS 8.0 及以上系统 -- 3.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.2.0.md)) -- 功能 - - 支持 flv 使用 mp3 音频格式 - - 支持 http 的 DNS 异步解析 - - 支持视频根据旋转角度自动旋转 -- 缺陷 - - 修复失去音频第一帧渲染问题 - - 修复 OpenGL crash 的问题 - - 修复部分视频音画不同步的问题 - - 修复部分视频花屏、马赛克的问题 - - 修复弱网播放偶现快速切换卡顿的问题 - - 修复进入后台切换第三方应用 crash 的问题 - - 解决由第三方引起的 ffmpeg 冲突问题 - - 修复直播 url 中含有 ?domain= 无法播放的问题 - - 修复音频视频时长不匹配 resume 播放失败的问题 -- 3.1.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.1.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.1.0.md)) -- 功能 - - 支持读取 mp3, aac 格式 - - 支持读取 rtmp 流中的音视频时间戳信息 - - 支持读取视频旋转角度参数 - - 支持 mpeg 格式播放 -- 缺陷 - - 修复 Stop 时偶现的 Crash 及卡住的问题 - - 修复 ipv6 rtmp 无法播放的问题 - - 修复播放纯音频/纯视频流时得不到 playing 状态的问题 - - 修复特定 flv 流重复播放的问题 - - 修复偶现 OpenGL crash 的问题 -- 3.0.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.2.md)) -- 功能 - - 加长 URL 设置长度 -- 缺陷 - - 修复 iPhone X 模拟器崩溃问题 - - 修复数据缓存回调总时长出错问题 - - 修复截图功能无效问题 - - 修复 OpenGL 崩溃问题 - - 修复无法修改 playerView 的 bounds 属性的问题 -- 3.0.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.1.md)) -- 功能 - - 新增 SEI 数据回调 - - 新增播放格式预设置 - - 新增同格式快速播放接口 -- 缺陷 - - 修复播放器错误时收不到 error 状态回调的问题 - - 修复某些 mp4 无法播放的问题 - - 修复多次 stop 时 crash 的问题 -- 3.0.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-3.0.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-3.0.0.md)) -- 全面升级为七牛自研的播放器内核,拥有更优异的性能 -- 功能 - - 新增 HLS 七牛私有 DRM 的支持 - - 新增 H.265 格式的播放 - - 新增点播倍速播放 - - 新增点播 mp4 视频缓存播放 -- 优化 - - 优化包体大小 - - 优化 CPU、内存和功耗 - - 优化直播模式下的追帧策略,效果更加平滑 - - 优化重连逻辑,不用销毁播放器,网络断开后内部自动重连 - - 优化 mp4 点播,使用双 IO 技术更高效地播放 moov 在尾部的 mp4 文件 -- 2.4.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.3.md)) -- 功能 - - 新增流分辨率变化的通知 - - 新增提供更多音视频信息的回调接口 - - 新增首开耗时接口 - - 增强 FFmpeg 点播硬解兼容性 -- 缺陷 - - 修复 AVPlayer 点播 pause 状态切换时播放器状态异常的问题 - - 修复 FFmpeg 点播纯音频流时 seek 失败的问题 - - 修复硬解在某些场景下出现绿屏的问题 -- 2.4.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.2.md)) -- 缺陷 - - 修复 AVPlayer 播放时调用 pause 和设置 frame 无效的问题 - - 修复解码器释放时线程并发导致的偶发 crash -- 2.4.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.1.md)) -- 功能 - - 新增 probesize 参数配置 - - 新增播放器初始化后更新 URL 的接口 - - 新增 AVPlayer 点播的缓冲进度接口 - - 增加 http header 中 referer 自定义接口 -- 缺陷 - - 修复锁屏且屏幕黑后,播放没有声音的问题 - - 修复播放器释放时偶发的 crash -- 2.4.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.4.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.4.0.md)) -- 功能 - - 新增 https 支持 - - 新增文件播放 - - 新增 speex, ogg 等音视频格式, avi, m4a 等封装格式支持。 - - 新增 display aspect ratio 信息 - - 新增 DNS 预解析接口 - - 新增开播前封面图 -- 缺陷 - - 修复一些偶发的 crash -- 2.3.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.3.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.3.0.md)) -- 功能 - - 新增直播流画面旋转模式 - - 新增直播流分辨率信息 - - 新增停止渲染的选项 - - 新增基于 FFMPEG 的点播 -- 缺陷 - - 修复一些偶现的 crash -- 优化 - - 优化开始播放的快进时间 -- 2.2.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.4.md)) -- 缺陷 - - 修复与 CocoaLumberjack 符号冲突的问题 -- 2.2.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.3.md)) -- 功能 - - 新增 QoS 功能 - - 新增渲染数据回调 - - 新增截图功能 - - 新增 MP3 后台播放 -- 缺陷 - - 修复后台播放时,触发超时重连,丢失 sps/pps,回到前台画面停住,声音正常的问题 - - 修复 RTMP 扩展时间戳的问题 - - 修复播放器释放阻塞主线程的问题 - - 优化音视频同步机制 - - 优化 caching 状态检查 -- 2.2.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.2.md)) -- 功能 - - 新增 AAC HEV2 音频支持 - - 新增 SDK 自动重连功能,默认不开启 -- 缺陷 - - 修复长时间播放偶发解码 crash - - 修复 pause/resmue 快速调用导致 crash - - 修复重连未更换服务器 IP - - 修复 rtmp 硬解播放视频抖动 - - 修复 flv 开始播放偶发黑屏 - - 修复 flv 超时机制失效 -- 2.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.1.md)) -- 功能 - - 支持 SDK 日志级别设置 - - 新增 HappyDNS 支持 -- 缺陷 - - 修复回看状态不准确问题 - - 修复跳转第三方应用,出现内存增加 - - 修复播放卡住 caching 状态 -- 2.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.2.0.md)) -- 功能 - - 新增硬解功能 - - 新增 http-flv 支持 - - 新增 iOS9 下的纯 IPV6 环境支持 -- 缺陷 - - 修复快速进入退出黑屏 -- 优化 - - 追帧策略优化 - - 退出后台停止视频解码 -- 2.1.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.3.md)) - - 增加设置一级缓存和二级缓存的选项,便于控制卡顿率 - - 修复播放 OBS 及 FFmpeg 推的流黑屏的问题 - - 修复播放结束后无法重播的问题 - - 修复播放过程中内存暴增的问题 - - 拆分 pili-librtmp 为公共依赖,解决模拟器环境下与 PLStreamingKit 冲突的问题 -- 2.1.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.2.md)) - - 增加确切的错误枚举,方便定位错误类型 - - 增加 mute, currentTime, totalDuration, seekTo 等接口 - - 修复首屏开启以及播放过程中出现缓存后网络恢复是可能出现的 UI 卡顿问题 - - 修复 contentMode 偶尔设置无效的问题 - - 修复重新设置播放 url 播放的问题 - - 修复快速 -stop 以及 -play 出现的内存泄露问题 -- 2.1.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.1.md)) - - 首屏开启速度优化,在网络状况良好的情况下能实现秒开效果 - - 弱网情况下的累积延迟问题优化,较好控制累积延迟在数秒以内 - - 解决了上一版遇到的无法设置 playerView.contentMode 以及 playerOption 的问题 - - 解决了不标准流可能出现的音频断续,播放器内存异常增长问题 - - 后台播放体验优化,修复了后台播放被其他音频打断后出现的一系列问题 - - 解决了应用切换时出现的 UI 卡死问题 -- 2.1.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.1.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.1.0.md)) - - 此次更新为重大版本升级,更改了大量 API 并重构了包括解码渲染在内的多项内容,建议所有用户进行升级,并且根据[快速开始](#快速开始)使用新版 API 对工程重新进行配置。 - - 更改了播放器的音频解码和渲染方式 - - 更改了播放器的时钟同步机制 - - 重构了内部逻辑,使播放器更稳定 - - 重构了播放器 API ,使播放器的使用更加简单明了,去除了使用起来不方便的部分 API - - 解决了播放过程中可能出现声音消失的问题 - - 解决了退后台返回后音视频无法正常同步的问题 - - 修改播放器音视频同步机制 - - 解决持续播放过程中出现部分内存没有正确释放的问题 - - 解决了 iOS 版本小于 8.0 时 Demo 出现的crash问题 -- 2.0.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.4.md)) - - 解决 RTMP 播放时可能黑屏的问题 -- 2.0.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.3.md)) - - 解决 RTMP 播放没有声音 - - 解决 RTMP 无法播放导致内存急增最终 App crash - - 解决 RTMP 无法播放画面只有声音 - - 解决播放 RTMP 时相关的 crash 问题 -- 2.0.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.2.md)) - - 添加 RTMP Cache 机制 - - 添加数据超时属性 - - 修复 RTMP 播放内存 leak - - 修复 RTMP 播放音频错误问题 - - 修复 RTMP 播放主线程卡死问题 - - 优化架构,减少内存和 cpu 占用 -- 2.0.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.1.md)) - - 修复 `contentMode` 设置无效的问题 - - 修复 rtmp 无法播放或播放超时时无 error 抛出的问题 - - 修复 rtmp 播放失败时触发的 cpu 飙升问题 - - 修复 stop 可能触发的 crash 问题 - - 更新 demo 确保在 iOS 9.1 下运行正常 -- 2.0.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-2.0.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-2.0.0.md)) - - 添加全新的 `PLPlayer`,弃用 `PLVideoPlayerController` 和 `PLAudioPlayerController` - - 播放 RTMP 音视频流时,进入后台后声音继续播放,不会断开,返回前台追帧显示最新视频帧 - - 针对 RTMP 直播彻底优化,首屏秒开,最小化缓存 - - 完全无 ffmpeg 依赖,包体积再次缩小 - - 优化资源占用,比 1.x 版本内存占用减少 50% 以上 -- 1.2.22 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.22.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.22.md)) - - 修复因收到内存警告而引起的崩溃问题 - - 修复停止播放时,可能进入错误 play state 的问题 -- 1.2.21 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.21.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.21.md)) - - 修复 `PLVideoParameterFrameViewContentMode` 与 `PLVideoParameterDisableDeinterlacing` 设置无效的问题 -- 1.2.20 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.20.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.20.md)) - - 修复 `seekTo:` 不准确的问题 - - 添加 `PLPlayerStateSeeking` 类型 -- 1.2.19 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.19.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.19.md)) - - 修复播放无返回状态的问题(针对无直播的流、hls 回放) - - 修复 hls 回放结束时无 stopped 回调的问题 - - 修复 hls 回放开始的 duration 不为 0 的问题 -- 1.2.18 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.18.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.18.md)) - - 修复在 prepare 状态前释放 player 导致的音频仍然会播放的问题 - - 修复 player 状态返回的类型不正确的问题 - - 优化推出时资源释放 -- 1.2.17 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.17.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.17.md)) - - 修复超时时导致的崩溃的问题 -- 1.2.16 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.17.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.16.md)) - - 添加了音频播放器后台播放的支持 - - 添加了音频播放器后台播放任务开始和结束的回调 - - 添加了音视频播放器超时时长的设定 - - 添加了音视频播放器准备的方法 - - 添加了音视频完全停止播放器的方法 - - 修复播放器不可释放的问题 -- 1.2.15 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.15.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.15.md)) - - 修复 AudioPlayer 无法播放带有视频流的 RTMP 流的问题 -- 1.2.14 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.14.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.14.md)) - - 添加 AudioManager -- 1.2.13 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.13.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.13.md)) - - 添加纯音频播放控件 - - 更新参数字段及类型,确保通用类型可以在音频及视频播放器使用 - - 更新类型名称,增加易读性,减少歧义 -- 1.2.12 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.12.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.12.md)) - - 更改 repo 地址 -- 1.2.11 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.11.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.11.md)) - - 添加对应用状态的判断,减少因进入后台通知延时未能及时暂停播放导致的 crash -- 1.2.10 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.10.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.10.md)) - - 添加音频外设更改时的通知 - - 添加音量变更时的通知 - - 添加打进电话等其他事件导致音频中断的通知 -- 1.2.9 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.9.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.9.md)) - - 修复进入后台后崩溃的问题 - - 更新 example 中 player 代码,支持横竖屏旋转操作 -- 1.2.8 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.8.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.8.md)) - - 添加播放进度回调方法 - - 修复 seekTo 后流状态不正确的问题 -- 1.2.7 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.7.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.7.md)) - - 添加播放器状态属性 - - 添加解码器初始化完成后回调 - - 添加播放器状态回调 - - 添加初始化后自动播放参数 -- 1.2.6 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.6.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.6.md)) - - 添加设置播放位置的操作 - - 添加了快进、快退的操作 - - 添加总播放时长的属性 - - 添加获取音量的属性 - - 添加获取当前播放位置的属性 - - 添加静音操作 -- 1.2.5 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.5.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.5.md)) - - 修复与部分其他库头文件冲突的问题 -- 1.2.4 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.4.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.4.md)) - - 添加了 ```PLMovieParameterFrameViewContentMode``` 参数 - - 修复与部分其他库头文件冲突的问题 - - 修复 Player contentMode 无法更改的问题 -- 1.2.3 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.3.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.3.md)) - - 修复初始化占用主线程导致卡顿的问题 - - 修复错误回调无效的问题 -- 1.2.2 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.2.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.2.md)) - - 修复 lib 未更新导致的 crash -- 1.2.1 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.1.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.1.md)) - - 添加 failue 情况下的回调,返回 NSError 对象 - - 移除 PLVideoPlayerViewController,请直接使用 PLVideoPlayerController 进行定制 -- 1.2.0 ([Release Notes](https://github.com/pili-engineering/PLPlayerKit/blob/master/ReleaseNotes/release-notes-1.2.0.md) && [API Diffs](https://github.com/pili-engineering/PLPlayerKit/blob/master/APIDiffs/api-diffs-1.2.0.md)) - - 极大缩小 lib 大小 - - 增加可定制的播放控件 PLVideoPlayerController -- 1.1.2 - - 拆分 Flat lib - - 添加了 x86_64 支持,便于在 iPhone 6 Plus 模拟器下调试使用 -- 1.1.1 - - 对库引用做了些修改 -- 1.1.0 - - 发布 CocoaPods 版本 diff --git a/Example_TuTu/Pods/Pods.xcodeproj/project.pbxproj b/Example_TuTu/Pods/Pods.xcodeproj/project.pbxproj index d5305f0f..73839498 100644 --- a/Example_TuTu/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example_TuTu/Pods/Pods.xcodeproj/project.pbxproj @@ -7,138 +7,138 @@ objects = { /* Begin PBXBuildFile section */ - 00FCAC5BCD9B8CFA2E5948422CD4DDAE /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 02562B809E95BAAB38CF013F36D44D19 /* QNFileRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 026D162622B576A26AF373A66B029492 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 049B460E1DDF110E868627655CE0ADEA /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0663BE59FA130F2E3BFF5C69BA876DB1 /* QNUrlSafeBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 09BF2BDBDD893873FCB34F269A612574 /* HappyDNS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */; }; - 0BED362262BF36B8F775BC5810DD7EDE /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C0ACE468C5A3FC2D6829FF53DBD8479 /* QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1344CB51119D15842FC4D383FEE7A929 /* QNGetAddrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14802D4B61A0203EDC3A8C7570F6E68A /* QNPHAssetResource.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 15C491B54488086CB16B15CB601C9FFC /* QNFile.h in Headers */ = {isa = PBXBuildFile; fileRef = B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15F2517E036D89F20DEC55335BFBFCD8 /* QNAsyncRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 16F9124B427F66CAA1102A766E5666CF /* QNCrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A0C9E85E7788B43EC56BD965B280342 /* QNDes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AECC8954B7B2839370150792D5A9175 /* QNAssessment.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1DDBBAF59891621B45D3F6231D7D1C45 /* QNUrlSafeBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E68AC98F61AB0D5B4464E66DF7E1A2C /* QNHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1EC8595D0E176DB06815789B6F7E35C1 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FF3C6D64DA9D85BD75F8E93DA3E1F7B /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2074CD9320C1A160B046B5560D880930 /* QNResumeUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 241C6F338FFB0EDF2BD15A558486FB50 /* QNResponseInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 250FEC932AE7BCCC71126A5BC5FC7C42 /* QNALAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2649BB0E41BB4BAD1259949A629BAF8C /* QNDnspodFree.h in Headers */ = {isa = PBXBuildFile; fileRef = 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00FCAC5BCD9B8CFA2E5948422CD4DDAE /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 02562B809E95BAAB38CF013F36D44D19 /* QNFileRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 026D162622B576A26AF373A66B029492 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 049B460E1DDF110E868627655CE0ADEA /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0663BE59FA130F2E3BFF5C69BA876DB1 /* QNUrlSafeBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 09BF2BDBDD893873FCB34F269A612574 /* HappyDNS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */; }; + 0BED362262BF36B8F775BC5810DD7EDE /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C0ACE468C5A3FC2D6829FF53DBD8479 /* QNMD5.m in Sources */ = {isa = PBXBuildFile; fileRef = BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1344CB51119D15842FC4D383FEE7A929 /* QNGetAddrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 14802D4B61A0203EDC3A8C7570F6E68A /* QNPHAssetResource.m in Sources */ = {isa = PBXBuildFile; fileRef = A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 15C491B54488086CB16B15CB601C9FFC /* QNFile.h in Headers */ = {isa = PBXBuildFile; fileRef = E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15F2517E036D89F20DEC55335BFBFCD8 /* QNAsyncRun.m in Sources */ = {isa = PBXBuildFile; fileRef = 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 16F9124B427F66CAA1102A766E5666CF /* QNCrc32.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A0C9E85E7788B43EC56BD965B280342 /* QNDes.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AECC8954B7B2839370150792D5A9175 /* QNAssessment.m in Sources */ = {isa = PBXBuildFile; fileRef = 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1DDBBAF59891621B45D3F6231D7D1C45 /* QNUrlSafeBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1E68AC98F61AB0D5B4464E66DF7E1A2C /* QNHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1EC8595D0E176DB06815789B6F7E35C1 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1FF3C6D64DA9D85BD75F8E93DA3E1F7B /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2074CD9320C1A160B046B5560D880930 /* QNResumeUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 241C6F338FFB0EDF2BD15A558486FB50 /* QNResponseInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 250FEC932AE7BCCC71126A5BC5FC7C42 /* QNALAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2649BB0E41BB4BAD1259949A629BAF8C /* QNDnspodFree.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */; settings = {ATTRIBUTES = (Project, ); }; }; 265ED3616AD8DC0516A45DE5473133DD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D31EFA73F770A3C50BFAE023D1E56D3 /* Foundation.framework */; }; - 2A6EEFDF3EE2BBBF63F6063C3F6747A1 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2AD740BC55BB49A3105EF5267B3F9DC8 /* QNDnspodFree.m in Sources */ = {isa = PBXBuildFile; fileRef = FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2AF8E8005BF2A4EBAC866F0A1AF5975C /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B0890F8CC852C7809419D0D23821D1D /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C0F9C4E6CC3087D5D94546FBA6513E9 /* QNFormUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D48D18518EAEE8EA926233AC5A46057 /* QNIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 322066CFEAD1FAD9EF0977D87DE8D189 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3328E089B5039E5EB5551EC892ABF7DF /* QNTxtResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33AEC51DA4D11148AF9E536475F2CA5F /* QNResolvUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A6EEFDF3EE2BBBF63F6063C3F6747A1 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2AD740BC55BB49A3105EF5267B3F9DC8 /* QNDnspodFree.m in Sources */ = {isa = PBXBuildFile; fileRef = DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2AF8E8005BF2A4EBAC866F0A1AF5975C /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2B0890F8CC852C7809419D0D23821D1D /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C0F9C4E6CC3087D5D94546FBA6513E9 /* QNFormUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D48D18518EAEE8EA926233AC5A46057 /* QNIP.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 322066CFEAD1FAD9EF0977D87DE8D189 /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3328E089B5039E5EB5551EC892ABF7DF /* QNTxtResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33AEC51DA4D11148AF9E536475F2CA5F /* QNResolvUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 349A7678AD638D5FE26743AAF165A54A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9F6D3552B6EFBAB01346D230F06C4C /* UIKit.framework */; }; - 350B2B79F0527EF423F8DF12A1FA5F3E /* QNPHAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 363D06F81541C8CD064E08DAD245D156 /* QNHijackingDetectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3B3A35DE77437C50D60F6E6636BB6631 /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3DCCE6E7246B1D1FC8167D92B639C2CC /* QNUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 40219C4D96E119A3653199CEF3C5C450 /* QNAssessment.h in Headers */ = {isa = PBXBuildFile; fileRef = 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 419C3D88CB1D304B89D46EE512AED7C8 /* QNIpModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42CD5772BB4545F545F7A94C66FF71FB /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 459CA9A6EDA7270FEC61D71AB2FEDCB2 /* QNFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 477620AD316AA4F7ACC56A9A883BFEBC /* QNTxtResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4C6F1763E5F5F1392CD7CF9998070CE5 /* QNFormUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4E3EDE82137478F4649D7313AEF21240 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5163B14F23F3EEAB1678923100E6081C /* QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53C911AB9B274B2540AD2FBE82731F05 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 568B27B0C1F04EB676E89581493BF1EB /* QN_GTM_Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 56AB9718B4C6AAFEAE4CD2476CCC7CCB /* QNResumeUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59E460AA853038A50B89ED33CC615FB4 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AB347BF71B8707C0E682BB6A94EC718 /* QNPHAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B3F88A3B323752583AA0CF2998B91F7 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5ECDFAECC97985582B7C166E09F080AD /* QNResponseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5FCBEE07E8F14838E7BE35BDE84F8248 /* QNALAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6041930BC3BF26EBD7A74CB5CD895FC2 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 647BB53535E2777D43379CF1546B1D9F /* QNResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 65C078F38719873860090B8DBA2A63F0 /* QNResolvUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 65F76863EE834CF454D878FAF5AB5322 /* QNCrc32.m in Sources */ = {isa = PBXBuildFile; fileRef = 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 67DC5C9C4163F9CE8393D5F46D10FF83 /* QNSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 690C4FB4A3AD35235501441EBC25E012 /* QNDomain.m in Sources */ = {isa = PBXBuildFile; fileRef = 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6E3A44502F0AFE891FD101AF7DB7D1F2 /* QNSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6F57B85B843098002BA80A58E1EB7321 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 350B2B79F0527EF423F8DF12A1FA5F3E /* QNPHAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 363D06F81541C8CD064E08DAD245D156 /* QNHijackingDetectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B3A35DE77437C50D60F6E6636BB6631 /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = D857932775054CA8606A306D8B486DAD /* QNDomain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3DCCE6E7246B1D1FC8167D92B639C2CC /* QNUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 40219C4D96E119A3653199CEF3C5C450 /* QNAssessment.h in Headers */ = {isa = PBXBuildFile; fileRef = C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 419C3D88CB1D304B89D46EE512AED7C8 /* QNIpModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42CD5772BB4545F545F7A94C66FF71FB /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 459CA9A6EDA7270FEC61D71AB2FEDCB2 /* QNFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 477620AD316AA4F7ACC56A9A883BFEBC /* QNTxtResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4C6F1763E5F5F1392CD7CF9998070CE5 /* QNFormUpload.m in Sources */ = {isa = PBXBuildFile; fileRef = 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4E3EDE82137478F4649D7313AEF21240 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5163B14F23F3EEAB1678923100E6081C /* QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 53C911AB9B274B2540AD2FBE82731F05 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 568B27B0C1F04EB676E89581493BF1EB /* QN_GTM_Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 56AB9718B4C6AAFEAE4CD2476CCC7CCB /* QNResumeUpload.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59E460AA853038A50B89ED33CC615FB4 /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5AB347BF71B8707C0E682BB6A94EC718 /* QNPHAssetFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B3F88A3B323752583AA0CF2998B91F7 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5ECDFAECC97985582B7C166E09F080AD /* QNResponseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 5FCBEE07E8F14838E7BE35BDE84F8248 /* QNALAssetFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6041930BC3BF26EBD7A74CB5CD895FC2 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 647BB53535E2777D43379CF1546B1D9F /* QNResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 65C078F38719873860090B8DBA2A63F0 /* QNResolvUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 65F76863EE834CF454D878FAF5AB5322 /* QNCrc32.m in Sources */ = {isa = PBXBuildFile; fileRef = 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 67DC5C9C4163F9CE8393D5F46D10FF83 /* QNSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = F96B35841728F4B46E5858B487545426 /* QNSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 690C4FB4A3AD35235501441EBC25E012 /* QNDomain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6E3A44502F0AFE891FD101AF7DB7D1F2 /* QNSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6F57B85B843098002BA80A58E1EB7321 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 711C5CB0BE75D40FAE77F5AC5E767AD1 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC8ECD367E3091475FE3967365A7B80C /* MobileCoreServices.framework */; }; - 7157D66DCE09397047A7ECF10F15DCBF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71BBEF3A7FAAF62BBC3308850394D79E /* HappyDNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7357363B10B9D7D41665F1B7828BDA43 /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A6AFE6628651F83B627573CE6FE8F21 /* QNConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7B58477AEE26C4DE1ADC00D5E55F8E5A /* QNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B9B58F35E964A3FF6E44170C7510F8B /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BCCD2A47A71CC7B32F13D17E5A4AE62 /* QNUploadOption.m in Sources */ = {isa = PBXBuildFile; fileRef = 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C31EFB76E24C8E8396C0FAE1F3D342F /* QNHex.m in Sources */ = {isa = PBXBuildFile; fileRef = C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7CB156764F8FE79C2842C73928B505EA /* QNUserAgent.m in Sources */ = {isa = PBXBuildFile; fileRef = 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DBF5314D1135331CEE6E6162E162707 /* QNHijackingDetectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DD55156C1DC460651C71BE38835DFB1 /* QNUploadOption+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FE1C36A12C885ECCD858E05C3685AF5 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81A205A4AFB495999F886BB9EB13E908 /* QNNiuDns.m in Sources */ = {isa = PBXBuildFile; fileRef = AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 83A63F557940A009B9E759E23E4CAA65 /* QNRefresher.h in Headers */ = {isa = PBXBuildFile; fileRef = 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83D119A33337E20B29C565E506258A83 /* QNLruCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A01A000B10510D4424E44781AC03814 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8C06FD17EC723CC183FBB5A387672F48 /* QNHex.h in Headers */ = {isa = PBXBuildFile; fileRef = DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C1552D198ED1137025CD54BF433C83A /* QNDnspodEnterprise.m in Sources */ = {isa = PBXBuildFile; fileRef = F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8E6AC34E2A4F8423CD0DF614136AC676 /* QNResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FD9748C3ED58A0EE65630E95CB18248 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */; }; - 903D7C99FA3000D38BCD8C91C37A4C30 /* QNFileDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 905139824E6A1D7C5968D69179D02FEA /* QNPHAssetResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97963980546ADA0E51993C3CEE793D7A /* QNRefresher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7157D66DCE09397047A7ECF10F15DCBF /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71BBEF3A7FAAF62BBC3308850394D79E /* HappyDNS.h in Headers */ = {isa = PBXBuildFile; fileRef = 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7357363B10B9D7D41665F1B7828BDA43 /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A6AFE6628651F83B627573CE6FE8F21 /* QNConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7B58477AEE26C4DE1ADC00D5E55F8E5A /* QNConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7B9B58F35E964A3FF6E44170C7510F8B /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BCCD2A47A71CC7B32F13D17E5A4AE62 /* QNUploadOption.m in Sources */ = {isa = PBXBuildFile; fileRef = 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7C31EFB76E24C8E8396C0FAE1F3D342F /* QNHex.m in Sources */ = {isa = PBXBuildFile; fileRef = C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7CB156764F8FE79C2842C73928B505EA /* QNUserAgent.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7DBF5314D1135331CEE6E6162E162707 /* QNHijackingDetectWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7DD55156C1DC460651C71BE38835DFB1 /* QNUploadOption+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7FE1C36A12C885ECCD858E05C3685AF5 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81A205A4AFB495999F886BB9EB13E908 /* QNNiuDns.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 83A63F557940A009B9E759E23E4CAA65 /* QNRefresher.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83D119A33337E20B29C565E506258A83 /* QNLruCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A01A000B10510D4424E44781AC03814 /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8C06FD17EC723CC183FBB5A387672F48 /* QNHex.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C1552D198ED1137025CD54BF433C83A /* QNDnspodEnterprise.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8E6AC34E2A4F8423CD0DF614136AC676 /* QNResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FD9748C3ED58A0EE65630E95CB18248 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */; }; + 903D7C99FA3000D38BCD8C91C37A4C30 /* QNFileDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 905139824E6A1D7C5968D69179D02FEA /* QNPHAssetResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97963980546ADA0E51993C3CEE793D7A /* QNRefresher.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC72569656FDE0D985943483747BD /* QNRefresher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; 97A13EB651212D6FC28B81784C63AA45 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F8B2946022455300C6F270F10B82860 /* QuartzCore.framework */; }; - 9B5D721633B82BF8FE44D1A435434DF9 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C84740A73C7B63B807B456C4805729C /* QNLruCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A1811ED36BA3604579E607F3B354DEEB /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A24BAAF3B583B62841356D5F83844B77 /* QNEtag.h in Headers */ = {isa = PBXBuildFile; fileRef = 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3FC444F76F658DBE9D645ED28CA3A9F /* QNUpToken.m in Sources */ = {isa = PBXBuildFile; fileRef = EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A72B151E1A77D43ECB0A57B061BE8C55 /* QN_GTM_Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B5D721633B82BF8FE44D1A435434DF9 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C84740A73C7B63B807B456C4805729C /* QNLruCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A1811ED36BA3604579E607F3B354DEEB /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A24BAAF3B583B62841356D5F83844B77 /* QNEtag.h in Headers */ = {isa = PBXBuildFile; fileRef = FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3FC444F76F658DBE9D645ED28CA3A9F /* QNUpToken.m in Sources */ = {isa = PBXBuildFile; fileRef = A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A72B151E1A77D43ECB0A57B061BE8C55 /* QN_GTM_Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */; settings = {ATTRIBUTES = (Project, ); }; }; A964B233BFF72237CC124B8A06703F97 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB0BFFBD39604FD5121380027C30BCD6 /* ImageIO.framework */; }; - ADB022A853D74C0A9F48BC16D4EA59CF /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B039667FA31A64F29A5638019EF2C9DA /* QNHttpDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3CEB032AD33C2630AFFA6247C6CF072 /* QNIP.m in Sources */ = {isa = PBXBuildFile; fileRef = AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B4BEBC36B586556BFDEDDB9F6D669239 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4BF87B55CEC8C4194226AA6229A0CB6 /* QNHosts.h in Headers */ = {isa = PBXBuildFile; fileRef = 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5BE571A0725C4506001C206FB69C2F7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD0E2AAAB931512989ACFFE8C4938547 /* QNDes.m in Sources */ = {isa = PBXBuildFile; fileRef = E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BD780769CDEB330DA9393897E96D35A7 /* QNUserAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BDB9242EB9D0BB1B63958A70527F0F8C /* QNUploadOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BEFDD2A0B28388F7F78007878829CE51 /* QNAsyncRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0953168C5916BF83D7C7BDE01A2A300 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C377872DFB1866AB37FF5CABDFA1A57D /* QNUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ADB022A853D74C0A9F48BC16D4EA59CF /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B039667FA31A64F29A5638019EF2C9DA /* QNHttpDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3CEB032AD33C2630AFFA6247C6CF072 /* QNIP.m in Sources */ = {isa = PBXBuildFile; fileRef = C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B4BEBC36B586556BFDEDDB9F6D669239 /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4BF87B55CEC8C4194226AA6229A0CB6 /* QNHosts.h in Headers */ = {isa = PBXBuildFile; fileRef = 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5BE571A0725C4506001C206FB69C2F7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD0E2AAAB931512989ACFFE8C4938547 /* QNDes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BD780769CDEB330DA9393897E96D35A7 /* QNUserAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BDB9242EB9D0BB1B63958A70527F0F8C /* QNUploadOption.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BEFDD2A0B28388F7F78007878829CE51 /* QNAsyncRun.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0953168C5916BF83D7C7BDE01A2A300 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C377872DFB1866AB37FF5CABDFA1A57D /* QNUploadManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C3E47E820E015EB5CFEA0BB6561E69DB /* Pods-PLShortVideoKitDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0869A48DAE27D06F7DF24D788C64BE4B /* Pods-PLShortVideoKitDemo-dummy.m */; }; - C8248B3C044FD771E89F30C3DA96D66A /* QNPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8A14D2BA8DFC398A5C49D415C4FF2D9 /* QNDnsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CCCCEF59E0D65D69ACE977750110334D /* QNEtag.m in Sources */ = {isa = PBXBuildFile; fileRef = A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CF3A377055BE34BB715B57D7B62BFA40 /* QNSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D31DBF98F610A1ECEB99E97B850C4AD1 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */; }; - D5C96B0960F013065D15C930193B78BC /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D7BDB9E052EB5EA2EC6AF5A83B488127 /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DB4A1305E55FA9EB74EF834970C99BC9 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DFDBC5D645F420C9D2B3AB50F30D2CD6 /* QNRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E05094412173B5ABBBE114312DD1728A /* QNVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E5375B280150DA5C76A9E9E1B80A60CC /* QNUpToken.h in Headers */ = {isa = PBXBuildFile; fileRef = CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E8D2B06760AD270146CF0C5CB07E2043 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA08B876876ED946C490060937093F88 /* Qiniu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */; }; - EC08F5BD81AFB8570FADDBA294CA8D20 /* QNDnspodEnterprise.h in Headers */ = {isa = PBXBuildFile; fileRef = 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED0CB8C2C60D38AE4219B6D10E2B0C12 /* QNSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEFBFFB976D7097E94CC07DF166CEA02 /* QNFileRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F266EB05CCB89275989DCC9BD5E1298A /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F377AB64B571A2033CFD0EA1F143B0A3 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F4C174778043F9D2D52A4F7F0212C3D7 /* QNIpModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F53B229FD6A996DEECC61BF2883E92D0 /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F66769A190AFA0E48A0B8F106DA93809 /* QNRecorderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCD64586536B2C1974F92ACAF8447ACD /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8248B3C044FD771E89F30C3DA96D66A /* QNPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C8A14D2BA8DFC398A5C49D415C4FF2D9 /* QNDnsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CCCCEF59E0D65D69ACE977750110334D /* QNEtag.m in Sources */ = {isa = PBXBuildFile; fileRef = 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CF3A377055BE34BB715B57D7B62BFA40 /* QNSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D31DBF98F610A1ECEB99E97B850C4AD1 /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */; }; + D5C96B0960F013065D15C930193B78BC /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D7BDB9E052EB5EA2EC6AF5A83B488127 /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DB4A1305E55FA9EB74EF834970C99BC9 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFDBC5D645F420C9D2B3AB50F30D2CD6 /* QNRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E05094412173B5ABBBE114312DD1728A /* QNVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E5375B280150DA5C76A9E9E1B80A60CC /* QNUpToken.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8D2B06760AD270146CF0C5CB07E2043 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA08B876876ED946C490060937093F88 /* Qiniu-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */; }; + EC08F5BD81AFB8570FADDBA294CA8D20 /* QNDnspodEnterprise.h in Headers */ = {isa = PBXBuildFile; fileRef = 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED0CB8C2C60D38AE4219B6D10E2B0C12 /* QNSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEFBFFB976D7097E94CC07DF166CEA02 /* QNFileRecorder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F266EB05CCB89275989DCC9BD5E1298A /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F377AB64B571A2033CFD0EA1F143B0A3 /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F4C174778043F9D2D52A4F7F0212C3D7 /* QNIpModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F53B229FD6A996DEECC61BF2883E92D0 /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F66769A190AFA0E48A0B8F106DA93809 /* QNRecorderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCD64586536B2C1974F92ACAF8447ACD /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE10BA2FAA90290CC46ADF5ECE10308A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D79B4A5D46B50199E9AC518049DF76A /* CoreGraphics.framework */; }; - FF0C1F9D7641219A66B0BD92639FFE5C /* QiniuSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF437AD3B544553B1BFA4AA5BBAF09F8 /* QNNiuDns.h in Headers */ = {isa = PBXBuildFile; fileRef = BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF0C1F9D7641219A66B0BD92639FFE5C /* QiniuSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF437AD3B544553B1BFA4AA5BBAF09F8 /* QNNiuDns.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -180,175 +180,174 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAssessment.h; path = HappyDNS/Assessment/QNAssessment.h; sourceTree = ""; }; - 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QiniuSDK.h; path = QiniuSDK/QiniuSDK.h; sourceTree = ""; }; - 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNTxtResolver.m; path = HappyDNS/Local/QNTxtResolver.m; sourceTree = ""; }; + 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetResource.h; path = QiniuSDK/Common/QNPHAssetResource.h; sourceTree = ""; }; + 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HappyDNS-dummy.m"; sourceTree = ""; }; + 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAssessment.m; path = HappyDNS/Assessment/QNAssessment.m; sourceTree = ""; }; 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = archive.ar; name = libMuseProcessor.a; path = Pod/Library/libMuseProcessor.a; sourceTree = ""; }; 0869A48DAE27D06F7DF24D788C64BE4B /* Pods-PLShortVideoKitDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PLShortVideoKitDemo-dummy.m"; sourceTree = ""; }; - 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileDelegate.h; path = QiniuSDK/Common/QNFileDelegate.h; sourceTree = ""; }; - 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIP.h; path = HappyDNS/Util/QNIP.h; sourceTree = ""; }; 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PLShortVideoKit.framework; path = Pod/Library/PLShortVideoKit.framework; sourceTree = ""; }; - 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAsyncRun.m; path = QiniuSDK/Common/QNAsyncRun.m; sourceTree = ""; }; + 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + 0D75AC56D47DF78EB80A6E2C8579FCAE /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; + 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnsManager.h; path = HappyDNS/Common/QNDnsManager.h; sourceTree = ""; }; + 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUserAgent.m; path = QiniuSDK/Http/QNUserAgent.m; sourceTree = ""; }; 10A9146753D3A7E91C2F1BE6486F66E2 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Qiniu.xcconfig; sourceTree = ""; }; - 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolverDelegate.h; path = HappyDNS/Common/QNResolverDelegate.h; sourceTree = ""; }; - 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRecord.m; path = HappyDNS/Common/QNRecord.m; sourceTree = ""; }; - 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFile.m; path = QiniuSDK/Common/QNFile.m; sourceTree = ""; }; - 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNEtag.h; path = QiniuSDK/Common/QNEtag.h; sourceTree = ""; }; - 21ABEED3DBDEF750695386BAC0B9FE60 /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; - 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodEnterprise.h; path = HappyDNS/Http/QNDnspodEnterprise.h; sourceTree = ""; }; - 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNMD5.h; path = HappyDNS/Util/QNMD5.h; sourceTree = ""; }; - 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIpModel.m; path = HappyDNS/Assessment/QNIpModel.m; sourceTree = ""; }; - 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HappyDNS.h; path = HappyDNS/HappyDNS.h; sourceTree = ""; }; + 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetFile.m; path = QiniuSDK/Common/QNPHAssetFile.m; sourceTree = ""; }; + 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QN_GTM_Base64.h; path = QiniuSDK/Common/QN_GTM_Base64.h; sourceTree = ""; }; + 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNCrc32.m; path = QiniuSDK/Common/QNCrc32.m; sourceTree = ""; }; + 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNTxtResolver.h; path = HappyDNS/Local/QNTxtResolver.h; sourceTree = ""; }; + 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUserAgent.h; path = QiniuSDK/Http/QNUserAgent.h; sourceTree = ""; }; + 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; + 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodFree.h; path = HappyDNS/Http/QNDnspodFree.h; sourceTree = ""; }; + 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDomain.m; path = HappyDNS/Common/QNDomain.m; sourceTree = ""; }; + 236F4B78590EAE9229A551FDBF559772 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; + 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNConfiguration.m; path = QiniuSDK/Storage/QNConfiguration.m; sourceTree = ""; }; + 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 2B58165CEDFED39A8BD707B7870198F7 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; 2D31EFA73F770A3C50BFAE023D1E56D3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; - 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QN_GTM_Base64.m; path = QiniuSDK/Common/QN_GTM_Base64.m; sourceTree = ""; }; 3214B6323CCB28CFA455BB7E275952E4 /* libHappyDNS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHappyDNS.a; path = libHappyDNS.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 3328EAAB2D4415F0E05872C917C01011 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + 33A7D8CFFA796EDD780E52D05F360123 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; + 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRecord.m; path = HappyDNS/Common/QNRecord.m; sourceTree = ""; }; + 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; 367D89C8977A6E6AA6E76C788A58D691 /* Pods-PLShortVideoKitDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PLShortVideoKitDemo-acknowledgements.plist"; sourceTree = ""; }; - 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSessionManager.h; path = QiniuSDK/Http/QNSessionManager.h; sourceTree = ""; }; - 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHijackingDetectWrapper.m; path = HappyDNS/Local/QNHijackingDetectWrapper.m; sourceTree = ""; }; - 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolver.m; path = HappyDNS/Local/QNResolver.m; sourceTree = ""; }; - 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDomain.h; path = HappyDNS/Common/QNDomain.h; sourceTree = ""; }; - 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNCrc32.m; path = QiniuSDK/Common/QNCrc32.m; sourceTree = ""; }; - 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSystem.h; path = QiniuSDK/Common/QNSystem.h; sourceTree = ""; }; - 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnsManager.m; path = HappyDNS/Common/QNDnsManager.m; sourceTree = ""; }; - 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFormUpload.h; path = QiniuSDK/Storage/QNFormUpload.h; sourceTree = ""; }; - 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 469FC77AD477F4EDED62676055D5CDE4 /* Qiniu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Qiniu-prefix.pch"; sourceTree = ""; }; - 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHosts.h; path = HappyDNS/Local/QNHosts.h; sourceTree = ""; }; - 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNVersion.h; path = QiniuSDK/Common/QNVersion.h; sourceTree = ""; }; - 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnsManager.h; path = HappyDNS/Common/QNDnsManager.h; sourceTree = ""; }; - 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetFile.m; path = QiniuSDK/Common/QNPHAssetFile.m; sourceTree = ""; }; - 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolver.h; path = HappyDNS/Local/QNResolver.h; sourceTree = ""; }; - 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResumeUpload.m; path = QiniuSDK/Storage/QNResumeUpload.m; sourceTree = ""; }; - 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUrlSafeBase64.h; path = QiniuSDK/Common/QNUrlSafeBase64.h; sourceTree = ""; }; + 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHosts.h; path = HappyDNS/Local/QNHosts.h; sourceTree = ""; }; + 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIP.h; path = HappyDNS/Util/QNIP.h; sourceTree = ""; }; + 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNALAssetFile.h; path = QiniuSDK/Common/QNALAssetFile.h; sourceTree = ""; }; + 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNALAssetFile.m; path = QiniuSDK/Common/QNALAssetFile.m; sourceTree = ""; }; + 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRefresher.h; path = HappyDNS/QNRefresher.h; sourceTree = ""; }; + 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHijackingDetectWrapper.m; path = HappyDNS/Local/QNHijackingDetectWrapper.m; sourceTree = ""; }; + 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecorderDelegate.h; path = QiniuSDK/Recorder/QNRecorderDelegate.h; sourceTree = ""; }; + 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResponseInfo.h; path = QiniuSDK/Http/QNResponseInfo.h; sourceTree = ""; }; + 467CC72569656FDE0D985943483747BD /* QNRefresher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRefresher.m; path = HappyDNS/QNRefresher.m; sourceTree = ""; }; + 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHttpDelegate.h; path = QiniuSDK/Http/QNHttpDelegate.h; sourceTree = ""; }; + 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadOption.m; path = QiniuSDK/Storage/QNUploadOption.m; sourceTree = ""; }; + 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUrlSafeBase64.h; path = QiniuSDK/Common/QNUrlSafeBase64.h; sourceTree = ""; }; + 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFile.m; path = QiniuSDK/Common/QNFile.m; sourceTree = ""; }; + 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNetworkInfo.m; path = HappyDNS/Common/QNNetworkInfo.m; sourceTree = ""; }; + 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; + 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNVersion.h; path = QiniuSDK/Common/QNVersion.h; sourceTree = ""; }; + 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodEnterprise.h; path = HappyDNS/Http/QNDnspodEnterprise.h; sourceTree = ""; }; + 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIpModel.h; path = HappyDNS/Assessment/QNIpModel.h; sourceTree = ""; }; 565D99E1EFF1D1AF888A143839705DAE /* Pods-PLShortVideoKitDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PLShortVideoKitDemo-acknowledgements.markdown"; sourceTree = ""; }; - 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadOption.m; path = QiniuSDK/Storage/QNUploadOption.m; sourceTree = ""; }; + 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; 5A16161D246ACB5C4C2DDC66B568CA79 /* PLShortVideoKit.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = PLShortVideoKit.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResumeUpload.h; path = QiniuSDK/Storage/QNResumeUpload.h; sourceTree = ""; }; - 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNIpModel.h; path = HappyDNS/Assessment/QNIpModel.h; sourceTree = ""; }; - 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNRefresher.m; path = HappyDNS/QNRefresher.m; sourceTree = ""; }; - 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolvUtil.h; path = HappyDNS/Local/QNResolvUtil.h; sourceTree = ""; }; - 5E52E9B9ED55092F70D29C243B951944 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; - 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHttpDelegate.h; path = QiniuSDK/Http/QNHttpDelegate.h; sourceTree = ""; }; + 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadOption.h; path = QiniuSDK/Storage/QNUploadOption.h; sourceTree = ""; }; + 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSessionManager.m; path = QiniuSDK/Http/QNSessionManager.m; sourceTree = ""; }; + 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFileRecorder.m; path = QiniuSDK/Recorder/QNFileRecorder.m; sourceTree = ""; }; 5F8B2946022455300C6F270F10B82860 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNTxtResolver.h; path = HappyDNS/Local/QNTxtResolver.h; sourceTree = ""; }; - 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNGetAddrInfo.h; path = HappyDNS/Util/QNGetAddrInfo.h; sourceTree = ""; }; - 640EC3C21264359303413EFEAC49C5FC /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; - 66D29754CB250301ABADAFD50ACA2D7A /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; - 69667934F740E4F5406EFED77B0227FB /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; + 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + 63C2A276D28472EAAFB8A0C665E148FB /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPipeline.m; path = QiniuSDK/BigData/QNPipeline.m; sourceTree = ""; }; + 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFormUpload.m; path = QiniuSDK/Storage/QNFormUpload.m; sourceTree = ""; }; 6B0A21A8CB6D340933300E61D9571C01 /* Pods-PLShortVideoKitDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PLShortVideoKitDemo.release.xcconfig"; sourceTree = ""; }; - 6B68CE250D8A73145B26CDCC7D75DC18 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 6BCEA0B4E2FCBD2E7A8A5052BA4BDA14 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; - 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHijackingDetectWrapper.h; path = HappyDNS/Local/QNHijackingDetectWrapper.h; sourceTree = ""; }; 6D79B4A5D46B50199E9AC518049DF76A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QN_GTM_Base64.h; path = QiniuSDK/Common/QN_GTM_Base64.h; sourceTree = ""; }; - 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "QNUploadOption+Private.h"; path = "QiniuSDK/Storage/QNUploadOption+Private.h"; sourceTree = ""; }; - 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAsyncRun.h; path = QiniuSDK/Common/QNAsyncRun.h; sourceTree = ""; }; - 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUserAgent.m; path = QiniuSDK/Http/QNUserAgent.m; sourceTree = ""; }; - 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUserAgent.h; path = QiniuSDK/Http/QNUserAgent.h; sourceTree = ""; }; - 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDnspodFree.h; path = HappyDNS/Http/QNDnspodFree.h; sourceTree = ""; }; - 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDomain.m; path = HappyDNS/Common/QNDomain.m; sourceTree = ""; }; - 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNLruCache.m; path = HappyDNS/Common/QNLruCache.m; sourceTree = ""; }; - 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNLruCache.h; path = HappyDNS/Common/QNLruCache.h; sourceTree = ""; }; - 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAssessment.m; path = HappyDNS/Assessment/QNAssessment.m; sourceTree = ""; }; - 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HappyDNS.xcconfig; sourceTree = ""; }; - 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecorderDelegate.h; path = QiniuSDK/Recorder/QNRecorderDelegate.h; sourceTree = ""; }; + 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileRecorder.h; path = QiniuSDK/Recorder/QNFileRecorder.h; sourceTree = ""; }; + 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResumeUpload.m; path = QiniuSDK/Storage/QNResumeUpload.m; sourceTree = ""; }; + 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnsManager.m; path = HappyDNS/Common/QNDnsManager.m; sourceTree = ""; }; + 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNetworkInfo.h; path = HappyDNS/Common/QNNetworkInfo.h; sourceTree = ""; }; + 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResponseInfo.m; path = QiniuSDK/Http/QNResponseInfo.m; sourceTree = ""; }; + 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNiuDns.m; path = HappyDNS/Http/QNNiuDns.m; sourceTree = ""; }; + 7CF0040A5A0848F301192E2425B1FE15 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDes.h; path = HappyDNS/Util/QNDes.h; sourceTree = ""; }; + 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileDelegate.h; path = QiniuSDK/Common/QNFileDelegate.h; sourceTree = ""; }; + 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HappyDNS.xcconfig; sourceTree = ""; }; + 82F6A9B14C326E2504B27122A838E69E /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; + 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; + 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNLruCache.m; path = HappyDNS/Common/QNLruCache.m; sourceTree = ""; }; 8C491A254E6BED3C367126E111253351 /* Pods-PLShortVideoKitDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PLShortVideoKitDemo.debug.xcconfig"; sourceTree = ""; }; - 901F38720095621C142CE338704B59A9 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; - 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolvUtil.m; path = HappyDNS/Local/QNResolvUtil.m; sourceTree = ""; }; - 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSystem.m; path = QiniuSDK/Common/QNSystem.m; sourceTree = ""; }; + 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHosts.m; path = HappyDNS/Local/QNHosts.m; sourceTree = ""; }; + 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNTxtResolver.m; path = HappyDNS/Local/QNTxtResolver.m; sourceTree = ""; }; + 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HappyDNS.h; path = HappyDNS/HappyDNS.h; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHijackingDetectWrapper.h; path = HappyDNS/Local/QNHijackingDetectWrapper.h; sourceTree = ""; }; - 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QN_GTM_Base64.m; path = QiniuSDK/Common/QN_GTM_Base64.m; sourceTree = ""; }; - 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDes.h; path = HappyDNS/Util/QNDes.h; sourceTree = ""; }; - 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRefresher.h; path = HappyDNS/QNRefresher.h; sourceTree = ""; }; - 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Qiniu-dummy.m"; sourceTree = ""; }; - 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNMD5.m; path = HappyDNS/Util/QNMD5.m; sourceTree = ""; }; - 9A5BFB1A35BC8E5458248B8BC6391206 /* HappyDNS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HappyDNS-prefix.pch"; sourceTree = ""; }; - 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadOption.h; path = QiniuSDK/Storage/QNUploadOption.h; sourceTree = ""; }; - 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetResource.h; path = QiniuSDK/Common/QNPHAssetResource.h; sourceTree = ""; }; - A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSessionManager.m; path = QiniuSDK/Http/QNSessionManager.m; sourceTree = ""; }; - A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUrlSafeBase64.m; path = QiniuSDK/Common/QNUrlSafeBase64.m; sourceTree = ""; }; + 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNEtag.m; path = QiniuSDK/Common/QNEtag.m; sourceTree = ""; }; + 943E8DB192B27700E2F110BF27F67BF7 /* Qiniu-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Qiniu-prefix.pch"; sourceTree = ""; }; + 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNAsyncRun.m; path = QiniuSDK/Common/QNAsyncRun.m; sourceTree = ""; }; + 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFormUpload.h; path = QiniuSDK/Storage/QNFormUpload.h; sourceTree = ""; }; + 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolver.m; path = HappyDNS/Local/QNResolver.m; sourceTree = ""; }; + 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDes.m; path = HappyDNS/Util/QNDes.m; sourceTree = ""; }; + 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodEnterprise.m; path = HappyDNS/Http/QNDnspodEnterprise.m; sourceTree = ""; }; + 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolvUtil.h; path = HappyDNS/Local/QNResolvUtil.h; sourceTree = ""; }; + 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolver.h; path = HappyDNS/Local/QNResolver.h; sourceTree = ""; }; + 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetResource.m; path = QiniuSDK/Common/QNPHAssetResource.m; sourceTree = ""; }; + A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUpToken.m; path = QiniuSDK/Storage/QNUpToken.m; sourceTree = ""; }; A77C94B69B20DCCE43853E0A7B34A052 /* Pods-PLShortVideoKitDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PLShortVideoKitDemo-frameworks.sh"; sourceTree = ""; }; - A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNEtag.m; path = QiniuSDK/Common/QNEtag.m; sourceTree = ""; }; - A8D9CFF9323309A324822CB70C172FC0 /* PLPlayerKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PLPlayerKit.framework; path = Pod/Library/PLPlayerKit.framework; sourceTree = ""; }; + A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResolvUtil.m; path = HappyDNS/Local/QNResolvUtil.m; sourceTree = ""; }; + A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + AA339544A7A4B8C938206084587B3571 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; + AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecord.h; path = HappyDNS/Common/QNRecord.h; sourceTree = ""; }; AB895406B93DD8B56B9239125F3801C0 /* libPods-PLShortVideoKitDemo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-PLShortVideoKitDemo.a"; path = "libPods-PLShortVideoKitDemo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNALAssetFile.h; path = QiniuSDK/Common/QNALAssetFile.h; sourceTree = ""; }; - AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIP.m; path = HappyDNS/Util/QNIP.m; sourceTree = ""; }; - AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNRecord.h; path = HappyDNS/Common/QNRecord.h; sourceTree = ""; }; - AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNiuDns.m; path = HappyDNS/Http/QNNiuDns.m; sourceTree = ""; }; - B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFile.h; path = QiniuSDK/Common/QNFile.h; sourceTree = ""; }; - B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNALAssetFile.m; path = QiniuSDK/Common/QNALAssetFile.m; sourceTree = ""; }; + ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPipeline.h; path = QiniuSDK/BigData/QNPipeline.h; sourceTree = ""; }; + BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNMD5.m; path = HappyDNS/Util/QNMD5.m; sourceTree = ""; }; + BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNMD5.h; path = HappyDNS/Util/QNMD5.h; sourceTree = ""; }; BB985C8EB70C15B125D3AA515DCC9AD6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNiuDns.h; path = HappyDNS/Http/QNNiuDns.h; sourceTree = ""; }; - C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNetworkInfo.h; path = HappyDNS/Common/QNNetworkInfo.h; sourceTree = ""; }; - C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHex.m; path = HappyDNS/Util/QNHex.m; sourceTree = ""; }; - C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResponseInfo.h; path = QiniuSDK/Http/QNResponseInfo.h; sourceTree = ""; }; - C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPHAssetResource.m; path = QiniuSDK/Common/QNPHAssetResource.m; sourceTree = ""; }; - C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetFile.h; path = QiniuSDK/Common/QNPHAssetFile.h; sourceTree = ""; }; + BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Qiniu-dummy.m"; sourceTree = ""; }; + C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAssessment.h; path = HappyDNS/Assessment/QNAssessment.h; sourceTree = ""; }; + C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIP.m; path = HappyDNS/Util/QNIP.m; sourceTree = ""; }; + C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHex.m; path = HappyDNS/Util/QNHex.m; sourceTree = ""; }; + C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNLruCache.h; path = HappyDNS/Common/QNLruCache.h; sourceTree = ""; }; CB0BFFBD39604FD5121380027C30BCD6 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNConfiguration.h; path = QiniuSDK/Storage/QNConfiguration.h; sourceTree = ""; }; CCD0B8F2AF7F9EBE995C64B1B09FA35A /* libFLAnimatedImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFLAnimatedImage.a; path = libFLAnimatedImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResumeUpload.h; path = QiniuSDK/Storage/QNResumeUpload.h; sourceTree = ""; }; CDAF0D1FDC0E091388EF39A97F607DA9 /* libQiniu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libQiniu.a; path = libQiniu.a; sourceTree = BUILT_PRODUCTS_DIR; }; CE9F6D3552B6EFBAB01346D230F06C4C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUpToken.h; path = QiniuSDK/Storage/QNUpToken.h; sourceTree = ""; }; - D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.xcconfig; sourceTree = ""; }; - D41B983780B7DD01BFCEDC68E6D51909 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; - D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadManager.h; path = QiniuSDK/Storage/QNUploadManager.h; sourceTree = ""; }; - D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNConfiguration.h; path = QiniuSDK/Storage/QNConfiguration.h; sourceTree = ""; }; - D90E77729108EB4B3B82164A19B911BC /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHex.h; path = HappyDNS/Util/QNHex.h; sourceTree = ""; }; + CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QiniuSDK.h; path = QiniuSDK/QiniuSDK.h; sourceTree = ""; }; + D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPHAssetFile.h; path = QiniuSDK/Common/QNPHAssetFile.h; sourceTree = ""; }; + D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNHex.h; path = HappyDNS/Util/QNHex.h; sourceTree = ""; }; + D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUpToken.h; path = QiniuSDK/Storage/QNUpToken.h; sourceTree = ""; }; + D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "QNUploadOption+Private.h"; path = "QiniuSDK/Storage/QNUploadOption+Private.h"; sourceTree = ""; }; + D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Qiniu.xcconfig; sourceTree = ""; }; + D857932775054CA8606A306D8B486DAD /* QNDomain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNDomain.h; path = HappyDNS/Common/QNDomain.h; sourceTree = ""; }; + D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; DC8ECD367E3091475FE3967365A7B80C /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadManager.m; path = QiniuSDK/Storage/QNUploadManager.m; sourceTree = ""; }; - DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNNetworkInfo.m; path = HappyDNS/Common/QNNetworkInfo.m; sourceTree = ""; }; - E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDes.m; path = HappyDNS/Util/QNDes.m; sourceTree = ""; }; - E12B0EB5CD70411F38328A7B3A7A9C7F /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; - E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNGetAddrInfo.m; path = HappyDNS/Util/QNGetAddrInfo.m; sourceTree = ""; }; + DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + DD64CDB74B4DBBF36E70CB6DA94F6AFC /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; + DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUploadManager.m; path = QiniuSDK/Storage/QNUploadManager.m; sourceTree = ""; }; + DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodFree.m; path = HappyDNS/Http/QNDnspodFree.m; sourceTree = ""; }; + E1740E31A8E1CE76D0B4383F4874DEC4 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; + E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/FLAnimatedImage.h; sourceTree = ""; }; + E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFile.h; path = QiniuSDK/Common/QNFile.h; sourceTree = ""; }; E5A588A32127ACCF50D2B9EB58A04815 /* Pods-PLShortVideoKitDemo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-PLShortVideoKitDemo-resources.sh"; sourceTree = ""; }; - E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNResponseInfo.m; path = QiniuSDK/Http/QNResponseInfo.m; sourceTree = ""; }; - E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFileRecorder.m; path = QiniuSDK/Recorder/QNFileRecorder.m; sourceTree = ""; }; - EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/FLAnimatedImageView.h; sourceTree = ""; }; - EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUpToken.m; path = QiniuSDK/Storage/QNUpToken.m; sourceTree = ""; }; - EE8D3F9888CA8DAB2B67FAF266520B9F /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodEnterprise.m; path = HappyDNS/Http/QNDnspodEnterprise.m; sourceTree = ""; }; - F2B4BDD8697134042592216235BF7F67 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; - F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNHosts.m; path = HappyDNS/Local/QNHosts.m; sourceTree = ""; }; - F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNFileRecorder.h; path = QiniuSDK/Recorder/QNFileRecorder.h; sourceTree = ""; }; - F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNPipeline.m; path = QiniuSDK/BigData/QNPipeline.m; sourceTree = ""; }; - F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HappyDNS-dummy.m"; sourceTree = ""; }; - F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNPipeline.h; path = QiniuSDK/BigData/QNPipeline.h; sourceTree = ""; }; - F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNFormUpload.m; path = QiniuSDK/Storage/QNFormUpload.m; sourceTree = ""; }; - FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNConfiguration.m; path = QiniuSDK/Storage/QNConfiguration.m; sourceTree = ""; }; - FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNDnspodFree.m; path = HappyDNS/Http/QNDnspodFree.m; sourceTree = ""; }; + E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNSystem.m; path = QiniuSDK/Common/QNSystem.m; sourceTree = ""; }; + E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNGetAddrInfo.m; path = HappyDNS/Util/QNGetAddrInfo.m; sourceTree = ""; }; + E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNAsyncRun.h; path = QiniuSDK/Common/QNAsyncRun.h; sourceTree = ""; }; + EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNCrc32.h; path = QiniuSDK/Common/QNCrc32.h; sourceTree = ""; }; + F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNGetAddrInfo.h; path = HappyDNS/Util/QNGetAddrInfo.h; sourceTree = ""; }; + F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNUrlSafeBase64.m; path = QiniuSDK/Common/QNUrlSafeBase64.m; sourceTree = ""; }; + F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNResolverDelegate.h; path = HappyDNS/Common/QNResolverDelegate.h; sourceTree = ""; }; + F5424E759CF83153A748AD64CCF0B1EE /* HappyDNS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HappyDNS-prefix.pch"; sourceTree = ""; }; + F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNUploadManager.h; path = QiniuSDK/Storage/QNUploadManager.h; sourceTree = ""; }; + F5AC90D519CD2525287A2C007C226EBB /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; + F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNNiuDns.h; path = HappyDNS/Http/QNNiuDns.h; sourceTree = ""; }; + F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + F96B35841728F4B46E5858B487545426 /* QNSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSystem.h; path = QiniuSDK/Common/QNSystem.h; sourceTree = ""; }; FDF7DFD464D5584F6B546997C53E396D /* libMasonry.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMasonry.a; path = libMasonry.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNCrc32.h; path = QiniuSDK/Common/QNCrc32.h; sourceTree = ""; }; - FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.xcconfig; sourceTree = ""; }; + FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNEtag.h; path = QiniuSDK/Common/QNEtag.h; sourceTree = ""; }; + FEC54D8B52CE0E6BDDA832458CAAE6F1 /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; + FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QNSessionManager.h; path = QiniuSDK/Http/QNSessionManager.h; sourceTree = ""; }; + FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QNIpModel.m; path = HappyDNS/Assessment/QNIpModel.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -406,25 +405,6 @@ name = Pod; sourceTree = ""; }; - 0844A41A23F2FDB15E4E9C1743A09C85 /* Frameworks */ = { - isa = PBXGroup; - children = ( - EE8D3F9888CA8DAB2B67FAF266520B9F /* Crashlytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 09568E540F357ADA2B7DF22D424F47A8 /* Fabric */ = { - isa = PBXGroup; - children = ( - 5E52E9B9ED55092F70D29C243B951944 /* FABAttributes.h */, - 69667934F740E4F5406EFED77B0227FB /* Fabric.h */, - 7846B3172BDB0A653227BB90AD3ECE90 /* Frameworks */, - ); - name = Fabric; - path = Fabric; - sourceTree = ""; - }; 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -441,104 +421,15 @@ name = "Targets Support Files"; sourceTree = ""; }; - 25AC3CB1209F7DAB005D85C2BF9848EF /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - 30707079C9B5E2B6B2C4E87C733F5E1B /* FLAnimatedImage.h */, - F8AC7A17821FA7B2FEA0EC106D923F16 /* FLAnimatedImage.m */, - EB35C1891EDAC64E31B3FC6F3131691F /* FLAnimatedImageView.h */, - 9B787192CDD32EA9D0B14A148C47D3FB /* FLAnimatedImageView.m */, - E594127D79566BE6E2A0749DB7A5F483 /* Support Files */, - ); - name = FLAnimatedImage; - path = FLAnimatedImage; - sourceTree = ""; - }; - 34514E94A88801F157BAAECEEE91D58D /* HappyDNS */ = { - isa = PBXGroup; - children = ( - 2C60217C7E395D6E77B3996E49EC011A /* HappyDNS.h */, - 01546B0B10D6FF91B39BA45A66425289 /* QNAssessment.h */, - 88B26D9B0A66FCFF73C36C1CE168FC5D /* QNAssessment.m */, - 9685A69FDA4DA1DB607B886E13BF7BD9 /* QNDes.h */, - E0436D83DA6407A4F7EB329CDFCA5E25 /* QNDes.m */, - 4C2029B213D42F7BB097C1FF3E54BD50 /* QNDnsManager.h */, - 447FF32B3CE41090B142D56B490F9772 /* QNDnsManager.m */, - 260BDE61C00B881E5C0BD18C780BDCB3 /* QNDnspodEnterprise.h */, - F1743B4C0F729077A16196D1BC0CB88C /* QNDnspodEnterprise.m */, - 76E589F53D0902995C829F7B3176F242 /* QNDnspodFree.h */, - FC26A9BDA33F3C3EED07C4EE02B222E3 /* QNDnspodFree.m */, - 3E3223EE4A745CDA022C1D26794A22A0 /* QNDomain.h */, - 795ACA79C5B98F519DDFEE0A41136E03 /* QNDomain.m */, - 62BF2C12CC3156F483054C98DC7F9154 /* QNGetAddrInfo.h */, - E587FAD2784D0D7998DCB09F43697365 /* QNGetAddrInfo.m */, - DBBBDB44749489BC34A6A08D32BD1136 /* QNHex.h */, - C097D140E4007EDCB3B162DA633FB6BE /* QNHex.m */, - 94B890985182758331803CB92DF74253 /* QNHijackingDetectWrapper.h */, - 37DA20C836C8AA00DBC52F3103326752 /* QNHijackingDetectWrapper.m */, - 4725FB39B0F99D52C095E1C35398389F /* QNHosts.h */, - F4F7B2D3F46C37052A40C69F4C7E70F2 /* QNHosts.m */, - 09990885C460E699E0B5EBEEB73BC32C /* QNIP.h */, - AE4E9AC16B9641C08A2F53638C0D02C8 /* QNIP.m */, - 5B77A283CAC28957DC380D76EF246860 /* QNIpModel.h */, - 2BA43BA68D5D58A5545A8BDC7976A5AE /* QNIpModel.m */, - 7BC73A64610796DA988CD553BA840292 /* QNLruCache.h */, - 7A3A4B3FC4EE39EB0F05723F23D97F71 /* QNLruCache.m */, - 29C7508A409CA56910F60658F7B0B418 /* QNMD5.h */, - 9A5841FA899CCEFDC4112D918C30C67F /* QNMD5.m */, - C02572A0931374A270FF2330ABBC52AA /* QNNetworkInfo.h */, - DE635033233F631FE7927DF2E36DD10A /* QNNetworkInfo.m */, - BD4B428272D33E779169B4DC0040DBF4 /* QNNiuDns.h */, - AECCDE6ABF7BEB4A7037C97243A3B1EF /* QNNiuDns.m */, - AE5C0390C788C929CC456FB5DA2DED83 /* QNRecord.h */, - 182977892954E6DA72A0E1E68B60BE38 /* QNRecord.m */, - 991CF0B1F6C98A87F60AB592DEA81856 /* QNRefresher.h */, - 5B94A5B9AA3A510D795747D1B70A1485 /* QNRefresher.m */, - 521D081A03DD3A3A73A14108D06CA4B7 /* QNResolver.h */, - 3A3D95CCD87096C4B519ADBEA9E98D76 /* QNResolver.m */, - 110BD3ED88B3CC632906C6008179E9D9 /* QNResolverDelegate.h */, - 5E4206E998B5E336F71314F0D53154C3 /* QNResolvUtil.h */, - 90D8381B4141DAE8B5CD24348C5DAFDB /* QNResolvUtil.m */, - 60226DFCBAAAC8E97CD926A61A25B831 /* QNTxtResolver.h */, - 071E8C2544F70102260785E892C8CA81 /* QNTxtResolver.m */, - 8F53A8492349338BDC648C874A0FC41C /* Support Files */, - ); - name = HappyDNS; - path = HappyDNS; - sourceTree = ""; - }; - 3505BF51248F9AC70038BFE7DA763D10 /* Masonry */ = { + 364A272B9D246B6829811C62EF723565 /* Support Files */ = { isa = PBXGroup; children = ( - DDED14BBE6BE0E4BDC2F3D32F4C6A673 /* MASCompositeConstraint.h */, - 4889726FDAAA9ED53B1FF69F8EDB5FAA /* MASCompositeConstraint.m */, - E1E592117C4524C61F45BFA73930D2F2 /* MASConstraint.h */, - 070C18A30D0141DB1B38FA58290528F6 /* MASConstraint.m */, - 458C7C05FAFF2BA077F12304F67615BD /* MASConstraint+Private.h */, - 7FD9D7F7B630AC9EE1EB16B7765AAE42 /* MASConstraintMaker.h */, - 6CA4FB7DC8B8ED2527ED8A36E8C69601 /* MASConstraintMaker.m */, - D0056FE7677CFA3E89F0ABCE289EFB5A /* MASLayoutConstraint.h */, - 7918588C69755BC3C5FAA77BF1ABE233 /* MASLayoutConstraint.m */, - E00D9FB6061E593984E8DBB6CABE549D /* Masonry.h */, - 08794FA7091A0EF7FFDD4F2BDCA263C3 /* MASUtilities.h */, - 3145B787F3AFAE23471F07EFB94EB16F /* MASViewAttribute.h */, - 7E2EAA8101B1DA9E33A6D72A127485FA /* MASViewAttribute.m */, - AB9EC40BCD7E692B811633092449F6F1 /* MASViewConstraint.h */, - 9F7EFD4E1023A1FB952E56AFCE31197D /* MASViewConstraint.m */, - 3F4B7653C4D944712D6456CA407DF6EF /* NSArray+MASAdditions.h */, - 9742C4F185B13DD131FD1D7071C00161 /* NSArray+MASAdditions.m */, - E66238F72D3FFD03B02F43457F6BE428 /* NSArray+MASShorthandAdditions.h */, - B25CAF455011120DBCAA9280F3CAAFBF /* NSLayoutConstraint+MASDebugAdditions.h */, - 23AE56DBAB5E0FC7F2D6B4FF784D478E /* NSLayoutConstraint+MASDebugAdditions.m */, - C2800630E1084C5BE9A9B9877CE51E62 /* View+MASAdditions.h */, - 39D0B8CBA8A2499046A6EB0A44778A60 /* View+MASAdditions.m */, - A45038D75466E9AAF36D256F5227550D /* View+MASShorthandAdditions.h */, - 12D9B6ADEDA0579AFD8FCB4736DE2681 /* ViewController+MASAdditions.h */, - 2A4314C652603395782CDA8EFCD2CE5C /* ViewController+MASAdditions.m */, - D5230C5A16E27F8A5DBB6FDEE17196D9 /* Support Files */, + 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */, + 05D176AE37DBE76577F68AC64A2523A4 /* HappyDNS-dummy.m */, + F5424E759CF83153A748AD64CCF0B1EE /* HappyDNS-prefix.pch */, ); - name = Masonry; - path = Masonry; + name = "Support Files"; + path = "../Target Support Files/HappyDNS"; sourceTree = ""; }; 3CD0DD6F6BE769DD320926D044D37D8B /* iOS */ = { @@ -554,13 +445,51 @@ name = iOS; sourceTree = ""; }; - 3EF29DE01EE58680C018C40B3E797871 /* PLPlayerKit */ = { + 3EF168F914BC1CB6CBB4EB1BE63DF0CE /* Masonry */ = { isa = PBXGroup; children = ( - BF56137A8345A1E155936A74D515E76B /* iphoneos */, + CFEA3EF1727472E4E2924BB0C21CBA70 /* MASCompositeConstraint.h */, + E18AF3829235E70EE209F470972DCBFD /* MASCompositeConstraint.m */, + 0D0F098BD729B1EAC261DF11B14F6A73 /* MASConstraint.h */, + CF9A34B50E7EE21F4AFC273A2D5631CD /* MASConstraint.m */, + 0DFE945289987FA560F4C55282F80A4F /* MASConstraint+Private.h */, + 621E5BC1B21D569FEFBDB39AF6D2D8EC /* MASConstraintMaker.h */, + E802F7E2CE7A4D6D546EDDFF9B2450CF /* MASConstraintMaker.m */, + C518616875B607AB36324791C1F0F3F6 /* MASLayoutConstraint.h */, + 17653E88F912E9E23F969F5D1F2A47E4 /* MASLayoutConstraint.m */, + ADCF1CBC8C34E76D364F1EB4CD2418A2 /* Masonry.h */, + 9E622D5F95A1708E2E88716BB6D24036 /* MASUtilities.h */, + 59AF2181EA02011F146367C67F624B5F /* MASViewAttribute.h */, + 4BC4ECA6440C116DD1CF31F03BE819CB /* MASViewAttribute.m */, + D91E52CC79DC2603ECC5A3708C56D1DF /* MASViewConstraint.h */, + A91A76DA01CC10FDF78534BD61085842 /* MASViewConstraint.m */, + DCC15BBA4E8570905BE024A29DD940DA /* NSArray+MASAdditions.h */, + A01D8BE48834CCF64912F073FA4E5083 /* NSArray+MASAdditions.m */, + 4446F775295526380AB05F2C676B40E0 /* NSArray+MASShorthandAdditions.h */, + 29B67FE8EF87C11F82C301204EE6AF55 /* NSLayoutConstraint+MASDebugAdditions.h */, + F8B94B03CC34EB11E040353F3C8F4571 /* NSLayoutConstraint+MASDebugAdditions.m */, + 630337F493AA175B302B92F8BF671F18 /* View+MASAdditions.h */, + 3C2AFF78ECD3DFE2885C784AE3E8B449 /* View+MASAdditions.m */, + 33BF8304A44110E0275EAABB71EDC185 /* View+MASShorthandAdditions.h */, + 359A016E73D5FF0E65B48AD505F24D4A /* ViewController+MASAdditions.h */, + C117D4ABC2F2BFBAFC6FE81A27157A94 /* ViewController+MASAdditions.m */, + 7CC1F96787ABB144725E2ED8CC6D5A1A /* Support Files */, ); - name = PLPlayerKit; - path = PLPlayerKit; + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + 41A019390E22F290607207EF316A9CAD /* FLAnimatedImage */ = { + isa = PBXGroup; + children = ( + E29E9D76D4B52416C3E20BD6D7706A7A /* FLAnimatedImage.h */, + 94F5116CF8A7715B90BBE23B6AA60C48 /* FLAnimatedImage.m */, + 83F50A816E7325099715EA09320EF231 /* FLAnimatedImageView.h */, + 873F47DF018F6BD77E08668E28BB9B72 /* FLAnimatedImageView.m */, + 62D8176F94FE0A95A4A675467D14E2B1 /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; sourceTree = ""; }; 4288747A0075320E63F4367486FC97F6 /* Pods-PLShortVideoKitDemo */ = { @@ -578,6 +507,14 @@ path = "Target Support Files/Pods-PLShortVideoKitDemo"; sourceTree = ""; }; + 4D9E06AED990043829FB8AC9F08F445C /* Frameworks */ = { + isa = PBXGroup; + children = ( + F5AC90D519CD2525287A2C007C226EBB /* Crashlytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 56AAF8433E98189615B2345C3972DB3C /* Development Pods */ = { isa = PBXGroup; children = ( @@ -586,18 +523,15 @@ name = "Development Pods"; sourceTree = ""; }; - 577722115C48D9752144B425FAC61C65 /* Pods */ = { + 62D8176F94FE0A95A4A675467D14E2B1 /* Support Files */ = { isa = PBXGroup; children = ( - FF147483AE5152810C32F785AF66AC2F /* Crashlytics */, - 09568E540F357ADA2B7DF22D424F47A8 /* Fabric */, - 25AC3CB1209F7DAB005D85C2BF9848EF /* FLAnimatedImage */, - 34514E94A88801F157BAAECEEE91D58D /* HappyDNS */, - 3505BF51248F9AC70038BFE7DA763D10 /* Masonry */, - 3EF29DE01EE58680C018C40B3E797871 /* PLPlayerKit */, - CECDB31B4057BF07F8A811F59F907A16 /* Qiniu */, + 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */, + 0D2F1071DEF6B48EB093F6D7D9ACCD69 /* FLAnimatedImage-dummy.m */, + 63C2A276D28472EAAFB8A0C665E148FB /* FLAnimatedImage-prefix.pch */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; 63931BDF741A0CF6226BB1752332D745 /* libMuseProcessor */ = { @@ -608,12 +542,15 @@ name = libMuseProcessor; sourceTree = ""; }; - 7846B3172BDB0A653227BB90AD3ECE90 /* Frameworks */ = { + 7CC1F96787ABB144725E2ED8CC6D5A1A /* Support Files */ = { isa = PBXGroup; children = ( - 6BCEA0B4E2FCBD2E7A8A5052BA4BDA14 /* Fabric.framework */, + 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */, + 1EC00AF5D56FF2112F6410D3A3B6F3AE /* Masonry-dummy.m */, + 7CF0040A5A0848F301192E2425B1FE15 /* Masonry-prefix.pch */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/Masonry"; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -622,40 +559,89 @@ 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 56AAF8433E98189615B2345C3972DB3C /* Development Pods */, 0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */, - 577722115C48D9752144B425FAC61C65 /* Pods */, + BD1C4CE75170BEB42C2D10B3778C5839 /* Pods */, A4DA24552E522401589F5D1F9873FD13 /* Products */, 0FD5C2DA289259C7C3CF7809A4FC3519 /* Targets Support Files */, ); sourceTree = ""; }; - 82841290F4E53E5F25A2E4E54706BF40 /* Frameworks */ = { + 8181BA8AD87823B1D6B0A1CD8B41EB7A /* Qiniu */ = { isa = PBXGroup; children = ( - A8D9CFF9323309A324822CB70C172FC0 /* PLPlayerKit.framework */, + D0F9D06AC3EE88373C263608F4165475 /* QiniuSDK.h */, + 177BC682D0BEB2FC17F5840C730A4224 /* QN_GTM_Base64.h */, + 2F4E80A471060D04E53AE0C2C6209488 /* QN_GTM_Base64.m */, + 3BE081093747D2E24F22BECBC3057A82 /* QNALAssetFile.h */, + 3C7607C30606492F72606125394FFA55 /* QNALAssetFile.m */, + EBFB9661553669AFEB6DBAD39E50097E /* QNAsyncRun.h */, + 973D8A36495AECBD481B60DEAD378726 /* QNAsyncRun.m */, + CC6454C80860AD14CD951EF6CD31431C /* QNConfiguration.h */, + 23A3839AAD136C89EC6C133C31C94A8C /* QNConfiguration.m */, + EEBBAB169837402F509CF8E7DCBC7AAA /* QNCrc32.h */, + 199F0CEAA6D4D7638AE33990FBDA901C /* QNCrc32.m */, + FE48498D107FB3161C07F230235B1DE2 /* QNEtag.h */, + 9426A077571D8EA77B1A4D3F07A11B94 /* QNEtag.m */, + E4700A256F0DC6F21BDE80EA75EA6E9E /* QNFile.h */, + 4B4B52066550A12A34C6F6654486C25A /* QNFile.m */, + 7E3FA891294362921816A220931DB372 /* QNFileDelegate.h */, + 7483A8515E3DE7A209FCECC53BAB0796 /* QNFileRecorder.h */, + 5BB27B69AB8C7283EDDA1B92428995A8 /* QNFileRecorder.m */, + 9953C1298216DB4132424AC20A9CE4C6 /* QNFormUpload.h */, + 67D7CD28E7684F9A82A9C6A96759DA03 /* QNFormUpload.m */, + 47510BEB5BEA0A74B2D419E2D401FA49 /* QNHttpDelegate.h */, + D195EC45149128EE5F4EA23E1B43F8F4 /* QNPHAssetFile.h */, + 151B6ACB34C0E35DCCA9F80D470F0520 /* QNPHAssetFile.m */, + 02FB104A8CB8C3F643379FD3C1C1727B /* QNPHAssetResource.h */, + A53BEC2BB1F0F346A352302BAFC04AA7 /* QNPHAssetResource.m */, + B3CD4797BBAE52557DA2AD4AC0CE5F70 /* QNPipeline.h */, + 66B6104448A582ECF82DE02B035D394F /* QNPipeline.m */, + 43D0ED5663FD81D2D71531C86BA9B044 /* QNRecorderDelegate.h */, + 460A9B05FBCB361117B5E1244C9DC016 /* QNResponseInfo.h */, + 7B07D9D7220388D0BD3775007BBB77C0 /* QNResponseInfo.m */, + CD7416826C652691AE23EDC71D30C55D /* QNResumeUpload.h */, + 74D0DC64533F0E2C8B23A67AEF320317 /* QNResumeUpload.m */, + FEFF12CC1B214AB9DB990D3E1482B670 /* QNSessionManager.h */, + 5B500D6AB230F27BAAF6C88E63885F09 /* QNSessionManager.m */, + F96B35841728F4B46E5858B487545426 /* QNSystem.h */, + E62ECC028B52A1AAD8D766686EF9AE27 /* QNSystem.m */, + F57E9E83BA1695FD3D61D0867453DCDA /* QNUploadManager.h */, + DEB7542A1E8A1902FEF073B55DAA1C6B /* QNUploadManager.m */, + 5A165F01E4E0EDCF729AE9656C1D90A8 /* QNUploadOption.h */, + 487DF9A0943CD9B258FB03000E4C963B /* QNUploadOption.m */, + D52D2E41D4D06971F2C123DD5B07EBB9 /* QNUploadOption+Private.h */, + D3D4C358E2A2F50AD959E1FBF09A6658 /* QNUpToken.h */, + A5CB448CCB933E2969EF31D4C8D15A77 /* QNUpToken.m */, + 4B05C3968D8201A0F78633782DE4CE6B /* QNUrlSafeBase64.h */, + F1D1E227C5D294674143ADF12957EE97 /* QNUrlSafeBase64.m */, + 1C608685B221C6F12BE5DD3D91E8F36D /* QNUserAgent.h */, + 0EAF5B005FA1A5ABECC63ACA08CCC264 /* QNUserAgent.m */, + 507DE7740769EDB85CE9D6D33083B4E1 /* QNVersion.h */, + 9AAEC43466D23484E851B15F74A20612 /* Support Files */, ); - name = Frameworks; + name = Qiniu; + path = Qiniu; sourceTree = ""; }; - 8F53A8492349338BDC648C874A0FC41C /* Support Files */ = { + 9AAEC43466D23484E851B15F74A20612 /* Support Files */ = { isa = PBXGroup; children = ( - 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */, - F9966394F55CB34D03C1091D94396ECD /* HappyDNS-dummy.m */, - 9A5BFB1A35BC8E5458248B8BC6391206 /* HappyDNS-prefix.pch */, + D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */, + BDAAC74D3FACEA0A525EB5AD38C4ECA5 /* Qiniu-dummy.m */, + 943E8DB192B27700E2F110BF27F67BF7 /* Qiniu-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/HappyDNS"; + path = "../Target Support Files/Qiniu"; sourceTree = ""; }; - A0E8F2C835E6211CE51B5A36F8199619 /* Support Files */ = { + A2051B22C8EE1DDBA1A6DBFFBF16C47B /* Fabric */ = { isa = PBXGroup; children = ( - 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */, - 99C8E1BB295A90A734AC02CA8D7992E5 /* Qiniu-dummy.m */, - 469FC77AD477F4EDED62676055D5CDE4 /* Qiniu-prefix.pch */, + 33A7D8CFFA796EDD780E52D05F360123 /* FABAttributes.h */, + 2B58165CEDFED39A8BD707B7870198F7 /* Fabric.h */, + F064143FD0A060ACAFCCD86224C201D2 /* Frameworks */, ); - name = "Support Files"; - path = "../Target Support Files/Qiniu"; + name = Fabric; + path = Fabric; sourceTree = ""; }; A4DA24552E522401589F5D1F9873FD13 /* Products */ = { @@ -670,96 +656,102 @@ name = Products; sourceTree = ""; }; - B71EE3AC0DFAA31F12CE2DE64E8C3E31 /* Frameworks */ = { + B05B55FD0ADD1C21BA9041A125C7478C /* HappyDNS */ = { isa = PBXGroup; children = ( - 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */, + 933BA63BD95C607CDBA28F4EC6835B9D /* HappyDNS.h */, + C2EC21B84D17094135223A5AD5965067 /* QNAssessment.h */, + 07FF1E3901A122C74CEFB21D17D4A99B /* QNAssessment.m */, + 7D50F44A48500035BE3C494A71D3B83C /* QNDes.h */, + 9CBF51300C897CBEB49439713BE35F4E /* QNDes.m */, + 0E6079BD190E3C67CED9A36639469D0C /* QNDnsManager.h */, + 797928E6B7398A78ACD82D6F1F2717B1 /* QNDnsManager.m */, + 54B259B841D97ADF41A504FB33F24EE3 /* QNDnspodEnterprise.h */, + 9D46A10687F3A7EFDA0B50E5DC241835 /* QNDnspodEnterprise.m */, + 1DABA540F92F65F6CF2FEDC9F4936690 /* QNDnspodFree.h */, + DF39B3AE19E8DB3B85D9C05ADC7189B9 /* QNDnspodFree.m */, + D857932775054CA8606A306D8B486DAD /* QNDomain.h */, + 1EC7520C0E4FD41AD601A2AFE03B2051 /* QNDomain.m */, + F13FE984A9B5DA0C2744C5A6CE652FA6 /* QNGetAddrInfo.h */, + E6A7D978E9D778B3E58A60E89A2C7D89 /* QNGetAddrInfo.m */, + D2E04BDA52A190EF71F1C541F12B959D /* QNHex.h */, + C60CD80433B78F40FD703835C7A9A175 /* QNHex.m */, + 6C8899C00568737503CC2D2652ED6F69 /* QNHijackingDetectWrapper.h */, + 3FDBD567554B7FE6C5CB3BD5E897D937 /* QNHijackingDetectWrapper.m */, + 382CDEF98A23B3BEB222E4A2A4DAC896 /* QNHosts.h */, + 8E489C9FEBCB111048316A493136C0E3 /* QNHosts.m */, + 3B4DF61B095D766DD99E32F9FC753D24 /* QNIP.h */, + C47AE9257978CBE1B15D1E6124D236AC /* QNIP.m */, + 553ECB0DB0D3B61EFCC0A8DA0EC97C61 /* QNIpModel.h */, + FFC0CC0F0F4E6E5C0B2B66E0C2AF580F /* QNIpModel.m */, + C84FC6DAD31337DA05944E851BAADA0C /* QNLruCache.h */, + 8AFEC0B480BBE85D347D6A8B7CC922D5 /* QNLruCache.m */, + BAF6C7F95C7F59017083490E3DC1B6DE /* QNMD5.h */, + BAF2EE45F811DA5E39976103C2CBE7B9 /* QNMD5.m */, + 79D5DD2B2A69D799E64F34FF582B3942 /* QNNetworkInfo.h */, + 4C0EBAEA72EA4493E923249020797AF5 /* QNNetworkInfo.m */, + F6BD0CFAFB1D708FD21E4C3341CB4AED /* QNNiuDns.h */, + 7B2FE1AB7873316CF5C03EF6D840CFB1 /* QNNiuDns.m */, + AB5B8350A1EF0DD5A4CB76A88229E312 /* QNRecord.h */, + 350E44A75170CCB9DB5337A739D1AC80 /* QNRecord.m */, + 3CB49F408ED148F594B28FEAFA67A5BF /* QNRefresher.h */, + 467CC72569656FDE0D985943483747BD /* QNRefresher.m */, + 9E2A396842B74AF0E26CE7EEE48DF21F /* QNResolver.h */, + 9B6A48BE9095A182A04783676924B4CD /* QNResolver.m */, + F2C4A7E52719DF885C91FEFDA63215D4 /* QNResolverDelegate.h */, + 9DCF008F3C5332007E95F5280D0363AB /* QNResolvUtil.h */, + A8B764B4FFA638045A789689C0C9EE34 /* QNResolvUtil.m */, + 1C1C0179BDEA166959F622521AB5D094 /* QNTxtResolver.h */, + 91E210CE9177E7DFD56F49836ABE71ED /* QNTxtResolver.m */, + 364A272B9D246B6829811C62EF723565 /* Support Files */, ); - name = Frameworks; + name = HappyDNS; + path = HappyDNS; sourceTree = ""; }; - BF56137A8345A1E155936A74D515E76B /* iphoneos */ = { + B71EE3AC0DFAA31F12CE2DE64E8C3E31 /* Frameworks */ = { isa = PBXGroup; children = ( - 82841290F4E53E5F25A2E4E54706BF40 /* Frameworks */, + 0C113B350843FEBA088012B67BAEBDE9 /* PLShortVideoKit.framework */, ); - name = iphoneos; + name = Frameworks; sourceTree = ""; }; - C2340B897011D80A1A425A11074477FB /* Frameworks */ = { + BD1C4CE75170BEB42C2D10B3778C5839 /* Pods */ = { isa = PBXGroup; children = ( - 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */, + C140D97114B258E364F7C8A14C4A261E /* Crashlytics */, + A2051B22C8EE1DDBA1A6DBFFBF16C47B /* Fabric */, + 41A019390E22F290607207EF316A9CAD /* FLAnimatedImage */, + B05B55FD0ADD1C21BA9041A125C7478C /* HappyDNS */, + 3EF168F914BC1CB6CBB4EB1BE63DF0CE /* Masonry */, + 8181BA8AD87823B1D6B0A1CD8B41EB7A /* Qiniu */, ); - name = Frameworks; + name = Pods; sourceTree = ""; }; - CECDB31B4057BF07F8A811F59F907A16 /* Qiniu */ = { + C140D97114B258E364F7C8A14C4A261E /* Crashlytics */ = { isa = PBXGroup; children = ( - 019867FB87CE09A1F4A9033D4C7EAF7D /* QiniuSDK.h */, - 6E3FA1D9903E8655D37B4B500FA67B32 /* QN_GTM_Base64.h */, - 94BE52EE41FBA0EB9E23346E8BA0DE55 /* QN_GTM_Base64.m */, - AD35267AB4E12356D7AD68D7C6BADB8E /* QNALAssetFile.h */, - B9DAEB9A9035F8559F4949FC28D42DF2 /* QNALAssetFile.m */, - 73A7254795FB3DB788AC3D486BD42DB4 /* QNAsyncRun.h */, - 10409FA53571FE454E465034EA03D228 /* QNAsyncRun.m */, - D5C56B2D9F234D40DC8C256D678E4521 /* QNConfiguration.h */, - FAE68C62EAA0117166C4E4BBCC1A1D5E /* QNConfiguration.m */, - FEE33FF9DF195A93F7FEC0571612AC1F /* QNCrc32.h */, - 425DAB2CD5BD1C4F26F2DA67220BD4AA /* QNCrc32.m */, - 211C88E08CA836075EDF39B47CF6D8FA /* QNEtag.h */, - A7C5DDDADEAF5CDDA795C0BBE9DEFBEC /* QNEtag.m */, - B11DC53BE7A493313752E4F59732D9CF /* QNFile.h */, - 1F416E7271DE9C349C9CF6E01A6B320F /* QNFile.m */, - 087B85BD6D6D44EC408B072F4BF2F233 /* QNFileDelegate.h */, - F5F6867F515DEF8E07998447E1EC4F43 /* QNFileRecorder.h */, - E823A02B7B30AB1F569DDA3380D19E41 /* QNFileRecorder.m */, - 44E2D73B2C1F9401A400C78D9D145A56 /* QNFormUpload.h */, - F9EAE92E00FEB37D8961ED5801AA3E72 /* QNFormUpload.m */, - 5F3110D8DDFCDA0CA45F50E2DC1BC0AC /* QNHttpDelegate.h */, - C91C24625C75E21C1F474E0489FEE89F /* QNPHAssetFile.h */, - 512504FB6355484DF5EF70D494EB03B9 /* QNPHAssetFile.m */, - 9FBE11EE6F50B8ACA10CC564B199D6ED /* QNPHAssetResource.h */, - C3DB51DF2501D5F83F9AFA2F52C0A665 /* QNPHAssetResource.m */, - F9B5F5059C619FE52BA8FE50D3F5C55B /* QNPipeline.h */, - F91F0A1F2C8083A2EB73AD4417344D83 /* QNPipeline.m */, - 8B262A4E017C596E6492E39CB3B206DD /* QNRecorderDelegate.h */, - C0EFA0260B1E42A06D5CD3DAD77E896B /* QNResponseInfo.h */, - E7E71538DBB631F1D03A209C092C63AD /* QNResponseInfo.m */, - 5A7C351B9C21825CF1357EFF5661E08F /* QNResumeUpload.h */, - 55B5642424BC90D899025DB29AC6ED23 /* QNResumeUpload.m */, - 377E2FA276E6259E00D30F07997A7783 /* QNSessionManager.h */, - A0C9D8D99555755B0E1E64B1D4769EDA /* QNSessionManager.m */, - 429D4B6977343D90320CB11F2E2F352C /* QNSystem.h */, - 9389F0FDFDBBFAB885461500DC342830 /* QNSystem.m */, - D469ABDA7AAFA0AF467AC743E0B0B424 /* QNUploadManager.h */, - DD6E7E4448D83052020F809E2E6A4132 /* QNUploadManager.m */, - 9E981F351D7760C792D00F46C1D64506 /* QNUploadOption.h */, - 571F06DA7A63D6E46AA61E41F3ED3D9E /* QNUploadOption.m */, - 6FDF7932EF65709E2910EA642AD91103 /* QNUploadOption+Private.h */, - CFC0C1AD33C230EBEFD28561A5688786 /* QNUpToken.h */, - EE6B5A68E4180DFF6E0FDBDBE16EEC23 /* QNUpToken.m */, - 560B0CE5BEB41F252F3BBB76E725A06B /* QNUrlSafeBase64.h */, - A620BA3161FB5878B1D3DD7AD5C6C05D /* QNUrlSafeBase64.m */, - 758462844604257631E4D5B5467CDBB9 /* QNUserAgent.h */, - 749571D93D81345364F10B3F5CB24514 /* QNUserAgent.m */, - 4AFF3792ABB76C3C1C09C4703E6DD842 /* QNVersion.h */, - A0E8F2C835E6211CE51B5A36F8199619 /* Support Files */, + E1740E31A8E1CE76D0B4383F4874DEC4 /* ANSCompatibility.h */, + 236F4B78590EAE9229A551FDBF559772 /* Answers.h */, + 0D75AC56D47DF78EB80A6E2C8579FCAE /* CLSAttributes.h */, + FEC54D8B52CE0E6BDDA832458CAAE6F1 /* CLSLogging.h */, + DD64CDB74B4DBBF36E70CB6DA94F6AFC /* CLSReport.h */, + 3328EAAB2D4415F0E05872C917C01011 /* CLSStackFrame.h */, + AA339544A7A4B8C938206084587B3571 /* Crashlytics.h */, + 4D9E06AED990043829FB8AC9F08F445C /* Frameworks */, ); - name = Qiniu; - path = Qiniu; + name = Crashlytics; + path = Crashlytics; sourceTree = ""; }; - D5230C5A16E27F8A5DBB6FDEE17196D9 /* Support Files */ = { + C2340B897011D80A1A425A11074477FB /* Frameworks */ = { isa = PBXGroup; children = ( - FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */, - 52098D269BE17C7B9B05FA943DBFF255 /* Masonry-dummy.m */, - 6B68CE250D8A73145B26CDCC7D75DC18 /* Masonry-prefix.pch */, + 082942A4DBDDDC0D2E8A8D8DF99A4A7E /* libMuseProcessor.a */, ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; + name = Frameworks; sourceTree = ""; }; E545F49C91B27E6956164C6F2F9DB88E /* PLShortVideoKit */ = { @@ -773,15 +765,12 @@ path = ../..; sourceTree = ""; }; - E594127D79566BE6E2A0749DB7A5F483 /* Support Files */ = { + F064143FD0A060ACAFCCD86224C201D2 /* Frameworks */ = { isa = PBXGroup; children = ( - D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */, - 12D1274C462F5EA91A66C37931295AAD /* FLAnimatedImage-dummy.m */, - D90E77729108EB4B3B82164A19B911BC /* FLAnimatedImage-prefix.pch */, + 82F6A9B14C326E2504B27122A838E69E /* Fabric.framework */, ); - name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; + name = Frameworks; sourceTree = ""; }; F0EBA6A9C4CC2529564133C8AB83A648 /* ex-libMuseProcessor */ = { @@ -792,22 +781,6 @@ name = "ex-libMuseProcessor"; sourceTree = ""; }; - FF147483AE5152810C32F785AF66AC2F /* Crashlytics */ = { - isa = PBXGroup; - children = ( - 901F38720095621C142CE338704B59A9 /* ANSCompatibility.h */, - 66D29754CB250301ABADAFD50ACA2D7A /* Answers.h */, - 21ABEED3DBDEF750695386BAC0B9FE60 /* CLSAttributes.h */, - E12B0EB5CD70411F38328A7B3A7A9C7F /* CLSLogging.h */, - 640EC3C21264359303413EFEAC49C5FC /* CLSReport.h */, - D41B983780B7DD01BFCEDC68E6D51909 /* CLSStackFrame.h */, - F2B4BDD8697134042592216235BF7F67 /* Crashlytics.h */, - 0844A41A23F2FDB15E4E9C1743A09C85 /* Frameworks */, - ); - name = Crashlytics; - path = Crashlytics; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1169,7 +1142,7 @@ /* Begin XCBuildConfiguration section */ 1D3F48869EA6A0024D621535B6BC77C9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */; + baseConfigurationReference = 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1192,7 +1165,7 @@ }; 4A913B1371A9BF83547DF4463080CE2C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */; + baseConfigurationReference = 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1298,7 +1271,7 @@ }; A254A1D5CAE40ABC54B15E5215496D62 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FEEA44EA27E40CDB11959183FFBE13B9 /* Masonry.xcconfig */; + baseConfigurationReference = 4F88E7FDFCAD4695FE8AD93AAC0957B2 /* Masonry.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1388,7 +1361,7 @@ }; B7D70E4BFD7DDD9A379698DADEDE0B1B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1434,7 +1407,7 @@ }; C8E3C2D6708617255E1C212580202A13 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D214DFF37B61675973C5AE060413C1AA /* FLAnimatedImage.xcconfig */; + baseConfigurationReference = 1DA93040D4151DF4D02B739B16603E14 /* FLAnimatedImage.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1457,7 +1430,7 @@ }; CE28491D7891218E4673F297662B0A13 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */; + baseConfigurationReference = D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1480,7 +1453,7 @@ }; D28619C315EC806A20B050209A3EADA4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89E40BC95094A19792493FE7B2130568 /* HappyDNS.xcconfig */; + baseConfigurationReference = 82F004B0958DDCCBBC6E2E4D53765EC1 /* HappyDNS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1504,7 +1477,7 @@ }; E7717973A17803DB84A533B5D9919993 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 10F36E7C7CBF48892A699D8B4C333EDA /* Qiniu.xcconfig */; + baseConfigurationReference = D80C4043BCC7BB5CAE64D810E0AEC846 /* Qiniu.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; diff --git a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown index 8f80ab8a..1ccd4deb 100644 --- a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown +++ b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.markdown @@ -81,212 +81,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## PLPlayerKit - -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - ## PLShortVideoKit Apache License diff --git a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist index 3a47d11d..bea34f2b 100644 --- a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist +++ b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-acknowledgements.plist @@ -122,218 +122,6 @@ THE SOFTWARE. Type PSGroupSpecifier - - FooterText - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2015 Pili.io Engineering - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - License - Apache License, Version 2.0 - Title - PLPlayerKit - Type - PSGroupSpecifier - FooterText Apache License diff --git a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh index f8bb6726..08e3eaac 100755 --- a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh +++ b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo-frameworks.sh @@ -141,13 +141,6 @@ strip_invalid_archs() { STRIP_BINARY_RETVAL=1 } - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${PODS_ROOT}/PLPlayerKit/Pod/Library/PLPlayerKit.framework" -fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait fi diff --git a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig index ba104370..29ad35df 100644 --- a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig +++ b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.debug.xcconfig @@ -1,10 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/PLPlayerKit/Pod/Library" "${PODS_ROOT}/../../Pod/Library" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/../../Pod/Library" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLPlayerKit" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HappyDNS" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Qiniu" "${PODS_ROOT}/../../Pod/Library" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLPlayerKit" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"bz2" -l"c++" -l"iconv" -l"resolv" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AudioToolbox" -framework "CoreAudio" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "MobileCoreServices" -framework "OpenGLES" -framework "PLPlayerKit" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"c++" -l"resolv" -l"z" -framework "CoreGraphics" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig index ba104370..29ad35df 100644 --- a/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig +++ b/Example_TuTu/Pods/Target Support Files/Pods-PLShortVideoKitDemo/Pods-PLShortVideoKitDemo.release.xcconfig @@ -1,10 +1,9 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/PLPlayerKit/Pod/Library" "${PODS_ROOT}/../../Pod/Library" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/../../Pod/Library" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLPlayerKit" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/FLAnimatedImage" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/HappyDNS" "${PODS_ROOT}/Headers/Public/Masonry" "${PODS_ROOT}/Headers/Public/PLShortVideoKit" "${PODS_ROOT}/Headers/Public/Qiniu" LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HappyDNS" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/Qiniu" "${PODS_ROOT}/../../Pod/Library" -OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLPlayerKit" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" -OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"bz2" -l"c++" -l"iconv" -l"resolv" -l"z" -framework "AVFoundation" -framework "AVKit" -framework "Accelerate" -framework "AudioToolbox" -framework "CoreAudio" -framework "CoreGraphics" -framework "CoreMedia" -framework "CoreTelephony" -framework "CoreVideo" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MediaPlayer" -framework "MobileCoreServices" -framework "OpenGLES" -framework "PLPlayerKit" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "VideoToolbox" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/FLAnimatedImage" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/HappyDNS" -isystem "${PODS_ROOT}/Headers/Public/Masonry" -isystem "${PODS_ROOT}/Headers/Public/PLShortVideoKit" -isystem "${PODS_ROOT}/Headers/Public/Qiniu" +OTHER_LDFLAGS = $(inherited) -ObjC -l"FLAnimatedImage" -l"HappyDNS" -l"Masonry" -l"MuseProcessor" -l"Qiniu" -l"c++" -l"resolv" -l"z" -framework "CoreGraphics" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "ImageIO" -framework "MobileCoreServices" -framework "PLShortVideoKit" -framework "QuartzCore" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/PLShortVideoKit.podspec b/PLShortVideoKit.podspec index 6c8b7920..3ba50cdc 100644 --- a/PLShortVideoKit.podspec +++ b/PLShortVideoKit.podspec @@ -9,12 +9,12 @@ Pod::Spec.new do |s| s.name = "PLShortVideoKit" - s.version = "1.16.0" + s.version = "1.16.1" s.summary = "PILI iOS short video record SDK" s.homepage = "https://github.com/pili-engineering/PLShortVideoKit" s.license = "Apache License 2.0" s.author = { "pili" => "pili@qiniu.com" } - s.source = { :http => "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.0.zip"} + s.source = { :http => "https://sdk-release.qnsdk.com/PLShortVideoKit-v1.16.1.zip"} s.platform = :ios s.requires_arc = true diff --git a/Pod/Library/PLShortVideoKit.framework/Headers/AVAsset+PLSExtendProperty.h b/Pod/Library/PLShortVideoKit.framework/Headers/AVAsset+PLSExtendProperty.h index 2e1b4748..03b4ffad 100644 --- a/Pod/Library/PLShortVideoKit.framework/Headers/AVAsset+PLSExtendProperty.h +++ b/Pod/Library/PLShortVideoKit.framework/Headers/AVAsset+PLSExtendProperty.h @@ -45,4 +45,18 @@ */ @property (assign, nonatomic, readonly) float pls_normalFrameRate; +/** + @brief 如果 AVAsset 包含音频通道,则返回第一个音频通道的声道数 + + @since v1.16.1 + */ +@property (assign, nonatomic, readonly) UInt32 pls_channel; + +/** + @brief 如果 AVAsset 包含音频通道,则返回第一个音频通道的采样率 + + @since v1.16.1 + */ +@property (assign, nonatomic, readonly) Float64 pls_sampleRate; + @end diff --git a/Pod/Library/PLShortVideoKit.framework/Headers/PLSAVAssetExportSession.h b/Pod/Library/PLShortVideoKit.framework/Headers/PLSAVAssetExportSession.h index 7984ba46..e92340fd 100644 --- a/Pod/Library/PLShortVideoKit.framework/Headers/PLSAVAssetExportSession.h +++ b/Pod/Library/PLShortVideoKit.framework/Headers/PLSAVAssetExportSession.h @@ -17,6 +17,8 @@ @protocol PLSAVAssetExportSessionDelegate +@optional + /** @abstract 输出视频文件的视频数据,用来做滤镜处理 diff --git a/Pod/Library/PLShortVideoKit.framework/Headers/PLSTypeDefines.h b/Pod/Library/PLShortVideoKit.framework/Headers/PLSTypeDefines.h index 43d2b251..9cd824b3 100644 --- a/Pod/Library/PLShortVideoKit.framework/Headers/PLSTypeDefines.h +++ b/Pod/Library/PLShortVideoKit.framework/Headers/PLSTypeDefines.h @@ -120,7 +120,7 @@ typedef NS_ENUM(NSInteger, PLSVideoRecoderRateType) { |================================================================| | 采样率 Hz | 推荐码率(单声道)bps | 推荐码率 (双声道) bps | |================================================================| - | 48000 | 96*1000 | 192*1000 | + | 48000 | 64*1000 | 128*1000 | |----------------------------------------------------------------| | 44100 | 64*1000 | 128*1000 | |----------------------------------------------------------------| @@ -351,6 +351,21 @@ typedef NS_ENUM(NSUInteger, PLShortVideoLogLevel){ PLShortVideoLogLevelVerbose, }; + +/*! + @typedef PLSAuthenticationResult + @abstract SDK 授权状态查询。 + @since v1.16.1 + */ +typedef NS_ENUM(NSUInteger, PLSAuthenticationResult) { + // 还没有确定是否授权 + PLSAuthenticationResultNotDetermined = 0, + // 未授权 + PLSAuthenticationResultDenied, + // 已成功 + PLSAuthenticationResultAuthorized +}; + #endif diff --git a/Pod/Library/PLShortVideoKit.framework/Headers/PLShortVideoRecorder.h b/Pod/Library/PLShortVideoKit.framework/Headers/PLShortVideoRecorder.h index 2c097aaa..caa3a3b0 100644 --- a/Pod/Library/PLShortVideoKit.framework/Headers/PLShortVideoRecorder.h +++ b/Pod/Library/PLShortVideoKit.framework/Headers/PLShortVideoRecorder.h @@ -361,11 +361,11 @@ - (CGFloat)getTotalDuration; /** - @brief 实时截图, 异步返回截图结果image + @brief 实时截图, 异步返回截图结果 image. 在 handler 内部调用 self,请使用 __weak typeof(self) weakSelf = self, 避免循环引用, 因为 SDK 内部对 handle 执行了 copy 操作 @since v1.9.0 */ -- (void)getScreenShotWithCompletionHandler:(void(^_Nullable)(UIImage * _Nullable image))handle; +- (void)getScreenShotWithCompletionHandler:(void(^_Nullable)(UIImage * _Nullable image))handler; @end @@ -458,6 +458,14 @@ */ + (NSString *__nonnull)versionInfo; +/*! + @method check authentication + @abstract SDK 授权状态查询 + + @since v1.16.1 + */ ++ (void)checkAuthentication:(void(^ __nonnull)(PLSAuthenticationResult result))resultBlock;; + @end #pragma mark - Category (Dubber) diff --git a/Pod/Library/PLShortVideoKit.framework/Info.plist b/Pod/Library/PLShortVideoKit.framework/Info.plist index 65493840..20ef18fd 100644 Binary files a/Pod/Library/PLShortVideoKit.framework/Info.plist and b/Pod/Library/PLShortVideoKit.framework/Info.plist differ diff --git a/Pod/Library/PLShortVideoKit.framework/PLShortVideoKit b/Pod/Library/PLShortVideoKit.framework/PLShortVideoKit index 268391bc..11737a34 100644 Binary files a/Pod/Library/PLShortVideoKit.framework/PLShortVideoKit and b/Pod/Library/PLShortVideoKit.framework/PLShortVideoKit differ diff --git a/Pod/Library/libMuseProcessor.a b/Pod/Library/libMuseProcessor.a index bc296285..ed5e2127 100644 Binary files a/Pod/Library/libMuseProcessor.a and b/Pod/Library/libMuseProcessor.a differ diff --git a/ReleaseNotes/release-notes-1.16.1.md b/ReleaseNotes/release-notes-1.16.1.md new file mode 100644 index 00000000..7d29273f --- /dev/null +++ b/ReleaseNotes/release-notes-1.16.1.md @@ -0,0 +1,27 @@ +# PLShortVideoKit Release Notes for 1.16.1 + +### 简介 +PLShortVideoKit 是七牛推出的一款适用于 iOS 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、MV 特效、本地/云端存储在内的多种功能,支持高度定制以及二次开发。 + +### 版本 +- 发布 PLShortVideoKit.framework + + +### 增加 +- 添加 SDK 授权状态查询接口 + +### 优化 +- 去掉对 i386 模拟器的支持,优化 SDK 包体大小 + +### 缺陷 +- 修复时光倒流特效处理声道数大于 2 的视频导出失败的问题 +- 修复视频编辑添加 MV 特效,预览的时候 MV 滞后视频播放 1s 左右问题 +- 修复对无音频通道的视频添加 MV 特效,AVAssetExportSession 导出时 crash 的问题 +- 修复 AVAssetExportSession 导出视频通道比音频通道时长短的视频时结尾处出现黑帧的问题 +- 修复 AVAssetExportSession 添加贴纸起始时间是 0 的时候,第一帧视频没有贴纸效果的问题 +- 修复 PLShortVideoRecorder 截帧小概率 crash 的问题 + +### 注意事项 +- 若需要使用 PLShortVideoKit.framework 中的内置滤镜,则必须将 PLShortVideoKit.bundle 导入项目中。若需要增删、替换滤镜资源可操作 PLShortVideoKit.bundle 中的 colorFilter 文件夹。 +- 抖音特效,需要联系七牛商务获取 appkey 和资源文件。具体使用可参看 PLShortVideoKitDemo。 +