ios xcode15.0.1 flutter1.22.6 卡啟動屏 打包體積變小 安裝啟動閃退
一直用的flutter1.22.6 隨著xcode15 ios17更新
一遍再開新工程跑flutter3.16,一遍還在維護(hù)老項(xiàng)目
升級xcode15后,跑老工程發(fā)現(xiàn)出問題跑不起來,
按網(wǎng)上說的修改了podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
config.build_settings['SWIFT_VERSION'] = '5.0'
config.build_settings['CODE_SIGN_IDENTITY'] = ''
end
flutter_additional_ios_build_settings(target)
end
end
post_integrate do |installer|
compiler_flags_key = 'COMPILER_FLAGS'
project_path = 'Pods/Pods.xcodeproj'
project = Xcodeproj::Project.open(project_path)
project.targets.each do |target|
target.build_phases.each do |build_phase|
if build_phase.is_a?(Xcodeproj::Project::Object::PBXSourcesBuildPhase)
build_phase.files.each do |file|
if !file.settings.nil? && file.settings.key?(compiler_flags_key)
compiler_flags = file.settings[compiler_flags_key]
file.settings[compiler_flags_key] = compiler_flags.gsub(/-DOS_OBJECT_USE_OBJC=0\s*/, '')
end
end
end
end
end
project.save()
end
修改了 other link flags
-ld_classic
報(bào)
Runner.app/Info.plist does not exist. The Flutter "Thin Binary" build phase must run after "Copy Bundle Resources".
查了后將腳本
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed_and_thin
修改為
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
確實(shí)能跑起來了,但是會卡在啟動屏,flutter側(cè)得main方法沒有執(zhí)行到,
能打包,但是打包出來的包體積大小不對,安裝后啟動閃退,懷疑還是資源問題
聯(lián)想到這句報(bào)錯(cuò)
Runner.app/Info.plist does not exist. The Flutter "Thin Binary" build phase must run after "Copy Bundle Resources".
在1.22.6和3.16.0新建demo后發(fā)現(xiàn)demo工程中Thin的腳本并沒有被修改,但是能夠正常運(yùn)行,排查方向切換到腳本上
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
在flutter的git issues下關(guān)鍵詞 xcode15 Thin Binary 搜索到

搜索
點(diǎn)開第一個(gè) 關(guān)鍵詞 Thin

截屏2023-11-22 14.56.22.png
包含了解決方法
-ld_classic 和"-ld64"是一個(gè)意思

截屏2023-11-22 14.33.49.png
腳本還用
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed_and_thin