前言
是苹果逼的,通知说2023年4月25日之后,一切的App都要在iOS16的SDK上打包。不然也不会有那么多事情(呜呜呜)。
1.Xcode 14.3版别运转项目报错
问题如下:
ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
报错信息看,都是在链接库的时分由于找不到静态库(libarclite_iphonesimulator.a
/libarclite_iphoneos.a
)而报错。利用访达的前往文件夹功用快速来到报错信息中的目录,发现连 arc
目录都不存在,更不用说静态库文件。
开发人员解释说,由于体系现已内置有 ARC
相关的库,所以没必要再额外链接,至少Xcode 14支撑的最低布置方针iOS 11及以上版别的体系肯定是没问题的。如果运用布置方针不低于iOS 11还出现问题,那么应该是第三方库的布置方针有问题。
所以解决方案也很明晰了,将一切依靠库和运用最低布置版别都限制在iOS11以上即可。
解决方案:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
2. 晋级Xcode14以后项目报错 Stored properties cannot be marked potentially unavailable with ‘@available’
这是依靠库报错,把其中一个库晋级到了最新的版别,不报错了。可是还有一个库没方法晋级,由于我们的项目是Flutter项目,不知道是哪个三方库的依靠库,百度了良久没找到方法,最终仍是强大的Google到方法:
在iOS目录下:
履行pod install
然后再履行pod update
最终可以了
3. Xcode晋级到14.3 archieve打包失利
mkdir -p /Users/hsf/Library/Developer/Xcode/DerivedData/Ehospital-crirdmppgluxkodauexhkenjuxet/Build/Intermediates.noindex/ArchiveIntermediates/Ehospital/BuildProductsPath/Release-iphoneos/复旦云病理.app/Frameworks
Symlinked...
rsync --delete -av --filter P .*.?????? --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AliyunOSSiOS.framework" "/Users/hsf/Library/Developer/Xcode/DerivedData/Ehospital-crirdmppgluxkodauexhkenjuxet/Build/Intermediates.noindex/ArchiveIntermediates/Ehospital/InstallationBuildProductsLocation/Applications/复旦云病理.app/Frameworks"
building file list ... rsync: link_stat "/Users/hsf/Desktop/medical/app/iOS/Ehospital/../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AliyunOSSiOS.framework" failed: No such file or directory (2)
done
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/97f6331a-ba75-11ed-a4bc-863efbbaf80d/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
Command PhaseScriptExecution failed with a nonzero exit code
找到…-frameworks.sh 文件,替换
source="$(readlink "${source}")"
为
source="$(readlink -f "${source}")"
4. The version of CocoaPods used to generate the lockfile (1.3.1) is higher than the version of the current executable (1.1.0.beta.1). Incompatibility issues may arise.
这个比较简单,更新cocoapods就行。
sudo gem install cocoapods
5. Warning: CocoaPods minimum required version 1.6.0 or greater not installed…
sudo gem install cocoapods
6. Cocoapods 更新卡死在1.5.3,但控制台一直提示说有新版别
首要便是ruby的问题了。别问我怎样知道的,花了一天的时间。
ruby -v 查看版别
若比较低,现在一般都3.x了,所以要晋级
用以下指令就可以晋级了,可能需求科学上网。
brew update
brew install ruby
晋级完成以后,ruby -v后其实仍是原来的版别,这是由于环境变量没有装备。因而,还有一个步骤便是装备环境变量。
vi ~/.zshrc
复制 export PATH="/usr/local/opt/ruby/bin:$PATH"
放进去
英文输入法下 按下esc键 输入 :wq
最终再履行
source ~/.bash_profile
然后更新gem
gem update #更新一切包
gem update --system #更新RubyGems软件
最终再更新pod
sudo gem install cocoapods
留意现在可能会提示说更新到了1.12.1了,但实际上仍是1.5.3,所以还要履行另外一个指令。
sudo gem install -n /usr/local/bin cocoapods
这个就可以有效晋级了。
7. gem常用指令
gem -v #gem版别
gem update #更新一切包
gem update --system #更新RubyGems软件
gem install rake #装置rake,从本地或长途服务器
gem install rake --remote #装置rake,从长途服务器
gem install watir -v(或者--version) 1.6.2#指定装置版别的
gem uninstall rake #卸载rake包
gem list d #列出本地以d打头的包
gem query -n ''[0-9]'' --local #查找本地含有数字的包
gem search log --both #从本地和长途服务器上查找含有log字符串的包
gem search log --remoter #只从长途服务器上查找含有log字符串的包
gem search -r log #只从长途服务器上查找含有log字符串的包
gem help #提示式的协助
gem help install #列出install指令 协助
gem help examples #列出gem指令运用一些比如
gem build rake.gemspec #把rake.gemspec编译成rake.gem
gem check -v pkg/rake-0.4.0.gem #检测rake是否有效
gem cleanup #铲除一切包旧版别,保存最新版别
gem contents rake #显示rake包中所包括的文件
gem dependency rails -v 0.10.1 #列出与rails相互依靠的包
gem environment #查看gem的环境
结语
有些坑现在只是知道这样做就行,还不知道为什么。后面再补补吧。