如何使XCode不从带有调试配置的xcode 9.0中的ipa中的最终可执行二进制文件中剥离调试符号?

时间:2017-10-14 09:08:03

标签: ios xcode

如何将调试符号信息保存在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>

0 个答案:

没有答案