当前位置:   article > 正文

iOS 关于xcodebuild打包整理_xcode build后的内容

xcode build后的内容

之前打包都是用Xcode直接打包的,很久之前也用过Fastline。

最近接到一个这样的需求:在Jenkins上创建一个任务,可以配置App Name 、AccessKey、SecretKey和不同的Bundle ID,这些完全由QA自己填,方便生成不同的商户和测试功能。

由于之前在Jenkins上有打包的代码(之前的只能选择Build Type),所以只需要把原来的修改一下,把遇到的问题都记录下来,防止以后再出错。

  1. #!/bin/bash
  2. #这些是配置参数
  3. TENANTNAME=${TENANT_NAME}
  4. APPNAME=${APP_NAME}
  5. ACCESSKEY=${ACCESS_KEY}
  6. SECRETKEY=${SECRET_KEY}
  7. BUILDTYPE=${BUILD_TYPE}
  8. BUNDLEID=${BUNDLE_ID}
  9. PROVISIONINGPROFILE=${PROVISIONING_PROFILE}
  10. # test cmd result
  11. IF_BUILD_FAILED()
  12. {
  13. if [[ $1 -ne 0 ]]; then
  14. echo "$2"
  15. exit 1
  16. fi
  17. }
  18. # replace string in specil path
  19. REPLACE_STRING_IN_FILE()
  20. {
  21. SOURCE=$1
  22. TARGET=$2
  23. FILE=$3
  24. OS=`uname`
  25. if [[ ${OS} == "Darwin" ]]; then
  26. sed -i "" "s/${SOURCE}/${TARGET}/g" ${FILE}
  27. PRINTF "if"
  28. else
  29. PRINTF "else"
  30. sed -i "s/${SOURCE}/${TARGET}/g" ${FILE}
  31. fi
  32. }
  33. packaging()
  34. {
  35. #***********配置项目
  36. #工程名称(Project的名字)
  37. MWProjectName=$1
  38. #scheme名字 -可以点击Product->Scheme->Manager Schemes...查看
  39. MWScheme=$2
  40. #Release还是Debug
  41. MWConfiguration=$3
  42. #日期
  43. MWDate=`date +%Y%m%d_%H%M`
  44. #工程路径
  45. MWWorkspace=$4
  46. #build路径
  47. MWBuildDir=$5
  48. #plist文件名,默认放在工程文件路径的位置
  49. MBPlistName=$6
  50. #创建构建和输出的路径
  51. mkdir -p $MWBuildDir
  52. #构建
  53. xcodebuild archive \
  54. -workspace "$MWProjectName.xcworkspace" \
  55. -scheme "$MWScheme" \
  56. -configuration "$MWConfiguration" \
  57. -archivePath "$MWBuildDir/$MWProjectName" \
  58. clean \
  59. #build \
  60. # -derivedDataPath "$MWBuildTempDir"
  61. # 生成ipa
  62. xcodebuild -exportArchive \
  63. -archivePath "$MWBuildDir/$MWProjectName.xcarchive" \
  64. -exportPath "$MWBuildDir/$MWProjectName" \
  65. -exportOptionsPlist "$MWWorkspace/$MBPlistName" \
  66. -allowProvisioningUpdates YES #这里是关键,因为使用了Automatically manage signing 这个必填,上一行的\一定不要忘记,这个问题找了好久
  67. open $MWBuildDir
  68. }
  69. cd ${SOURCECODEDIR}
  70. #replace app name 替换AppName
  71. echo "Replace app name..."
  72. SOURCE_STR=${APPNAME}
  73. PLIST_PATH="SchoolApp/Info.plist"
  74. plutil -replace CFBundleDisplayName -string "${SOURCE_STR}" ${PLIST_PATH}
  75. IF_BUILD_FAILED $? "Replace app name failed!"
  76. #replace Bundle ID
  77. echo "Replace Bundle ID..."
  78. cd SchoolApp.xcodeproj
  79. #这个遇到了一个问题,必须使用双引号,使用单引号的话不会转换,也是对语言不熟悉造成的
  80. sed -i '' "s/${Old_BundleID}/${New_BundleID}/g" project.pbxproj
  81. cd ../
  82. IF_BUILD_FAILED $? "Replace Bundle ID failed!"
  83. #replace url
  84. echo "Replace url..."
  85. SOURCE_STR="nlxx"
  86. REPLACE_STRING_IN_FILE ${SOURCE_STR} ${TENANTNAME} ${TARGET_URL_FILE}
  87. IF_BUILD_FAILED $? "Replace url failed!"
  88. # replace accesskey
  89. echo "Replace accesskey..."
  90. str=${ACCESS_KEY}
  91. ACCESSKEYARR=(${str//#/ })
  92. if [[ ${BUILDTYPE} == "Debug" ]]; then
  93. ACCESSKEY=${ACCESSKEYARR[0]}
  94. SOURCE_STR=${OLDKEY}
  95. REPLACE_STRING_IN_FILE ${SOURCE_STR} ${ACCESSKEY} ${TARGET_KEY_FILE}
  96. IF_BUILD_FAILED $? "Replace debug accesskey failed!"
  97. else
  98. ACCESSKEY=${ACCESSKEYARR[1]}
  99. SOURCE_STR=${OLDKEY}
  100. REPLACE_STRING_IN_FILE ${SOURCE_STR} ${ACCESSKEY} ${TARGET_KEY_FILE}
  101. IF_BUILD_FAILED $? "Replace release accesskey failed!"
  102. fi
  103. # replace secretkey
  104. echo "Replace secretkey..."
  105. SECRET_KEY_STR=${SECRET_KEY}
  106. SECRET_KEY_ARR=(${SECRET_KEY_STR//#/ })
  107. if [[ ${BUILDTYPE} == "Debug" ]]; then
  108. SECRETKEY=${SECRET_KEY_ARR[0]}
  109. SOURCE_STR="${OLDKEY}
  110. REPLACE_STRING_IN_FILE ${SOURCE_STR} ${SECRETKEY} ${TARGET_KEY_FILE}
  111. IF_BUILD_FAILED $? "Replace debug secretkey failed!"
  112. else
  113. SECRETKEY=${SECRET_KEY_ARR[1]}
  114. SOURCE_STR="${OLDKEY}
  115. REPLACE_STRING_IN_FILE ${SOURCE_STR} ${SECRETKEY} ${TARGET_KEY_FILE}
  116. IF_BUILD_FAILED $? "Replace release secretkey failed!"
  117. fi
  118. #函数调用
  119. # $1 工程名 $2 scheme名字 $3 Release还是Debug $4 工程路径 $5 ipa文件输出路径 $6 plist文件名字
  120. echo "==============="
  121. echo ""
  122. echo ${BUILDTYPE}
  123. packaging "SchoolApp" "SchoolApp" ${BUILDTYPE} "./" "/Users/jackie/jenkinsArchive/build/buffet" "adhocExportOptions.plist"
  124. echo ""
  125. echo "==============="

最后adhocExportOptions.plist文件其实不需要修改什么,provisioningProfiles后面是空的也可以。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>provisioningProfiles</key>
  6. <dict>
  7. <!-- <key>com.****.MHYCXX</key>
  8. <string>****_AdHoc</string> -->
  9. </dict>
  10. <key>compileBitcode</key>
  11. <false/>
  12. <key>method</key>
  13. <string>ad-hoc</string>
  14. </dict>
  15. </plist>

因为设置了自动管理签名,所以只需要修改Bundle ID就可以,Provisioning Profile可以不用填

 

 

 

 
 
 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/314304
推荐阅读
相关标签
  

闽ICP备14008679号