由于自己的手机系统现在是12+的,使用xcode10以下打包出来的ipa不支持12以上的系统,所以升级了一下苹果电脑的系统和Xcode,电脑系统为10.13.6,Xcode版本是10.1的。
复制之前的项目工程,然后执行cordova platform rm ios
移除项目工程。
接着创建项目工程cordova platform add ios
。
走到这步还是没有问题的。双击myapp.xcodeproject
Xcode。然后选择好team后build,出现了错误。
错误1
symbol(s) not found for -lstdc++.6
error: linker command failed with exit code 1 (use -v to see invocation)
这个错误的原因是Xcode10.1中的库里没有-lstdc++.6。
解决办法参考https://www.cnblogs.com/liuyongfa/p/9705919.html
具体如下:右击之前版本的Xcode显示包内容,
1.真机:进入目录(这里进入目录是xcode右击->查看包内容)Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
,把里面的libstdc++.6.0.9.tbd
拷贝到Xcode10的相同的目录里,然后右击制作替身,命名为libstdc++.6.tbd
。clear然后重启Xcode。
2.模拟器:类似,只是目录不同,进入之前版本的目录Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
,
把里面的libstdc++.6.0.9.dylib
拷贝到Xcode10的相同的目录里,然后右击制作替身,命名为libstdc++.6.dylib
。clear然后重启Xcode。
之前Xcode版本的libstdc++的githhub地址:https://github.com/liuyongfa/libstdc.git
错误2
Undefined symbols for architecture i386:
"operator delete[](void*)", referenced from:
+[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil NsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil DecodeWithBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil DecodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
"operator new[](unsigned long)", referenced from:
+[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil NsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil DecodeWithBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
+[WeChatApiUtil DecodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
symbol(s) not found for architecture i386
error: linker command failed with exit code 1 (use -v to see invocation)
解决方法参考https://blog.csdn.net/azhou_hui/article/details/18312047
找不到WeChtApiUtil.o
在库里面添加libc++
即可
其实中间遇到的问题不止这两个,问题没有解决前感觉是绕在了里面,但是学会的一点是看报错内容,一定要仔细分析报错的内容,基本上看懂了报什么错,再去解决就清晰很多了。