如何将调试符号信息保存在IPA中的可执行二进制文件中,而不是生成隔离的dSYM文件并从Xcode 9.0中的bonary文件中剥离它?
在XCode 8.3中,“xcodebuild -exportArchive”的默认行为不会生成隔离的dSYM文件,所有调试符号都将保存在可执行二进制文件中。在开发阶段调试方便。但是在我将Xcode升级到版本9.0之后,默认行为会更改为生成隔离的dSYM文件并从最终的可执行二进制文件中删除调试符号,因此在运行时无法获得可读的堆栈跟踪。
有没有人知道如何将调试信息保存在可执行二进制文件中,就像在XCode 8.3中发生的那样,而不是剥离它?
这是归档命令(在python中):
def export_ipa(options):
build_opts = '' \
+ ' DEPLOYMENT_POSTPROCESSING=NO' \
+ ' STRIP_INSTALLED_PRODUCT=NO' \
+ ' SEPARATE_STRIP=NO' \
+ ' COPY_PHASE_STRIP=NO' \
+ ' DEBUG_INFORMATION_FORMAT=dwarf'
build_cmd = 'xcodebuild' \
+ ' -project ' + options.proj_path \
+ ' -configuration ' + 'Debug' \
+ ' -sdk ' + IOS_SDK \
+ ' -scheme ' + IOS_SCHEME \
+ ' ARCHS=\"armv7 arm64\"' \
+ ' -archivePath ' + options.archive_path \
+ ' CODE_SIGN_IDENTITY=' + options.cert \
+ ' DEVELOPMENT_TEAM=' + IOS_TEAM_ID \
+ ' ' + build_opts \
+ ' clean ' \
+ ' archive'
os.system(build_cmd)
pck_cmd = 'xcodebuild' \
+ ' -exportArchive ' \
+ ' -archivePath ' + options.archive_path \
+ ' -exportOptionsPlist ' + options.explist \
+ ' -exportPath ' + options.ipa_path
os.system(pck_cmd)
这是exportOptionList:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>development</string>
</dict>
</plist>