image.png

    1. #使用方法
    2. if [ ! -d ./IPADir ];
    3. then
    4. mkdir -p IPADir;
    5. fi
    6. #工程绝对路径
    7. project_path=$(cd `dirname $0`; pwd)
    8. #工程名
    9. project_name=block_scape
    10. #scheme名 如果是adhoc, 用第一行, release用第二行
    11. scheme_name=block[Development]
    12. #scheme_name=block[App Store]
    13. #打包模式 Debug/Release
    14. development_mode=Debug
    15. #build文件夹路径
    16. build_path=${project_path}/build
    17. #plist文件所在路径
    18. exportOptionsPlistPath=${project_path}/exportTest.plist
    19. #导出.ipa文件所在路径
    20. exportIpaPath=${project_path}/IPADir/${development_mode}
    21. echo "Place enter the number you want to export ? [ 1:app-store 2:ad-hoc] "
    22. ##
    23. read number
    24. while([[ $number != 1 ]] && [[ $number != 2 ]])
    25. do
    26. echo "Error! Should enter 1 or 2"
    27. echo "Place enter the number you want to export ? [ 1:app-store 2:ad-hoc] "
    28. read number
    29. done
    30. if [ $number == 1 ];then
    31. development_mode=Release
    32. exportOptionsPlistPath=${project_path}/exportAppstore.plist
    33. else
    34. development_mode=Debug
    35. exportOptionsPlistPath=${project_path}/exportTest.plist
    36. fi
    37. echo '///-----------'
    38. echo '/// 正在清理工程'
    39. echo '///-----------'
    40. xcodebuild \
    41. clean -configuration ${development_mode} -quiet || exit
    42. echo '///--------'
    43. echo '/// 清理完成'
    44. echo '///--------'
    45. echo ''
    46. echo '///-----------'
    47. echo '/// 正在编译工程:'${development_mode}
    48. echo '///-----------'
    49. xcodebuild \
    50. archive -workspace ${project_path}/${project_name}.xcworkspace \
    51. -scheme ${scheme_name} \
    52. -configuration ${development_mode} \
    53. -archivePath ${build_path}/${project_name}.xcarchive -quiet || exit
    54. echo '///--------'
    55. echo '/// 编译完成'
    56. echo '///--------'
    57. echo ''
    58. echo '///----------'
    59. echo '/// 开始ipa打包'
    60. echo '///----------'
    61. xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
    62. -configuration ${development_mode} \
    63. -exportPath ${exportIpaPath} \
    64. -exportOptionsPlist ${exportOptionsPlistPath} \
    65. -quiet || exit
    66. if [ -e $exportIpaPath/$scheme_name.ipa ]; then
    67. echo '///----------'
    68. echo '/// ipa包已导出'
    69. echo '///----------'
    70. open $exportIpaPath
    71. else
    72. echo '///-------------'
    73. echo '/// ipa包导出失败 '
    74. echo '///-------------'
    75. fi
    76. echo '///------------'
    77. echo '/// 打包ipa完成 '
    78. echo '///-----------='
    79. echo ''
    80. echo '///-------------'
    81. echo '/// 开始发布ipa包 '
    82. echo '///-------------'
    83. if [ $number == 1 ];then
    84. #验证并上传到App Store
    85. altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
    86. "$altoolPath" --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u 开发者账号 -p 密码 -t ios --output-format xml
    87. "$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u 开发者账号 -p 密码 -t ios --output-format xml
    88. else
    89. #上传到Fir
    90. fir login -T 登录秘钥
    91. fir publish $exportIpaPath/$scheme_name.ipa
    92. fi
    93. exit 0

    exportTest.plist

    <?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>ad-hoc</string>
        <key>compileBitcode</key>
        <false/>
    </dict>
    </plist>
    

    exportAppstore.plist

    <?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>app-store</string>
        <key>uploadBitcode</key>
        <true/>
        <key>uploadSymbols</key>
        <true/>
    </dict>
    </plist>