美文网首页
Xcode 12 & iOS 14 兼容性问题

Xcode 12 & iOS 14 兼容性问题

作者: 猎手Andy | 来源:发表于2020-09-27 16:34 被阅读0次

[React-Native]Workaround for Xcode 12 Linking Errors

Lost React.framework reference for some Frameworks which depends on React.framework.

Add to the end of Podfile

post_install do |installer|
  puts("### Workaround for Xcode 12 and Auto-Linking")
  installer.pods_project.targets.each do |target|
    if ['RNCAsyncStorage', 'RNVectorIcons', 'RNLocalize', 'React-RCTText', 'react-native-mapbox-gl', 'RNPermissions', 'RNReanimated', 'RNScreens', 'RNShare', 'react-native-netinfo', 'RNSVG', 'RNCisco', 'RNCiscoContribution', 'RNCiscoNotification', 'react-native-camera', 'react-native-safe-area-context', 'react-native-segmented-control', 'RNCPicker'].include?(target.name) #list all affected target in the array
      target.build_phases.each do |build_phases|
        if build_phases.display_name == 'Frameworks'
          file_ref = installer.pods_project.new(Xcodeproj::Project::Object::PBXFileReference)
          file_ref.path = 'React.framework'
          file_ref.source_tree = 'BUILT_PRODUCTS_DIR'
          build_phases.add_file_reference(file_ref)
          puts("### #{target.name} ==> Adding React.framework reference")
        end
      end
    end
  end
end

Bonjour service not working on iOS 14

Root Cause: Should add support for local network privacy permissions in iOS 14

https://developer.apple.com/forums/thread/653316

https://developer.apple.com/videos/play/wwdc2020/10110/

Fix: Add permissions to plist

    <key>NSLocalNetworkUsageDescription</key>
    <string>Looking for local devices with tcp Bonjour services</string>
    <key>NSBonjourServices</key>
    <array>
        <string>_YOUR_LOCAL_SERVICE._tcp</string>
    </array>

[React-Native]图片在iOS14无法显示

https://github.com/facebook/react-native/issues/29279#issuecomment-699587944


//  RCTUIImageViewAnimated+Patch.h

#import <Foundation/Foundation.h>
#import <React/RCTViewManager.h>
#import <React/RCTUIImageViewAnimated.h>
NS_ASSUME_NONNULL_BEGIN

@interface RCTUIImageViewAnimated (Patch)

@end

NS_ASSUME_NONNULL_END


#import "RCTUIImageViewAnimated+Patch.h"
#import <objc/runtime.h>

@implementation RCTUIImageViewAnimated (Patch)
+(void)load {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    Method fromMethod = class_getInstanceMethod([self class], @selector(displayLayer:));
    Method toMethod = class_getInstanceMethod([self class], @selector(patch_displayLayer:));
    method_exchangeImplementations(fromMethod, toMethod);
  });
}

// RCTUIImageViewAnimated+Patch.m
- (void)patch_displayLayer:(CALayer *)layer {
  UIImage *currentFrame = [self valueForKey:@"currentFrame"];
  CGFloat animatedImageScale = [[self valueForKey:@"animatedImageScale"] floatValue];
  if (currentFrame) {
      layer.contentsScale = animatedImageScale;
      layer.contents = (__bridge id)currentFrame.CGImage;
    } else {
      [super displayLayer:layer];
    }
}
@end

相关文章

网友评论

      本文标题:Xcode 12 & iOS 14 兼容性问题

      本文链接:https://www.haomeiwen.com/subject/xedluktx.html