react-native-wechat-lib icon indicating copy to clipboard operation
react-native-wechat-lib copied to clipboard

apple silicon m1 安装后项目跑不起来 有遇到的吗?

Open NoirVoider opened this issue 2 years ago • 7 comments

ld: in /myProject/node_modules/react-native-wechat-lib/ios/libWeChatSDK.a(WechatAuthSDK.o), building for iOS Simulator, but linking in object file built for iOS, file 'myProject/node_modules/react-native-wechat-lib/ios/libWeChatSDK.a' for architecture arm64

NoirVoider avatar Mar 19 '22 17:03 NoirVoider

你这个问题有修复办法吗?

QMY-ZQ avatar Aug 09 '22 05:08 QMY-ZQ

As far as I know this is a problem with the underlying wechat sdk. It doesn't support arm64 simulators which is mandatory on apple silicon devices. Can we fill a support ticket on official wechat side to escalate this issue to their developers? @little-snow-fox

michaelknoch avatar Aug 09 '22 09:08 michaelknoch

你这个问题有修复办法吗?

是微信sdk的问题,目前我只能通过下面方法解决: 在 RCTWeChat.podspec 文件中,注释掉下面这行,默认不链接 libWeChatSDK.a

# s.vendored_libraries = "ios/libWeChatSDK.a"

在 RCTWeChat.podspec 末尾添加以下内容

s.xcconfig = {
    'OTHER_LDFLAGS[sdk=iphoneos*]' => '$(inherited) -L$(PROJECT_DIR)/../node_modules/react-native-wechat-lib/ios -lWeChatSDK'
}

表示只有在build到设备时才链接 libWeChatSDK.a。

然后再 RCTWeChat.h 和 RCTWeChat.m 中通过宏 #if !(TARGET_OS_SIMULATOR) 判断是不是模拟器,当是模拟器的时候,把所有微信sdk相关的代码全都删掉,不参与编译。也就是当build到模拟器时,这个模块什么功能都没有,因为全注释了,比如 RCTWeChat.h 里,

#import "WXApi.h"

变成了

#if !(TARGET_OS_SIMULATOR)
#import "WXApi.h"
#endif

找到所有 WX 开头相关的各种东西全包在这么一个宏里就行。所有处理完之后再重新安装库,重新 pod install 就可以了。

我对 xcode 编译这块没怎么研究过,今天遇到这个问题临时发现的解决方法。

hyfjjjj avatar Aug 25 '22 15:08 hyfjjjj

ld: in /myProject/node_modules/react-native-wechat-lib/ios/libWeChatSDK.a(WechatAuthSDK.o), building for iOS Simulator, but linking in object file built for iOS, file 'myProject/node_modules/react-native-wechat-lib/ios/libWeChatSDK.a' for architecture arm64

请问解决了吗

wubaibin avatar Nov 25 '22 15:11 wubaibin

一样的问题

XionGuo37 avatar Jan 04 '23 07:01 XionGuo37

你这个问题有修复办法吗?

是微信sdk的问题,目前我只能通过下面方法解决: 在 RCTWeChat.podspec 文件中,注释掉下面这行,默认不链接 libWeChatSDK.a

# s.vendored_libraries = "ios/libWeChatSDK.a"

在 RCTWeChat.podspec 末尾添加以下内容

s.xcconfig = {
    'OTHER_LDFLAGS[sdk=iphoneos*]' => '$(inherited) -L$(PROJECT_DIR)/../node_modules/react-native-wechat-lib/ios -lWeChatSDK'
}

表示只有在build到设备时才链接 libWeChatSDK.a。

然后再 RCTWeChat.h 和 RCTWeChat.m 中通过宏 #if !(TARGET_OS_SIMULATOR) 判断是不是模拟器,当是模拟器的时候,把所有微信sdk相关的代码全都删掉,不参与编译。也就是当build到模拟器时,这个模块什么功能都没有,因为全注释了,比如 RCTWeChat.h 里,

#import "WXApi.h"

变成了

#if !(TARGET_OS_SIMULATOR)
#import "WXApi.h"
#endif

找到所有 WX 开头相关的各种东西全包在这么一个宏里就行。所有处理完之后再重新安装库,重新 pod install 就可以了。

我对 xcode 编译这块没怎么研究过,今天遇到这个问题临时发现的解决方法。

这些文件在哪?我无法找到他们

XionGuo37 avatar Jan 04 '23 08:01 XionGuo37

安装rosetta模式,模拟器使用rosetta模式就可以运行了

fv0008 avatar Jan 19 '24 09:01 fv0008