├── .gitignore
├── AutoPackageScript.sh
├── README.md
├── project_demo
└── AutoPackageScriptDemo
│ ├── AutoPackageScript.sh
│ ├── AutoPackageScriptDemo.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── AutoPackageScriptDemo
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
│ ├── ExportOptions.plist
│ └── Package
│ └── AutoPackageScriptDemo_20180108
│ ├── AutoPackageScriptDemo.ipa
│ ├── AutoPackageScriptDemo.xcarchive
│ ├── BCSymbolMaps
│ │ ├── 097CEB38-22A8-31CD-A37C-569C5028C125.bcsymbolmap
│ │ └── D5DA61EA-2CA9-3706-B70B-A1A467B1726C.bcsymbolmap
│ ├── Info.plist
│ ├── Products
│ │ └── Applications
│ │ │ └── AutoPackageScriptDemo.app
│ │ │ ├── AutoPackageScriptDemo
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboardc
│ │ │ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│ │ │ │ ├── Info.plist
│ │ │ │ └── UIViewController-01J-lp-oVM.nib
│ │ │ └── Main.storyboardc
│ │ │ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib
│ │ │ │ ├── Info.plist
│ │ │ │ └── UIViewController-BYZ-38-t0r.nib
│ │ │ ├── Info.plist
│ │ │ ├── PkgInfo
│ │ │ ├── _CodeSignature
│ │ │ └── CodeResources
│ │ │ ├── archived-expanded-entitlements.xcent
│ │ │ └── embedded.mobileprovision
│ └── dSYMs
│ │ ├── 51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.dSYM
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── 51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.plist
│ │ │ └── DWARF
│ │ │ └── AutoPackageScriptDemo
│ │ ├── 9673F986-8A84-3D35-9FD6-7D1187C34622.dSYM
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── 9673F986-8A84-3D35-9FD6-7D1187C34622.plist
│ │ │ └── DWARF
│ │ │ └── AutoPackageScriptDemo
│ │ └── AutoPackageScriptDemo.app.dSYM
│ │ └── Contents
│ │ ├── Info.plist
│ │ └── Resources
│ │ └── DWARF
│ │ └── AutoPackageScriptDemo
│ ├── DistributionSummary.plist
│ ├── ExportOptions.plist
│ └── Packaging.log
└── workspace_demo
└── AutoPackageScriptDemo
├── AutoPackageScript.sh
├── AutoPackageScriptDemo.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ └── contents.xcworkspacedata
├── AutoPackageScriptDemo.xcworkspace
└── contents.xcworkspacedata
├── AutoPackageScriptDemo
├── AppDelegate.h
├── AppDelegate.m
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Info.plist
├── ViewController.h
├── ViewController.m
└── main.m
├── Package
└── AutoPackageScriptDemo-20171227_205420
│ ├── AutoPackageScriptDemo.xcarchive
│ ├── BCSymbolMaps
│ │ ├── 2337F821-3E77-3B76-9E3C-DC699FFAADFF.bcsymbolmap
│ │ └── 9AFEBB7C-1408-37DC-9B04-33A5BF2F8A30.bcsymbolmap
│ ├── Info.plist
│ ├── Products
│ │ └── Applications
│ │ │ └── AutoPackageScriptDemo.app
│ │ │ ├── AutoPackageScriptDemo
│ │ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboardc
│ │ │ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│ │ │ │ ├── Info.plist
│ │ │ │ └── UIViewController-01J-lp-oVM.nib
│ │ │ └── Main.storyboardc
│ │ │ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC.nib
│ │ │ │ ├── objects-11.0+.nib
│ │ │ │ └── runtime.nib
│ │ │ │ ├── Info.plist
│ │ │ │ └── UIViewController-BYZ-38-t0r.nib
│ │ │ │ ├── objects-11.0+.nib
│ │ │ │ └── runtime.nib
│ │ │ ├── Info.plist
│ │ │ ├── PkgInfo
│ │ │ ├── _CodeSignature
│ │ │ └── CodeResources
│ │ │ ├── archived-expanded-entitlements.xcent
│ │ │ └── embedded.mobileprovision
│ └── dSYMs
│ │ ├── 225CAA8D-3C41-39C0-8EC3-B793387033E5.dSYM
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── 225CAA8D-3C41-39C0-8EC3-B793387033E5.plist
│ │ │ └── DWARF
│ │ │ └── AutoPackageScriptDemo
│ │ ├── 4F736C69-866F-328D-BB1E-2BBD7A50C482.dSYM
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── 4F736C69-866F-328D-BB1E-2BBD7A50C482.plist
│ │ │ └── DWARF
│ │ │ └── AutoPackageScriptDemo
│ │ └── AutoPackageScriptDemo.app.dSYM
│ │ └── Contents
│ │ ├── Info.plist
│ │ └── Resources
│ │ └── DWARF
│ │ └── AutoPackageScriptDemo
│ ├── AutoPackageScriptDemo_20171227_205420.ipa
│ ├── DistributionSummary.plist
│ ├── ExportOptions.plist
│ └── Packaging.log
├── Podfile
├── Podfile.lock
└── Pods
├── Headers
├── Private
│ └── SDWebImage
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSImage+WebCache.h
│ │ ├── SDImageCache.h
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDWebImageCoder.h
│ │ ├── SDWebImageCoderHelper.h
│ │ ├── SDWebImageCodersManager.h
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageFrame.h
│ │ ├── SDWebImageGIFCoder.h
│ │ ├── SDWebImageImageIOCoder.h
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── UIButton+WebCache.h
│ │ ├── UIImage+ForceDecode.h
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIView+WebCache.h
│ │ └── UIView+WebCacheOperation.h
└── Public
│ └── SDWebImage
│ ├── NSData+ImageContentType.h
│ ├── NSImage+WebCache.h
│ ├── SDImageCache.h
│ ├── SDImageCacheConfig.h
│ ├── SDWebImageCoder.h
│ ├── SDWebImageCoderHelper.h
│ ├── SDWebImageCodersManager.h
│ ├── SDWebImageCompat.h
│ ├── SDWebImageDownloader.h
│ ├── SDWebImageDownloaderOperation.h
│ ├── SDWebImageFrame.h
│ ├── SDWebImageGIFCoder.h
│ ├── SDWebImageImageIOCoder.h
│ ├── SDWebImageManager.h
│ ├── SDWebImageOperation.h
│ ├── SDWebImagePrefetcher.h
│ ├── UIButton+WebCache.h
│ ├── UIImage+ForceDecode.h
│ ├── UIImage+GIF.h
│ ├── UIImage+MultiFormat.h
│ ├── UIImageView+HighlightedWebCache.h
│ ├── UIImageView+WebCache.h
│ ├── UIView+WebCache.h
│ └── UIView+WebCacheOperation.h
├── Manifest.lock
├── Pods.xcodeproj
└── project.pbxproj
├── SDWebImage
├── LICENSE
├── README.md
└── SDWebImage
│ ├── NSData+ImageContentType.h
│ ├── NSData+ImageContentType.m
│ ├── NSImage+WebCache.h
│ ├── NSImage+WebCache.m
│ ├── SDImageCache.h
│ ├── SDImageCache.m
│ ├── SDImageCacheConfig.h
│ ├── SDImageCacheConfig.m
│ ├── SDWebImageCoder.h
│ ├── SDWebImageCoder.m
│ ├── SDWebImageCoderHelper.h
│ ├── SDWebImageCoderHelper.m
│ ├── SDWebImageCodersManager.h
│ ├── SDWebImageCodersManager.m
│ ├── SDWebImageCompat.h
│ ├── SDWebImageCompat.m
│ ├── SDWebImageDownloader.h
│ ├── SDWebImageDownloader.m
│ ├── SDWebImageDownloaderOperation.h
│ ├── SDWebImageDownloaderOperation.m
│ ├── SDWebImageFrame.h
│ ├── SDWebImageFrame.m
│ ├── SDWebImageGIFCoder.h
│ ├── SDWebImageGIFCoder.m
│ ├── SDWebImageImageIOCoder.h
│ ├── SDWebImageImageIOCoder.m
│ ├── SDWebImageManager.h
│ ├── SDWebImageManager.m
│ ├── SDWebImageOperation.h
│ ├── SDWebImagePrefetcher.h
│ ├── SDWebImagePrefetcher.m
│ ├── UIButton+WebCache.h
│ ├── UIButton+WebCache.m
│ ├── UIImage+ForceDecode.h
│ ├── UIImage+ForceDecode.m
│ ├── UIImage+GIF.h
│ ├── UIImage+GIF.m
│ ├── UIImage+MultiFormat.h
│ ├── UIImage+MultiFormat.m
│ ├── UIImageView+HighlightedWebCache.h
│ ├── UIImageView+HighlightedWebCache.m
│ ├── UIImageView+WebCache.h
│ ├── UIImageView+WebCache.m
│ ├── UIView+WebCache.h
│ ├── UIView+WebCache.m
│ ├── UIView+WebCacheOperation.h
│ └── UIView+WebCacheOperation.m
└── Target Support Files
├── Pods-AutoPackageScriptDemo
├── Pods-AutoPackageScriptDemo-acknowledgements.markdown
├── Pods-AutoPackageScriptDemo-acknowledgements.plist
├── Pods-AutoPackageScriptDemo-dummy.m
├── Pods-AutoPackageScriptDemo-frameworks.sh
├── Pods-AutoPackageScriptDemo-resources.sh
├── Pods-AutoPackageScriptDemo.debug.xcconfig
└── Pods-AutoPackageScriptDemo.release.xcconfig
└── SDWebImage
├── SDWebImage-dummy.m
├── SDWebImage-prefix.pch
└── SDWebImage.xcconfig
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | .DS_Store
3 |
4 | #用户数据文件夹(无用)
5 | xcuserdata/
6 |
7 |
--------------------------------------------------------------------------------
/AutoPackageScript.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # 使用方法:
4 | # step1: 将该脚本放在工程的根目录下(跟.xcworkspace文件or .xcodeproj文件同目录)
5 | # step2: 根据情况修改下面的参数
6 | # step3: 打开终端,执行脚本。(输入sh ,然后将脚本文件拉到终端,会生成文件路径,然后enter就可)
7 |
8 | # =============项目自定义部分(自定义好下列参数后再执行该脚本)=================== #
9 |
10 | # 是否编译工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
11 | is_workspace="false"
12 |
13 | # .xcworkspace的名字,如果is_workspace为true,则必须填。否则可不填
14 | workspace_name=""
15 |
16 | # .xcodeproj的名字,如果is_workspace为false,则必须填。否则可不填
17 | project_name="AutoPackageScriptDemo"
18 |
19 | # 指定项目的scheme名称(也就是工程的target名称),必填
20 | scheme_name="AutoPackageScriptDemo"
21 |
22 | # 指定要打包编译的方式 : Release,Debug。一般用Release。必填
23 | build_configuration="Release"
24 |
25 | # method,打包的方式。方式分别为 development, ad-hoc, app-store, enterprise 。必填
26 | method="development"
27 |
28 |
29 | # 下面两个参数只是在手动指定Pofile文件的时候用到,如果使用Xcode自动管理Profile,直接留空就好
30 | # (跟method对应的)mobileprovision文件名,需要先双击安装.mobileprovision文件.手动管理Profile时必填
31 | mobileprovision_name=""
32 |
33 | # 项目的bundleID,手动管理Profile时必填
34 | bundle_identifier=""
35 |
36 |
37 | echo "--------------------脚本配置参数检查--------------------"
38 | echo "\033[33;1mis_workspace=${is_workspace} "
39 | echo "workspace_name=${workspace_name}"
40 | echo "project_name=${project_name}"
41 | echo "scheme_name=${scheme_name}"
42 | echo "build_configuration=${build_configuration}"
43 | echo "bundle_identifier=${bundle_identifier}"
44 | echo "method=${method}"
45 | echo "mobileprovision_name=${mobileprovision_name} \033[0m"
46 |
47 |
48 | # =======================脚本的一些固定参数定义(无特殊情况不用修改)====================== #
49 |
50 | # 获取当前脚本所在目录
51 | script_dir="$( cd "$( dirname "$0" )" && pwd )"
52 | # 工程根目录
53 | project_dir=$script_dir
54 |
55 | # 时间
56 | DATE=`date '+%Y%m%d_%H%M%S'`
57 | # 指定输出导出文件夹路径
58 | export_path="$project_dir/Package/$scheme_name-$DATE"
59 | # 指定输出归档文件路径
60 | export_archive_path="$export_path/$scheme_name.xcarchive"
61 | # 指定输出ipa文件夹路径
62 | export_ipa_path="$export_path"
63 | # 指定输出ipa名称
64 | ipa_name="${scheme_name}_${DATE}"
65 | # 指定导出ipa包需要用到的plist配置文件的路径
66 | export_options_plist_path="$project_dir/ExportOptions.plist"
67 |
68 |
69 | echo "--------------------脚本固定参数检查--------------------"
70 | echo "\033[33;1mproject_dir=${project_dir}"
71 | echo "DATE=${DATE}"
72 | echo "export_path=${export_path}"
73 | echo "export_archive_path=${export_archive_path}"
74 | echo "export_ipa_path=${export_ipa_path}"
75 | echo "export_options_plist_path=${export_options_plist_path}"
76 | echo "ipa_name=${ipa_name} \033[0m"
77 |
78 | # =======================自动打包部分(无特殊情况不用修改)====================== #
79 |
80 | echo "------------------------------------------------------"
81 | echo "\033[32m开始构建项目 \033[0m"
82 | # 进入项目工程目录
83 | cd ${project_dir}
84 |
85 | # 指定输出文件目录不存在则创建
86 | if [ -d "$export_path" ] ; then
87 | echo $export_path
88 | else
89 | mkdir -pv $export_path
90 | fi
91 |
92 | # 判断编译的项目类型是workspace还是project
93 | if $is_workspace ; then
94 | # 编译前清理工程
95 | xcodebuild clean -workspace ${workspace_name}.xcworkspace \
96 | -scheme ${scheme_name} \
97 | -configuration ${build_configuration}
98 |
99 | xcodebuild archive -workspace ${workspace_name}.xcworkspace \
100 | -scheme ${scheme_name} \
101 | -configuration ${build_configuration} \
102 | -archivePath ${export_archive_path}
103 | else
104 | # 编译前清理工程
105 | xcodebuild clean -project ${project_name}.xcodeproj \
106 | -scheme ${scheme_name} \
107 | -configuration ${build_configuration}
108 |
109 | xcodebuild archive -project ${project_name}.xcodeproj \
110 | -scheme ${scheme_name} \
111 | -configuration ${build_configuration} \
112 | -archivePath ${export_archive_path}
113 | fi
114 |
115 | # 检查是否构建成功
116 | # xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断
117 | if [ -d "$export_archive_path" ] ; then
118 | echo "\033[32;1m项目构建成功 🚀 🚀 🚀 \033[0m"
119 | else
120 | echo "\033[31;1m项目构建失败 😢 😢 😢 \033[0m"
121 | exit 1
122 | fi
123 | echo "------------------------------------------------------"
124 |
125 | echo "\033[32m开始导出ipa文件 \033[0m"
126 |
127 |
128 | # 先删除export_options_plist文件
129 | if [ -f "$export_options_plist_path" ] ; then
130 | #echo "${export_options_plist_path}文件存在,进行删除"
131 | rm -f $export_options_plist_path
132 | fi
133 | # 根据参数生成export_options_plist文件
134 | /usr/libexec/PlistBuddy -c "Add :method String ${method}" $export_options_plist_path
135 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:" $export_options_plist_path
136 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:${bundle_identifier} String ${mobileprovision_name}" $export_options_plist_path
137 |
138 |
139 | xcodebuild -exportArchive \
140 | -archivePath ${export_archive_path} \
141 | -exportPath ${export_ipa_path} \
142 | -exportOptionsPlist ${export_options_plist_path} \
143 | -allowProvisioningUpdates
144 |
145 | # 检查ipa文件是否存在
146 | if [ -f "$export_ipa_path/$scheme_name.ipa" ] ; then
147 | echo "\033[32;1mexportArchive ipa包成功,准备进行重命名\033[0m"
148 | else
149 | echo "\033[31;1mexportArchive ipa包失败 😢 😢 😢 \033[0m"
150 | exit 1
151 | fi
152 |
153 | # 修改ipa文件名称
154 | mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa
155 |
156 | # 检查文件是否存在
157 | if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
158 | echo "\033[32;1m导出 ${ipa_name}.ipa 包成功 🎉 🎉 🎉 \033[0m"
159 | open $export_path
160 | else
161 | echo "\033[31;1m导出 ${ipa_name}.ipa 包失败 😢 😢 😢 \033[0m"
162 | exit 1
163 | fi
164 |
165 | # 删除export_options_plist文件(中间文件)
166 | if [ -f "$export_options_plist_path" ] ; then
167 | #echo "${export_options_plist_path}文件存在,准备删除"
168 | rm -f $export_options_plist_path
169 | fi
170 |
171 | # 输出打包总用时
172 | echo "\033[36;1m使用AutoPackageScript打包总用时: ${SECONDS}s \033[0m"
173 |
174 | exit 0
175 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AutoPackageScript
2 | 一个简单的ipa打包脚本,用shell语言编写。
3 | 介绍文章在简书上。
4 | [【iOS】分享一个ipa打包脚本](http://www.jianshu.com/p/a61fe38c8c29)
5 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScript.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # 使用方法:
4 | # step1: 将该脚本放在工程的根目录下(跟.xcworkspace文件or .xcodeproj文件同目录)
5 | # step2: 根据情况修改下面的参数
6 | # step3: 打开终端,执行脚本。(输入sh,然后将脚本文件拉到终端,会生成文件路径,然后enter就可)
7 |
8 | # =============项目自定义部分(自定义好下列参数后再执行该脚本)=================== #
9 |
10 | # 是否编译工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
11 | is_workspace="false"
12 |
13 | # .xcworkspace的名字,如果is_workspace为true,则必须填。否则可不填
14 | workspace_name=""
15 |
16 | # .xcodeproj的名字,如果is_workspace为false,则必须填。否则可不填
17 | project_name="AutoPackageScriptDemo"
18 |
19 | # 指定项目的scheme名称(也就是工程的target名称),必填
20 | scheme_name="AutoPackageScriptDemo"
21 |
22 | # 指定要打包编译的方式 : Release,Debug。一般用Release。必填
23 | build_configuration="Release"
24 |
25 | # method,打包的方式。方式分别为 development, ad-hoc, app-store, enterprise 。必填
26 | method="development"
27 |
28 |
29 | # 下面两个参数只是在手动指定Pofile文件的时候用到,如果使用Xcode自动管理Profile,直接留空就好
30 | # (跟method对应的)mobileprovision文件名,需要先双击安装.mobileprovision文件.手动管理Profile时必填
31 | mobileprovision_name=""
32 |
33 | # 项目的bundleID,手动管理Profile时必填
34 | bundle_identifier=""
35 |
36 |
37 | echo "--------------------脚本配置参数检查--------------------"
38 | echo "\033[33;1mis_workspace=${is_workspace} "
39 | echo "workspace_name=${workspace_name}"
40 | echo "project_name=${project_name}"
41 | echo "scheme_name=${scheme_name}"
42 | echo "build_configuration=${build_configuration}"
43 | echo "bundle_identifier=${bundle_identifier}"
44 | echo "method=${method}"
45 | echo "mobileprovision_name=${mobileprovision_name} \033[0m"
46 |
47 |
48 | # =======================脚本的一些固定参数定义(无特殊情况不用修改)====================== #
49 |
50 | # 获取当前脚本所在目录
51 | script_dir="$( cd "$( dirname "$0" )" && pwd )"
52 | # 工程根目录
53 | project_dir=$script_dir
54 |
55 | # 时间
56 | DATE=`date '+%Y%m%d_%H%M%S'`
57 | # 指定输出导出文件夹路径
58 | export_path="$project_dir/Package/$scheme_name-$DATE"
59 | # 指定输出归档文件路径
60 | export_archive_path="$export_path/$scheme_name.xcarchive"
61 | # 指定输出ipa文件夹路径
62 | export_ipa_path="$export_path"
63 | # 指定输出ipa名称
64 | ipa_name="${scheme_name}_${DATE}"
65 | # 指定导出ipa包需要用到的plist配置文件的路径
66 | export_options_plist_path="$project_dir/ExportOptions.plist"
67 |
68 |
69 | echo "--------------------脚本固定参数检查--------------------"
70 | echo "\033[33;1mproject_dir=${project_dir}"
71 | echo "DATE=${DATE}"
72 | echo "export_path=${export_path}"
73 | echo "export_archive_path=${export_archive_path}"
74 | echo "export_ipa_path=${export_ipa_path}"
75 | echo "export_options_plist_path=${export_options_plist_path}"
76 | echo "ipa_name=${ipa_name} \033[0m"
77 |
78 | # =======================自动打包部分(无特殊情况不用修改)====================== #
79 |
80 | echo "------------------------------------------------------"
81 | echo "\033[32m开始构建项目 \033[0m"
82 | # 进入项目工程目录
83 | cd ${project_dir}
84 |
85 | # 指定输出文件目录不存在则创建
86 | if [ -d "$export_path" ] ; then
87 | echo $export_path
88 | else
89 | mkdir -pv $export_path
90 | fi
91 |
92 | # 判断编译的项目类型是workspace还是project
93 | if $is_workspace ; then
94 | # 编译前清理工程
95 | xcodebuild clean -workspace ${workspace_name}.xcworkspace \
96 | -scheme ${scheme_name} \
97 | -configuration ${build_configuration}
98 |
99 | xcodebuild archive -workspace ${workspace_name}.xcworkspace \
100 | -scheme ${scheme_name} \
101 | -configuration ${build_configuration} \
102 | -archivePath ${export_archive_path}
103 | else
104 | # 编译前清理工程
105 | xcodebuild clean -project ${project_name}.xcodeproj \
106 | -scheme ${scheme_name} \
107 | -configuration ${build_configuration}
108 |
109 | xcodebuild archive -project ${project_name}.xcodeproj \
110 | -scheme ${scheme_name} \
111 | -configuration ${build_configuration} \
112 | -archivePath ${export_archive_path}
113 | fi
114 |
115 | # 检查是否构建成功
116 | # xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断
117 | if [ -d "$export_archive_path" ] ; then
118 | echo "\033[32;1m项目构建成功 🚀 🚀 🚀 \033[0m"
119 | else
120 | echo "\033[31;1m项目构建失败 😢 😢 😢 \033[0m"
121 | exit 1
122 | fi
123 | echo "------------------------------------------------------"
124 |
125 | echo "\033[32m开始导出ipa文件 \033[0m"
126 |
127 |
128 | # 先删除export_options_plist文件
129 | if [ -f "$export_options_plist_path" ] ; then
130 | #echo "${export_options_plist_path}文件存在,进行删除"
131 | rm -f $export_options_plist_path
132 | fi
133 | # 根据参数生成export_options_plist文件
134 | /usr/libexec/PlistBuddy -c "Add :method String ${method}" $export_options_plist_path
135 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:" $export_options_plist_path
136 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:${bundle_identifier} String ${mobileprovision_name}" $export_options_plist_path
137 |
138 |
139 | xcodebuild -exportArchive \
140 | -archivePath ${export_archive_path} \
141 | -exportPath ${export_ipa_path} \
142 | -exportOptionsPlist ${export_options_plist_path} \
143 | -allowProvisioningUpdates
144 |
145 | # 检查ipa文件是否存在
146 | if [ -f "$export_ipa_path/$scheme_name.ipa" ] ; then
147 | echo "\033[32;1mexportArchive ipa包成功,准备进行重命名\033[0m"
148 | else
149 | echo "\033[31;1mexportArchive ipa包失败 😢 😢 😢 \033[0m"
150 | exit 1
151 | fi
152 |
153 | # 修改ipa文件名称
154 | mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa
155 |
156 | # 检查文件是否存在
157 | if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
158 | echo "\033[32;1m导出 ${ipa_name}.ipa 包成功 🎉 🎉 🎉 \033[0m"
159 | open $export_path
160 | else
161 | echo "\033[31;1m导出 ${ipa_name}.ipa 包失败 😢 😢 😢 \033[0m"
162 | exit 1
163 | fi
164 |
165 | # 删除export_options_plist文件(中间文件)
166 | if [ -f "$export_options_plist_path" ] ; then
167 | #echo "${export_options_plist_path}文件存在,准备删除"
168 | rm -f $export_options_plist_path
169 | fi
170 |
171 | # 输出打包总用时
172 | echo "\033[36;1m使用AutoPackageScript打包总用时: ${SECONDS}s \033[0m"
173 |
174 | exit 0
175 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | }
88 | ],
89 | "info" : {
90 | "version" : 1,
91 | "author" : "xcode"
92 | }
93 | }
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 |
11 | @interface ViewController ()
12 |
13 | @end
14 |
15 | @implementation ViewController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | // Do any additional setup after loading the view, typically from a nib.
20 | }
21 |
22 |
23 | - (void)didReceiveMemoryWarning {
24 | [super didReceiveMemoryWarning];
25 | // Dispose of any resources that can be recreated.
26 | }
27 |
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | method
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.ipa:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.ipa
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/BCSymbolMaps/097CEB38-22A8-31CD-A37C-569C5028C125.bcsymbolmap:
--------------------------------------------------------------------------------
1 | BCSymbolMap Version: 2.0
2 | -[ViewController viewDidLoad]
3 | -[ViewController didReceiveMemoryWarning]
4 | _OBJC_CLASS_$_ViewController
5 | _OBJC_METACLASS_$_ViewController
6 | Apple LLVM version 9.0.0 (clang-900.0.39.2)
7 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.m
8 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo
9 | _OBJC_CLASS_$_AppDelegate
10 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/main.m
11 | main
12 | -[AppDelegate application:didFinishLaunchingWithOptions:]
13 | -[AppDelegate applicationWillResignActive:]
14 | -[AppDelegate applicationDidEnterBackground:]
15 | -[AppDelegate applicationWillEnterForeground:]
16 | -[AppDelegate applicationDidBecomeActive:]
17 | -[AppDelegate applicationWillTerminate:]
18 | -[AppDelegate window]
19 | -[AppDelegate setWindow:]
20 | -[AppDelegate .cxx_destruct]
21 | _OBJC_IVAR_$_AppDelegate._window
22 | l_OBJC_PROTOCOL_$_NSObject
23 | l_OBJC_LABEL_PROTOCOL_$_NSObject
24 | l_OBJC_PROTOCOL_$_UIApplicationDelegate
25 | l_OBJC_LABEL_PROTOCOL_$_UIApplicationDelegate
26 | _OBJC_METACLASS_$_AppDelegate
27 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.m
28 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.h
29 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/BCSymbolMaps/D5DA61EA-2CA9-3706-B70B-A1A467B1726C.bcsymbolmap:
--------------------------------------------------------------------------------
1 | BCSymbolMap Version: 2.0
2 | -[ViewController viewDidLoad]
3 | -[ViewController didReceiveMemoryWarning]
4 | _OBJC_CLASS_$_ViewController
5 | _OBJC_METACLASS_$_ViewController
6 | Apple LLVM version 9.0.0 (clang-900.0.39.2)
7 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.m
8 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo
9 | _OBJC_CLASS_$_AppDelegate
10 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/main.m
11 | main
12 | -[AppDelegate application:didFinishLaunchingWithOptions:]
13 | -[AppDelegate applicationWillResignActive:]
14 | -[AppDelegate applicationDidEnterBackground:]
15 | -[AppDelegate applicationWillEnterForeground:]
16 | -[AppDelegate applicationDidBecomeActive:]
17 | -[AppDelegate applicationWillTerminate:]
18 | -[AppDelegate window]
19 | -[AppDelegate setWindow:]
20 | -[AppDelegate .cxx_destruct]
21 | _OBJC_IVAR_$_AppDelegate._window
22 | l_OBJC_PROTOCOL_$_NSObject
23 | l_OBJC_LABEL_PROTOCOL_$_NSObject
24 | l_OBJC_PROTOCOL_$_UIApplicationDelegate
25 | l_OBJC_LABEL_PROTOCOL_$_UIApplicationDelegate
26 | _OBJC_METACLASS_$_AppDelegate
27 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.m
28 | /Users/mac/Desktop/简书/AutoPackageScript/project_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.h
29 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ApplicationProperties
6 |
7 | ApplicationPath
8 | Applications/AutoPackageScriptDemo.app
9 | CFBundleIdentifier
10 | com.shixueqian.02
11 | CFBundleShortVersionString
12 | 1.0
13 | CFBundleVersion
14 | 1
15 | SigningIdentity
16 | iPhone Developer: shixueqian12345@163.com (6HBARX34Q2)
17 |
18 | ArchiveVersion
19 | 2
20 | CreationDate
21 | 2018-01-08T17:10:07Z
22 | Name
23 | AutoPackageScriptDemo
24 | SchemeName
25 | AutoPackageScriptDemo
26 |
27 |
28 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/Info.plist
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/Info.plist
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Info.plist
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
8 |
9 | tddaShS1YYYVz3Dc63gf4O51eY8=
10 |
11 | Base.lproj/LaunchScreen.storyboardc/Info.plist
12 |
13 | n2t8gsDpfE6XkhG31p7IQJRxTxU=
14 |
15 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
16 |
17 | h9MwxtAhQV9BjlqoGIr16iis6XE=
18 |
19 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib
20 |
21 | rPkfQymocgjuxKCYGolUWCk8NhY=
22 |
23 | Base.lproj/Main.storyboardc/Info.plist
24 |
25 | MDrKFvFWroTb0+KEbQShBcoBvo4=
26 |
27 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib
28 |
29 | Ka/oGY85pPQTTT9/UCBfdRJo7ac=
30 |
31 | Info.plist
32 |
33 | LpEMsnpK2/nSR2PRV6dhCyYbMkc=
34 |
35 | PkgInfo
36 |
37 | n57qDP4tZfLD1rCS43W0B4LQjzE=
38 |
39 | archived-expanded-entitlements.xcent
40 |
41 | W/v5kK8EUQ7tWsrX0Hs+pkQYnZg=
42 |
43 | embedded.mobileprovision
44 |
45 | I3oJUQBraXSEPtEks6NKIECgvQg=
46 |
47 |
48 | files2
49 |
50 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
51 |
52 | hash
53 |
54 | tddaShS1YYYVz3Dc63gf4O51eY8=
55 |
56 | hash2
57 |
58 | fAJ/wWi/iirA+7Qppwfd+rKuUpQWmPFLayxW/osKA/U=
59 |
60 |
61 | Base.lproj/LaunchScreen.storyboardc/Info.plist
62 |
63 | hash
64 |
65 | n2t8gsDpfE6XkhG31p7IQJRxTxU=
66 |
67 | hash2
68 |
69 | HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
70 |
71 |
72 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
73 |
74 | hash
75 |
76 | h9MwxtAhQV9BjlqoGIr16iis6XE=
77 |
78 | hash2
79 |
80 | 6pHwqTSIfHQpcoKSGWk2Qn8MmL6E3DqhX5IfFXXTjCc=
81 |
82 |
83 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib
84 |
85 | hash
86 |
87 | rPkfQymocgjuxKCYGolUWCk8NhY=
88 |
89 | hash2
90 |
91 | ryBRPlL6p3cBUAxAQObEaDQQf/QaicNKIjsehw1fmRM=
92 |
93 |
94 | Base.lproj/Main.storyboardc/Info.plist
95 |
96 | hash
97 |
98 | MDrKFvFWroTb0+KEbQShBcoBvo4=
99 |
100 | hash2
101 |
102 | PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
103 |
104 |
105 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib
106 |
107 | hash
108 |
109 | Ka/oGY85pPQTTT9/UCBfdRJo7ac=
110 |
111 | hash2
112 |
113 | hFigVNKZYNHeZD83EzW3eybDbWtYW4HfgmyL/JUKuaE=
114 |
115 |
116 | archived-expanded-entitlements.xcent
117 |
118 | hash
119 |
120 | W/v5kK8EUQ7tWsrX0Hs+pkQYnZg=
121 |
122 | hash2
123 |
124 | agHvdqYWV5w3qs8pWCMVhaU888xP1LXStBw66EG71/c=
125 |
126 |
127 | embedded.mobileprovision
128 |
129 | hash
130 |
131 | I3oJUQBraXSEPtEks6NKIECgvQg=
132 |
133 | hash2
134 |
135 | 1KMuz4FYQhZ4t+fNJ2QkB19KoQc7UFoLctt65nOqH3Y=
136 |
137 |
138 |
139 | rules
140 |
141 | ^
142 |
143 | ^.*\.lproj/
144 |
145 | optional
146 |
147 | weight
148 | 1000
149 |
150 | ^.*\.lproj/locversion.plist$
151 |
152 | omit
153 |
154 | weight
155 | 1100
156 |
157 | ^Base\.lproj/
158 |
159 | weight
160 | 1010
161 |
162 | ^version.plist$
163 |
164 |
165 | rules2
166 |
167 | .*\.dSYM($|/)
168 |
169 | weight
170 | 11
171 |
172 | ^
173 |
174 | weight
175 | 20
176 |
177 | ^(.*/)?\.DS_Store$
178 |
179 | omit
180 |
181 | weight
182 | 2000
183 |
184 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
185 |
186 | nested
187 |
188 | weight
189 | 10
190 |
191 | ^.*
192 |
193 | ^.*\.lproj/
194 |
195 | optional
196 |
197 | weight
198 | 1000
199 |
200 | ^.*\.lproj/locversion.plist$
201 |
202 | omit
203 |
204 | weight
205 | 1100
206 |
207 | ^Base\.lproj/
208 |
209 | weight
210 | 1010
211 |
212 | ^Info\.plist$
213 |
214 | omit
215 |
216 | weight
217 | 20
218 |
219 | ^PkgInfo$
220 |
221 | omit
222 |
223 | weight
224 | 20
225 |
226 | ^[^/]+$
227 |
228 | nested
229 |
230 | weight
231 | 10
232 |
233 | ^embedded\.provisionprofile$
234 |
235 | weight
236 | 20
237 |
238 | ^version\.plist$
239 |
240 | weight
241 | 20
242 |
243 |
244 |
245 |
246 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/archived-expanded-entitlements.xcent:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | application-identifier
6 | M9XE43A3CX.com.shixueqian.02
7 | keychain-access-groups
8 |
9 | M9XE43A3CX.com.shixueqian.02
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/embedded.mobileprovision:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/embedded.mobileprovision
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.AutoPackageScriptDemo
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.dSYM/Contents/Resources/51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DBGOriginalUUID
5 | 097CEB38-22A8-31CD-A37C-569C5028C125
6 |
7 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/51816FF5-78ED-3BF0-B4B6-4AD5F80B71F9.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/9673F986-8A84-3D35-9FD6-7D1187C34622.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.AutoPackageScriptDemo
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/9673F986-8A84-3D35-9FD6-7D1187C34622.dSYM/Contents/Resources/9673F986-8A84-3D35-9FD6-7D1187C34622.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DBGOriginalUUID
5 | D5DA61EA-2CA9-3706-B70B-A1A467B1726C
6 |
7 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/9673F986-8A84-3D35-9FD6-7D1187C34622.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/9673F986-8A84-3D35-9FD6-7D1187C34622.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.com.shixueqian.02
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/DistributionSummary.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AutoPackageScriptDemo.ipa
6 |
7 |
8 | architectures
9 |
10 | armv7
11 | arm64
12 |
13 | certificate
14 |
15 | SHA1
16 | C23649AD72AF3EA9FA4F27CE5FBAD497DBBD4535
17 | dateExpires
18 | 2018/11/22
19 | type
20 | iOS Development
21 |
22 | entitlements
23 |
24 | application-identifier
25 | M9XE43A3CX.com.shixueqian.02
26 | com.apple.developer.team-identifier
27 | M9XE43A3CX
28 | get-task-allow
29 |
30 | keychain-access-groups
31 |
32 | M9XE43A3CX.com.shixueqian.02
33 |
34 |
35 | name
36 | AutoPackageScriptDemo.app
37 | profile
38 |
39 | UUID
40 | f66531ee-c6d2-4b55-9d09-9150816663a0
41 | name
42 | iOS Team Provisioning Profile: com.shixueqian.02
43 |
44 | team
45 |
46 | id
47 | M9XE43A3CX
48 | name
49 | 石 学谦
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/project_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo_20180108/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | compileBitcode
6 |
7 | method
8 | development
9 | signingStyle
10 | automatic
11 | stripSwiftSymbols
12 |
13 | teamID
14 | M9XE43A3CX
15 | thinning
16 | <none>
17 |
18 |
19 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScript.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # 使用方法:
4 | # step1: 将该脚本放在工程的根目录下(跟.xcworkspace文件or .xcodeproj文件同目录)
5 | # step2: 根据情况修改下面的参数
6 | # step3: 打开终端,执行脚本。(输入sh,然后将脚本文件拉到终端,会生成文件路径,然后enter就可)
7 |
8 | # =============项目自定义部分(自定义好下列参数后再执行该脚本)=================== #
9 |
10 | # 是否编译工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
11 | is_workspace="true"
12 |
13 | # .xcworkspace的名字,如果is_workspace为true,则必须填。否则可不填
14 | workspace_name="AutoPackageScriptDemo"
15 |
16 | # .xcodeproj的名字,如果is_workspace为false,则必须填。否则可不填
17 | project_name="AutoPackageScriptDemo"
18 |
19 | # 指定项目的scheme名称(也就是工程的target名称),必填
20 | scheme_name="AutoPackageScriptDemo"
21 |
22 | # 指定要打包编译的方式 : Release,Debug。一般用Release。必填
23 | build_configuration="Release"
24 |
25 | # method,打包的方式。方式分别为 development, ad-hoc, app-store, enterprise 。必填
26 | method="development"
27 |
28 |
29 | # 下面两个参数只是在手动指定Pofile文件的时候用到,如果使用Xcode自动管理Profile,直接留空就好
30 | # (跟method对应的)mobileprovision文件名,需要先双击安装.mobileprovision文件.手动管理Profile时必填
31 | mobileprovision_name=""
32 |
33 | # 项目的bundleID,手动管理Profile时必填
34 | bundle_identifier=""
35 |
36 |
37 | echo "--------------------脚本配置参数检查--------------------"
38 | echo "\033[33;1mis_workspace=${is_workspace} "
39 | echo "workspace_name=${workspace_name}"
40 | echo "project_name=${project_name}"
41 | echo "scheme_name=${scheme_name}"
42 | echo "build_configuration=${build_configuration}"
43 | echo "bundle_identifier=${bundle_identifier}"
44 | echo "method=${method}"
45 | echo "mobileprovision_name=${mobileprovision_name} \033[0m"
46 |
47 |
48 | # =======================脚本的一些固定参数定义(无特殊情况不用修改)====================== #
49 |
50 | # 获取当前脚本所在目录
51 | script_dir="$( cd "$( dirname "$0" )" && pwd )"
52 | # 工程根目录
53 | project_dir=$script_dir
54 |
55 | # 时间
56 | DATE=`date '+%Y%m%d_%H%M%S'`
57 | # 指定输出导出文件夹路径
58 | export_path="$project_dir/Package/$scheme_name-$DATE"
59 | # 指定输出归档文件路径
60 | export_archive_path="$export_path/$scheme_name.xcarchive"
61 | # 指定输出ipa文件夹路径
62 | export_ipa_path="$export_path"
63 | # 指定输出ipa名称
64 | ipa_name="${scheme_name}_${DATE}"
65 | # 指定导出ipa包需要用到的plist配置文件的路径
66 | export_options_plist_path="$project_dir/ExportOptions.plist"
67 |
68 |
69 | echo "--------------------脚本固定参数检查--------------------"
70 | echo "\033[33;1mproject_dir=${project_dir}"
71 | echo "DATE=${DATE}"
72 | echo "export_path=${export_path}"
73 | echo "export_archive_path=${export_archive_path}"
74 | echo "export_ipa_path=${export_ipa_path}"
75 | echo "export_options_plist_path=${export_options_plist_path}"
76 | echo "ipa_name=${ipa_name} \033[0m"
77 |
78 | # =======================自动打包部分(无特殊情况不用修改)====================== #
79 |
80 | echo "------------------------------------------------------"
81 | echo "\033[32m开始构建项目 \033[0m"
82 | # 进入项目工程目录
83 | cd ${project_dir}
84 |
85 | # 指定输出文件目录不存在则创建
86 | if [ -d "$export_path" ] ; then
87 | echo $export_path
88 | else
89 | mkdir -pv $export_path
90 | fi
91 |
92 | # 判断编译的项目类型是workspace还是project
93 | if $is_workspace ; then
94 | # 编译前清理工程
95 | xcodebuild clean -workspace ${workspace_name}.xcworkspace \
96 | -scheme ${scheme_name} \
97 | -configuration ${build_configuration}
98 |
99 | xcodebuild archive -workspace ${workspace_name}.xcworkspace \
100 | -scheme ${scheme_name} \
101 | -configuration ${build_configuration} \
102 | -archivePath ${export_archive_path}
103 | else
104 | # 编译前清理工程
105 | xcodebuild clean -project ${project_name}.xcodeproj \
106 | -scheme ${scheme_name} \
107 | -configuration ${build_configuration}
108 |
109 | xcodebuild archive -project ${project_name}.xcodeproj \
110 | -scheme ${scheme_name} \
111 | -configuration ${build_configuration} \
112 | -archivePath ${export_archive_path}
113 | fi
114 |
115 | # 检查是否构建成功
116 | # xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断
117 | if [ -d "$export_archive_path" ] ; then
118 | echo "\033[32;1m项目构建成功 🚀 🚀 🚀 \033[0m"
119 | else
120 | echo "\033[31;1m项目构建失败 😢 😢 😢 \033[0m"
121 | exit 1
122 | fi
123 | echo "------------------------------------------------------"
124 |
125 | echo "\033[32m开始导出ipa文件 \033[0m"
126 |
127 |
128 | # 先删除export_options_plist文件
129 | if [ -f "$export_options_plist_path" ] ; then
130 | #echo "${export_options_plist_path}文件存在,进行删除"
131 | rm -f $export_options_plist_path
132 | fi
133 | # 根据参数生成export_options_plist文件
134 | /usr/libexec/PlistBuddy -c "Add :method String ${method}" $export_options_plist_path
135 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:" $export_options_plist_path
136 | /usr/libexec/PlistBuddy -c "Add :provisioningProfiles:${bundle_identifier} String ${mobileprovision_name}" $export_options_plist_path
137 |
138 |
139 | xcodebuild -exportArchive \
140 | -archivePath ${export_archive_path} \
141 | -exportPath ${export_ipa_path} \
142 | -exportOptionsPlist ${export_options_plist_path} \
143 | -allowProvisioningUpdates
144 |
145 | # 检查ipa文件是否存在
146 | if [ -f "$export_ipa_path/$scheme_name.ipa" ] ; then
147 | echo "\033[32;1mexportArchive ipa包成功,准备进行重命名\033[0m"
148 | else
149 | echo "\033[31;1mexportArchive ipa包失败 😢 😢 😢 \033[0m"
150 | exit 1
151 | fi
152 |
153 | # 修改ipa文件名称
154 | mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa
155 |
156 | # 检查文件是否存在
157 | if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
158 | echo "\033[32;1m导出 ${ipa_name}.ipa 包成功 🎉 🎉 🎉 \033[0m"
159 | open $export_path
160 | else
161 | echo "\033[31;1m导出 ${ipa_name}.ipa 包失败 😢 😢 😢 \033[0m"
162 | exit 1
163 | fi
164 |
165 | # 删除export_options_plist文件(中间文件)
166 | if [ -f "$export_options_plist_path" ] ; then
167 | #echo "${export_options_plist_path}文件存在,准备删除"
168 | rm -f $export_options_plist_path
169 | fi
170 |
171 | # 输出打包总用时
172 | echo "\033[36;1m使用AutoPackageScript打包总用时: ${SECONDS}s \033[0m"
173 |
174 | exit 0
175 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | // Override point for customization after application launch.
20 | return YES;
21 | }
22 |
23 |
24 | - (void)applicationWillResignActive:(UIApplication *)application {
25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
27 | }
28 |
29 |
30 | - (void)applicationDidEnterBackground:(UIApplication *)application {
31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
33 | }
34 |
35 |
36 | - (void)applicationWillEnterForeground:(UIApplication *)application {
37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
38 | }
39 |
40 |
41 | - (void)applicationDidBecomeActive:(UIApplication *)application {
42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
43 | }
44 |
45 |
46 | - (void)applicationWillTerminate:(UIApplication *)application {
47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
48 | }
49 |
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | }
88 | ],
89 | "info" : {
90 | "version" : 1,
91 | "author" : "xcode"
92 | }
93 | }
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
27 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import
11 |
12 | @interface ViewController ()
13 |
14 | @property (weak, nonatomic) IBOutlet UIImageView *imageView;
15 |
16 | @end
17 |
18 | @implementation ViewController
19 |
20 | - (void)viewDidLoad {
21 | [super viewDidLoad];
22 |
23 | [self.imageView sd_setImageWithURL:[NSURL URLWithString:@"https://upload.jianshu.io/users/upload_avatars/1818095/7744893ad258.jpg"]];
24 |
25 |
26 | }
27 |
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/AutoPackageScriptDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // AutoPackageScriptDemo
4 | //
5 | // Created by 石学谦 on 2017/12/27.
6 | // Copyright © 2017年 shixueqian. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ApplicationProperties
6 |
7 | ApplicationPath
8 | Applications/AutoPackageScriptDemo.app
9 | CFBundleIdentifier
10 | com.shixueqian.02
11 | CFBundleShortVersionString
12 | 1.0
13 | CFBundleVersion
14 | 1
15 | SigningIdentity
16 | iPhone Developer: shixueqian12345@163.com (6HBARX34Q2)
17 |
18 | ArchiveVersion
19 | 2
20 | CreationDate
21 | 2017-12-27T12:54:32Z
22 | Name
23 | AutoPackageScriptDemo
24 | SchemeName
25 | AutoPackageScriptDemo
26 |
27 |
28 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/Info.plist
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/Info.plist
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/Info.plist
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
8 |
9 | e/lzX8geIM5XMa6RJt2XR4LaqpI=
10 |
11 | Base.lproj/LaunchScreen.storyboardc/Info.plist
12 |
13 | n2t8gsDpfE6XkhG31p7IQJRxTxU=
14 |
15 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
16 |
17 | d+WFgaw97Q8Raeqtfv6ocqUOqmk=
18 |
19 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib
20 |
21 | c/chz9Q7sE40qnsge458m6OaAFo=
22 |
23 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib
24 |
25 | XK7Qf8CPcGts+QoImhL53TYLfX4=
26 |
27 | Base.lproj/Main.storyboardc/Info.plist
28 |
29 | MDrKFvFWroTb0+KEbQShBcoBvo4=
30 |
31 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib
32 |
33 | DgA6a54FNlAYK6FrRxwxoCxva/w=
34 |
35 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib
36 |
37 | ZAnfqCIZra/KZpibIMeKgcJuiuk=
38 |
39 | Info.plist
40 |
41 | LpEMsnpK2/nSR2PRV6dhCyYbMkc=
42 |
43 | PkgInfo
44 |
45 | n57qDP4tZfLD1rCS43W0B4LQjzE=
46 |
47 | archived-expanded-entitlements.xcent
48 |
49 | W/v5kK8EUQ7tWsrX0Hs+pkQYnZg=
50 |
51 | embedded.mobileprovision
52 |
53 | od8ONtkDkHpDFr8vHoXeh8DQ+Cg=
54 |
55 |
56 | files2
57 |
58 | Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib
59 |
60 | hash
61 |
62 | e/lzX8geIM5XMa6RJt2XR4LaqpI=
63 |
64 | hash2
65 |
66 | bXkQ4XJds/V50kfN8v05FuEQpdHbGVTA2ryEFEOtnTw=
67 |
68 |
69 | Base.lproj/LaunchScreen.storyboardc/Info.plist
70 |
71 | hash
72 |
73 | n2t8gsDpfE6XkhG31p7IQJRxTxU=
74 |
75 | hash2
76 |
77 | HyVdXMU7Ux4/KalAao30mpWOK/lEPT4gvYN09wf31cg=
78 |
79 |
80 | Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib
81 |
82 | hash
83 |
84 | d+WFgaw97Q8Raeqtfv6ocqUOqmk=
85 |
86 | hash2
87 |
88 | /aYy082Uaq7QYdFBeHpB0jaU/4BtaL73SzWc8P490Aw=
89 |
90 |
91 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/objects-11.0+.nib
92 |
93 | hash
94 |
95 | c/chz9Q7sE40qnsge458m6OaAFo=
96 |
97 | hash2
98 |
99 | rBfBNb0bAbsBOg/hPuEUNpgYVgCfyXZ5vGbJeat9ZYg=
100 |
101 |
102 | Base.lproj/Main.storyboardc/BYZ-38-t0r-view-8bC-Xf-vdC.nib/runtime.nib
103 |
104 | hash
105 |
106 | XK7Qf8CPcGts+QoImhL53TYLfX4=
107 |
108 | hash2
109 |
110 | evuPeLf8raMt/paZbHoqMCdLS1I+tPpbHawaL8pDIhI=
111 |
112 |
113 | Base.lproj/Main.storyboardc/Info.plist
114 |
115 | hash
116 |
117 | MDrKFvFWroTb0+KEbQShBcoBvo4=
118 |
119 | hash2
120 |
121 | PpvapAjR62rl6Ym4E6hkTgpKmBICxTaQXeUqcpHmmqQ=
122 |
123 |
124 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/objects-11.0+.nib
125 |
126 | hash
127 |
128 | DgA6a54FNlAYK6FrRxwxoCxva/w=
129 |
130 | hash2
131 |
132 | q/C1dU7/qjaTAujOzv2s3HZfE6Bd040ZfJ7dsQ8Zb3M=
133 |
134 |
135 | Base.lproj/Main.storyboardc/UIViewController-BYZ-38-t0r.nib/runtime.nib
136 |
137 | hash
138 |
139 | ZAnfqCIZra/KZpibIMeKgcJuiuk=
140 |
141 | hash2
142 |
143 | pbgouy60ty0l8ZCd2qHcugblt+weztG3S9L8dZVZJxg=
144 |
145 |
146 | archived-expanded-entitlements.xcent
147 |
148 | hash
149 |
150 | W/v5kK8EUQ7tWsrX0Hs+pkQYnZg=
151 |
152 | hash2
153 |
154 | agHvdqYWV5w3qs8pWCMVhaU888xP1LXStBw66EG71/c=
155 |
156 |
157 | embedded.mobileprovision
158 |
159 | hash
160 |
161 | od8ONtkDkHpDFr8vHoXeh8DQ+Cg=
162 |
163 | hash2
164 |
165 | w5OcQDxL9aJVbnPWbeF8RNJRHHzheAinefWqQ7vyT9M=
166 |
167 |
168 |
169 | rules
170 |
171 | ^
172 |
173 | ^.*\.lproj/
174 |
175 | optional
176 |
177 | weight
178 | 1000
179 |
180 | ^.*\.lproj/locversion.plist$
181 |
182 | omit
183 |
184 | weight
185 | 1100
186 |
187 | ^Base\.lproj/
188 |
189 | weight
190 | 1010
191 |
192 | ^version.plist$
193 |
194 |
195 | rules2
196 |
197 | .*\.dSYM($|/)
198 |
199 | weight
200 | 11
201 |
202 | ^
203 |
204 | weight
205 | 20
206 |
207 | ^(.*/)?\.DS_Store$
208 |
209 | omit
210 |
211 | weight
212 | 2000
213 |
214 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
215 |
216 | nested
217 |
218 | weight
219 | 10
220 |
221 | ^.*
222 |
223 | ^.*\.lproj/
224 |
225 | optional
226 |
227 | weight
228 | 1000
229 |
230 | ^.*\.lproj/locversion.plist$
231 |
232 | omit
233 |
234 | weight
235 | 1100
236 |
237 | ^Base\.lproj/
238 |
239 | weight
240 | 1010
241 |
242 | ^Info\.plist$
243 |
244 | omit
245 |
246 | weight
247 | 20
248 |
249 | ^PkgInfo$
250 |
251 | omit
252 |
253 | weight
254 | 20
255 |
256 | ^[^/]+$
257 |
258 | nested
259 |
260 | weight
261 | 10
262 |
263 | ^embedded\.provisionprofile$
264 |
265 | weight
266 | 20
267 |
268 | ^version\.plist$
269 |
270 | weight
271 | 20
272 |
273 |
274 |
275 |
276 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/archived-expanded-entitlements.xcent:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | application-identifier
6 | M9XE43A3CX.com.shixueqian.02
7 | keychain-access-groups
8 |
9 | M9XE43A3CX.com.shixueqian.02
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/embedded.mobileprovision:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/Products/Applications/AutoPackageScriptDemo.app/embedded.mobileprovision
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/225CAA8D-3C41-39C0-8EC3-B793387033E5.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.AutoPackageScriptDemo
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/225CAA8D-3C41-39C0-8EC3-B793387033E5.dSYM/Contents/Resources/225CAA8D-3C41-39C0-8EC3-B793387033E5.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DBGOriginalUUID
5 | 2337F821-3E77-3B76-9E3C-DC699FFAADFF
6 |
7 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/225CAA8D-3C41-39C0-8EC3-B793387033E5.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/225CAA8D-3C41-39C0-8EC3-B793387033E5.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/4F736C69-866F-328D-BB1E-2BBD7A50C482.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.AutoPackageScriptDemo
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/4F736C69-866F-328D-BB1E-2BBD7A50C482.dSYM/Contents/Resources/4F736C69-866F-328D-BB1E-2BBD7A50C482.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | DBGOriginalUUID
5 | 9AFEBB7C-1408-37DC-9B04-33A5BF2F8A30
6 |
7 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/4F736C69-866F-328D-BB1E-2BBD7A50C482.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/4F736C69-866F-328D-BB1E-2BBD7A50C482.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleIdentifier
8 | com.apple.xcode.dsym.com.shixueqian.02
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundlePackageType
12 | dSYM
13 | CFBundleSignature
14 | ????
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleVersion
18 | 1
19 |
20 |
21 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo.xcarchive/dSYMs/AutoPackageScriptDemo.app.dSYM/Contents/Resources/DWARF/AutoPackageScriptDemo
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo_20171227_205420.ipa:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shixueqian/AutoPackageScript/d67687d7b99ba9df3292a8fb4907ea3062318593/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/AutoPackageScriptDemo_20171227_205420.ipa
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/DistributionSummary.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AutoPackageScriptDemo.ipa
6 |
7 |
8 | architectures
9 |
10 | armv7
11 | arm64
12 |
13 | certificate
14 |
15 | SHA1
16 | C23649AD72AF3EA9FA4F27CE5FBAD497DBBD4535
17 | dateExpires
18 | 2018/11/22
19 | type
20 | iOS Development
21 |
22 | entitlements
23 |
24 | application-identifier
25 | M9XE43A3CX.com.shixueqian.02
26 | com.apple.developer.team-identifier
27 | M9XE43A3CX
28 | get-task-allow
29 |
30 | keychain-access-groups
31 |
32 | M9XE43A3CX.com.shixueqian.02
33 |
34 |
35 | name
36 | AutoPackageScriptDemo.app
37 | profile
38 |
39 | UUID
40 | 8d57413c-f2be-4974-a953-c542ae80a20a
41 | name
42 | iOS Team Provisioning Profile: com.shixueqian.02
43 |
44 | team
45 |
46 | id
47 | M9XE43A3CX
48 | name
49 | 石 学谦
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Package/AutoPackageScriptDemo-20171227_205420/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | compileBitcode
6 |
7 | method
8 | development
9 | signingStyle
10 | automatic
11 | stripSwiftSymbols
12 |
13 | teamID
14 | M9XE43A3CX
15 | thinning
16 | <none>
17 |
18 |
19 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'AutoPackageScriptDemo' do
5 |
6 | pod 'SDWebImage'
7 |
8 | end
9 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - SDWebImage (4.2.2):
3 | - SDWebImage/Core (= 4.2.2)
4 | - SDWebImage/Core (4.2.2)
5 |
6 | DEPENDENCIES:
7 | - SDWebImage
8 |
9 | SPEC CHECKSUMS:
10 | SDWebImage: 89a9d32cd520bbb46eb14e541d5109b3564af198
11 |
12 | PODFILE CHECKSUM: 29046ec870da066fb8c4f4c97eef8208ecc03bd6
13 |
14 | COCOAPODS: 1.2.1
15 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Private/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSData+ImageContentType.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/NSImage+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDImageCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDImageCacheConfig.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCoderHelper.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCodersManager.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageCompat.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageDownloader.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloader.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageFrame.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageGIFCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageImageIOCoder.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageManager.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageManager.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImageOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/SDWebImagePrefetcher.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIButton+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIButton+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+ForceDecode.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+GIF.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImage+MultiFormat.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIImageView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIImageView+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCache.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Headers/Public/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | ../../../SDWebImage/SDWebImage/UIView+WebCacheOperation.h
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - SDWebImage (4.2.2):
3 | - SDWebImage/Core (= 4.2.2)
4 | - SDWebImage/Core (4.2.2)
5 |
6 | DEPENDENCIES:
7 | - SDWebImage
8 |
9 | SPEC CHECKSUMS:
10 | SDWebImage: 89a9d32cd520bbb46eb14e541d5109b3564af198
11 |
12 | PODFILE CHECKSUM: 29046ec870da066fb8c4f4c97eef8208ecc03bd6
13 |
14 | COCOAPODS: 1.2.1
15 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
21 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | typedef NS_ENUM(NSInteger, SDImageFormat) {
14 | SDImageFormatUndefined = -1,
15 | SDImageFormatJPEG = 0,
16 | SDImageFormatPNG,
17 | SDImageFormatGIF,
18 | SDImageFormatTIFF,
19 | SDImageFormatWebP,
20 | SDImageFormatHEIC
21 | };
22 |
23 | @interface NSData (ImageContentType)
24 |
25 | /**
26 | * Return image format
27 | *
28 | * @param data the input image data
29 | *
30 | * @return the image format as `SDImageFormat` (enum)
31 | */
32 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;
33 |
34 | /**
35 | Convert SDImageFormat to UTType
36 |
37 | @param format Format as SDImageFormat
38 | @return The UTType as CFStringRef
39 | */
40 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format;
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "NSData+ImageContentType.h"
11 | #if SD_MAC
12 | #import
13 | #else
14 | #import
15 | #endif
16 |
17 | // Currently Image/IO does not support WebP
18 | #define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp")
19 | // AVFileTypeHEIC is defined in AVFoundation via iOS 11, we use this without import AVFoundation
20 | #define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic")
21 |
22 | @implementation NSData (ImageContentType)
23 |
24 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data {
25 | if (!data) {
26 | return SDImageFormatUndefined;
27 | }
28 |
29 | // File signatures table: http://www.garykessler.net/library/file_sigs.html
30 | uint8_t c;
31 | [data getBytes:&c length:1];
32 | switch (c) {
33 | case 0xFF:
34 | return SDImageFormatJPEG;
35 | case 0x89:
36 | return SDImageFormatPNG;
37 | case 0x47:
38 | return SDImageFormatGIF;
39 | case 0x49:
40 | case 0x4D:
41 | return SDImageFormatTIFF;
42 | case 0x52: {
43 | if (data.length >= 12) {
44 | //RIFF....WEBP
45 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
46 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
47 | return SDImageFormatWebP;
48 | }
49 | }
50 | break;
51 | }
52 | case 0x00: {
53 | if (data.length >= 12) {
54 | //....ftypheic ....ftypheix ....ftyphevc ....ftyphevx
55 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(4, 8)] encoding:NSASCIIStringEncoding];
56 | if ([testString isEqualToString:@"ftypheic"]
57 | || [testString isEqualToString:@"ftypheix"]
58 | || [testString isEqualToString:@"ftyphevc"]
59 | || [testString isEqualToString:@"ftyphevx"]) {
60 | return SDImageFormatHEIC;
61 | }
62 | }
63 | break;
64 | }
65 | }
66 | return SDImageFormatUndefined;
67 | }
68 |
69 | + (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format {
70 | CFStringRef UTType;
71 | switch (format) {
72 | case SDImageFormatJPEG:
73 | UTType = kUTTypeJPEG;
74 | break;
75 | case SDImageFormatPNG:
76 | UTType = kUTTypePNG;
77 | break;
78 | case SDImageFormatGIF:
79 | UTType = kUTTypeGIF;
80 | break;
81 | case SDImageFormatTIFF:
82 | UTType = kUTTypeTIFF;
83 | break;
84 | case SDImageFormatWebP:
85 | UTType = kSDUTTypeWebP;
86 | break;
87 | case SDImageFormatHEIC:
88 | UTType = kSDUTTypeHEIC;
89 | break;
90 | default:
91 | // default is kUTTypePNG
92 | UTType = kUTTypePNG;
93 | break;
94 | }
95 | return UTType;
96 | }
97 |
98 | @end
99 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import
14 |
15 | @interface NSImage (WebCache)
16 |
17 | - (CGImageRef)CGImage;
18 | - (NSArray *)images;
19 | - (BOOL)isGIF;
20 |
21 | @end
22 |
23 | #endif
24 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSImage+WebCache.h"
10 |
11 | #if SD_MAC
12 |
13 | @implementation NSImage (WebCache)
14 |
15 | - (CGImageRef)CGImage {
16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);
17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil];
18 | return cgImage;
19 | }
20 |
21 | - (NSArray *)images {
22 | return nil;
23 | }
24 |
25 | - (BOOL)isGIF {
26 | BOOL isGIF = NO;
27 | for (NSImageRep *rep in self.representations) {
28 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
29 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
30 | NSUInteger frameCount = [[bitmapRep valueForProperty:NSImageFrameCount] unsignedIntegerValue];
31 | isGIF = frameCount > 1 ? YES : NO;
32 | break;
33 | }
34 | }
35 | return isGIF;
36 | }
37 |
38 | @end
39 |
40 | #endif
41 |
42 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDImageCacheConfig : NSObject
13 |
14 | /**
15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.
16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.
17 | */
18 | @property (assign, nonatomic) BOOL shouldDecompressImages;
19 |
20 | /**
21 | * disable iCloud backup [defaults to YES]
22 | */
23 | @property (assign, nonatomic) BOOL shouldDisableiCloud;
24 |
25 | /**
26 | * use memory cache [defaults to YES]
27 | */
28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory;
29 |
30 | /**
31 | * The reading options while reading cache from disk.
32 | * Defaults to 0. You can set this to mapped file to improve performance.
33 | */
34 | @property (assign, nonatomic) NSDataReadingOptions diskCacheReadingOptions;
35 |
36 | /**
37 | * The maximum length of time to keep an image in the cache, in seconds.
38 | */
39 | @property (assign, nonatomic) NSInteger maxCacheAge;
40 |
41 | /**
42 | * The maximum size of the cache, in bytes.
43 | */
44 | @property (assign, nonatomic) NSUInteger maxCacheSize;
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDImageCacheConfig.h"
10 |
11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
12 |
13 | @implementation SDImageCacheConfig
14 |
15 | - (instancetype)init {
16 | if (self = [super init]) {
17 | _shouldDecompressImages = YES;
18 | _shouldDisableiCloud = YES;
19 | _shouldCacheImagesInMemory = YES;
20 | _diskCacheReadingOptions = 0;
21 | _maxCacheAge = kDefaultCacheMaxCacheAge;
22 | _maxCacheSize = 0;
23 | }
24 | return self;
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 | #import "NSData+ImageContentType.h"
12 |
13 | /**
14 | A Boolean value indicating whether to scale down large images during decompressing. (NSNumber)
15 | */
16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageCoderScaleDownLargeImagesKey;
17 |
18 | /**
19 | Return the shared device-dependent RGB color space created with CGColorSpaceCreateDeviceRGB.
20 |
21 | @return The device-dependent RGB color space
22 | */
23 | CG_EXTERN CGColorSpaceRef _Nonnull SDCGColorSpaceGetDeviceRGB(void);
24 |
25 | /**
26 | Check whether CGImageRef contains alpha channel.
27 |
28 | @param imageRef The CGImageRef
29 | @return Return YES if CGImageRef contains alpha channel, otherwise return NO
30 | */
31 | CG_EXTERN BOOL SDCGImageRefContainsAlpha(_Nullable CGImageRef imageRef);
32 |
33 |
34 | /**
35 | This is the image coder protocol to provide custom image decoding/encoding.
36 | These methods are all required to implement.
37 | @note Pay attention that these methods are not called from main queue.
38 | */
39 | @protocol SDWebImageCoder
40 |
41 | @required
42 | #pragma mark - Decoding
43 | /**
44 | Returns YES if this coder can decode some data. Otherwise, the data should be passed to another coder.
45 |
46 | @param data The image data so we can look at it
47 | @return YES if this coder can decode the data, NO otherwise
48 | */
49 | - (BOOL)canDecodeFromData:(nullable NSData *)data;
50 |
51 | /**
52 | Decode the image data to image.
53 |
54 | @param data The image data to be decoded
55 | @return The decoded image from data
56 | */
57 | - (nullable UIImage *)decodedImageWithData:(nullable NSData *)data;
58 |
59 | /**
60 | Decompress the image with original image and image data.
61 |
62 | @param image The original image to be decompressed
63 | @param data The pointer to original image data. The pointer itself is nonnull but image data can be null. This data will set to cache if needed. If you do not need to modify data at the sametime, ignore this param.
64 | @param optionsDict A dictionary containing any decompressing options. Pass {SDWebImageCoderScaleDownLargeImagesKey: @(YES)} to scale down large images
65 | @return The decompressed image
66 | */
67 | - (nullable UIImage *)decompressedImageWithImage:(nullable UIImage *)image
68 | data:(NSData * _Nullable * _Nonnull)data
69 | options:(nullable NSDictionary*)optionsDict;
70 |
71 | #pragma mark - Encoding
72 |
73 | /**
74 | Returns YES if this coder can encode some image. Otherwise, it should be passed to another coder.
75 |
76 | @param format The image format
77 | @return YES if this coder can encode the image, NO otherwise
78 | */
79 | - (BOOL)canEncodeToFormat:(SDImageFormat)format;
80 |
81 | /**
82 | Encode the image to image data.
83 |
84 | @param image The image to be encoded
85 | @param format The image format to encode, you should note `SDImageFormatUndefined` format is also possible
86 | @return The encoded image data
87 | */
88 | - (nullable NSData *)encodedDataWithImage:(nullable UIImage *)image format:(SDImageFormat)format;
89 |
90 | @end
91 |
92 |
93 | /**
94 | This is the image coder protocol to provide custom progressive image decoding.
95 | These methods are all required to implement.
96 | @note Pay attention that these methods are not called from main queue.
97 | */
98 | @protocol SDWebImageProgressiveCoder
99 |
100 | @required
101 | /**
102 | Returns YES if this coder can incremental decode some data. Otherwise, it should be passed to another coder.
103 |
104 | @param data The image data so we can look at it
105 | @return YES if this coder can decode the data, NO otherwise
106 | */
107 | - (BOOL)canIncrementallyDecodeFromData:(nullable NSData *)data;
108 |
109 | /**
110 | Incremental decode the image data to image.
111 |
112 | @param data The image data has been downloaded so far
113 | @param finished Whether the download has finished
114 | @warning because incremental decoding need to keep the decoded context, we will alloc a new instance with the same class for each download operation to avoid conflicts
115 | @return The decoded image from data
116 | */
117 | - (nullable UIImage *)incrementallyDecodedImageWithData:(nullable NSData *)data finished:(BOOL)finished;
118 |
119 | @end
120 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCoder.h"
10 |
11 | NSString * const SDWebImageCoderScaleDownLargeImagesKey = @"scaleDownLargeImages";
12 |
13 | CGColorSpaceRef SDCGColorSpaceGetDeviceRGB(void) {
14 | static CGColorSpaceRef colorSpace;
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | colorSpace = CGColorSpaceCreateDeviceRGB();
18 | });
19 | return colorSpace;
20 | }
21 |
22 | BOOL SDCGImageRefContainsAlpha(CGImageRef imageRef) {
23 | if (!imageRef) {
24 | return NO;
25 | }
26 | CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
27 | BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone ||
28 | alphaInfo == kCGImageAlphaNoneSkipFirst ||
29 | alphaInfo == kCGImageAlphaNoneSkipLast);
30 | return hasAlpha;
31 | }
32 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCoderHelper.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 | #import "SDWebImageFrame.h"
12 |
13 | @interface SDWebImageCoderHelper : NSObject
14 |
15 | /**
16 | Return an animated image with frames array.
17 | For UIKit, this will apply the patch and then create animated UIImage. The patch is because that `+[UIImage animatedImageWithImages:duration:]` just use the averate of duration for each image. So it will not work if different frame has different duration. Therefore we repeat the specify frame for specify times to let it work.
18 | For AppKit, NSImage does not support animates other than GIF. This will try to encode the frames to GIF format and then create an animated NSImage for rendering.
19 |
20 | @param frames The frames array. If no frames or frames is empty, return nil
21 | @return A animated image for rendering on UIImageView(UIKit) or NSImageView(AppKit)
22 | */
23 | + (UIImage * _Nullable)animatedImageWithFrames:(NSArray * _Nullable)frames;
24 |
25 | /**
26 | Return frames array from an animated image.
27 | For UIKit, this will unapply the patch for the description above and then create frames array. This will also work for normal animated UIImage.
28 | For AppKit, NSImage does not support animates other than GIF. This will try to decode the GIF imageRep and then create frames array.
29 |
30 | @param animatedImage A animated image. If it's not animated, return nil
31 | @return The frames array
32 | */
33 | + (NSArray * _Nullable)framesFromAnimatedImage:(UIImage * _Nullable)animatedImage;
34 |
35 | #if SD_UIKIT || SD_WATCH
36 | /**
37 | Convert an EXIF image orientation to an iOS one.
38 |
39 | @param exifOrientation EXIF orientation
40 | @return iOS orientation
41 | */
42 | + (UIImageOrientation)imageOrientationFromEXIFOrientation:(NSInteger)exifOrientation;
43 | /**
44 | Convert an iOS orientation to an EXIF image orientation.
45 |
46 | @param imageOrientation iOS orientation
47 | @return EXIF orientation
48 | */
49 | + (NSInteger)exifOrientationFromImageOrientation:(UIImageOrientation)imageOrientation;
50 | #endif
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Global object holding the array of coders, so that we avoid passing them from object to object.
14 | Uses a priority queue behind scenes, which means the latest added coders have the highest priority.
15 | This is done so when encoding/decoding something, we go through the list and ask each coder if they can handle the current data.
16 | That way, users can add their custom coders while preserving our existing prebuilt ones
17 |
18 | Note: the `coders` getter will return the coders in their reversed order
19 | Example:
20 | - by default we internally set coders = `IOCoder`, `WebPCoder`. (`GIFCoder` is not recommended to add only if you want to get GIF support without `FLAnimatedImage`)
21 | - calling `coders` will return `@[WebPCoder, IOCoder]`
22 | - call `[addCoder:[MyCrazyCoder new]]`
23 | - calling `coders` now returns `@[MyCrazyCoder, WebPCoder, IOCoder]`
24 |
25 | Coders
26 | ------
27 | A coder must conform to the `SDWebImageCoder` protocol or even to `SDWebImageProgressiveCoder` if it supports progressive decoding
28 | Conformance is important because that way, they will implement `canDecodeFromData` or `canEncodeToFormat`
29 | Those methods are called on each coder in the array (using the priority order) until one of them returns YES.
30 | That means that coder can decode that data / encode to that format
31 | */
32 | @interface SDWebImageCodersManager : NSObject
33 |
34 | /**
35 | Shared reusable instance
36 | */
37 | + (nonnull instancetype)sharedInstance;
38 |
39 | /**
40 | All coders in coders manager. The coders array is a priority queue, which means the later added coder will have the highest priority
41 | */
42 | @property (nonatomic, strong, readwrite, nullable) NSArray* coders;
43 |
44 | /**
45 | Add a new coder to the end of coders array. Which has the highest priority.
46 |
47 | @param coder coder
48 | */
49 | - (void)addCoder:(nonnull id)coder;
50 |
51 | /**
52 | Remove a coder in the coders array.
53 |
54 | @param coder coder
55 | */
56 | - (void)removeCoder:(nonnull id)coder;
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCodersManager.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCodersManager.h"
10 | #import "SDWebImageImageIOCoder.h"
11 | #import "SDWebImageGIFCoder.h"
12 | #ifdef SD_WEBP
13 | #import "SDWebImageWebPCoder.h"
14 | #endif
15 |
16 | @interface SDWebImageCodersManager ()
17 |
18 | @property (nonatomic, strong, nonnull) NSMutableArray* mutableCoders;
19 | @property (SDDispatchQueueSetterSementics, nonatomic, nullable) dispatch_queue_t mutableCodersAccessQueue;
20 |
21 | @end
22 |
23 | @implementation SDWebImageCodersManager
24 |
25 | + (nonnull instancetype)sharedInstance {
26 | static dispatch_once_t once;
27 | static id instance;
28 | dispatch_once(&once, ^{
29 | instance = [self new];
30 | });
31 | return instance;
32 | }
33 |
34 | - (instancetype)init {
35 | if (self = [super init]) {
36 | // initialize with default coders
37 | _mutableCoders = [@[[SDWebImageImageIOCoder sharedCoder]] mutableCopy];
38 | #ifdef SD_WEBP
39 | [_mutableCoders addObject:[SDWebImageWebPCoder sharedCoder]];
40 | #endif
41 | _mutableCodersAccessQueue = dispatch_queue_create("com.hackemist.SDWebImageCodersManager", DISPATCH_QUEUE_CONCURRENT);
42 | }
43 | return self;
44 | }
45 |
46 | - (void)dealloc {
47 | SDDispatchQueueRelease(_mutableCodersAccessQueue);
48 | }
49 |
50 | #pragma mark - Coder IO operations
51 |
52 | - (void)addCoder:(nonnull id)coder {
53 | if ([coder conformsToProtocol:@protocol(SDWebImageCoder)]) {
54 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
55 | [self.mutableCoders addObject:coder];
56 | });
57 | }
58 | }
59 |
60 | - (void)removeCoder:(nonnull id)coder {
61 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
62 | [self.mutableCoders removeObject:coder];
63 | });
64 | }
65 |
66 | - (NSArray *)coders {
67 | __block NSArray *sortedCoders = nil;
68 | dispatch_sync(self.mutableCodersAccessQueue, ^{
69 | sortedCoders = (NSArray *)[[[self.mutableCoders copy] reverseObjectEnumerator] allObjects];
70 | });
71 | return sortedCoders;
72 | }
73 |
74 | - (void)setCoders:(NSArray *)coders {
75 | dispatch_barrier_sync(self.mutableCodersAccessQueue, ^{
76 | self.mutableCoders = [coders mutableCopy];
77 | });
78 | }
79 |
80 | #pragma mark - SDWebImageCoder
81 | - (BOOL)canDecodeFromData:(NSData *)data {
82 | for (id coder in self.coders) {
83 | if ([coder canDecodeFromData:data]) {
84 | return YES;
85 | }
86 | }
87 | return NO;
88 | }
89 |
90 | - (BOOL)canEncodeToFormat:(SDImageFormat)format {
91 | for (id coder in self.coders) {
92 | if ([coder canEncodeToFormat:format]) {
93 | return YES;
94 | }
95 | }
96 | return NO;
97 | }
98 |
99 | - (UIImage *)decodedImageWithData:(NSData *)data {
100 | if (!data) {
101 | return nil;
102 | }
103 | for (id coder in self.coders) {
104 | if ([coder canDecodeFromData:data]) {
105 | return [coder decodedImageWithData:data];
106 | }
107 | }
108 | return nil;
109 | }
110 |
111 | - (UIImage *)decompressedImageWithImage:(UIImage *)image
112 | data:(NSData *__autoreleasing _Nullable *)data
113 | options:(nullable NSDictionary*)optionsDict {
114 | if (!image) {
115 | return nil;
116 | }
117 | for (id coder in self.coders) {
118 | if ([coder canDecodeFromData:*data]) {
119 | return [coder decompressedImageWithImage:image data:data options:optionsDict];
120 | }
121 | }
122 | return nil;
123 | }
124 |
125 | - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format {
126 | if (!image) {
127 | return nil;
128 | }
129 | for (id coder in self.coders) {
130 | if ([coder canEncodeToFormat:format]) {
131 | return [coder encodedDataWithImage:image format:format];
132 | }
133 | }
134 | return nil;
135 | }
136 |
137 | @end
138 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 |
12 | #ifdef __OBJC_GC__
13 | #error SDWebImage does not support Objective-C Garbage Collection
14 | #endif
15 |
16 | // Apple's defines from TargetConditionals.h are a bit weird.
17 | // Seems like TARGET_OS_MAC is always defined (on all platforms).
18 | // To determine if we are running on OSX, we can only rely on TARGET_OS_IPHONE=0 and all the other platforms
19 | #if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH
20 | #define SD_MAC 1
21 | #else
22 | #define SD_MAC 0
23 | #endif
24 |
25 | // iOS and tvOS are very similar, UIKit exists on both platforms
26 | // Note: watchOS also has UIKit, but it's very limited
27 | #if TARGET_OS_IOS || TARGET_OS_TV
28 | #define SD_UIKIT 1
29 | #else
30 | #define SD_UIKIT 0
31 | #endif
32 |
33 | #if TARGET_OS_IOS
34 | #define SD_IOS 1
35 | #else
36 | #define SD_IOS 0
37 | #endif
38 |
39 | #if TARGET_OS_TV
40 | #define SD_TV 1
41 | #else
42 | #define SD_TV 0
43 | #endif
44 |
45 | #if TARGET_OS_WATCH
46 | #define SD_WATCH 1
47 | #else
48 | #define SD_WATCH 0
49 | #endif
50 |
51 |
52 | #if SD_MAC
53 | #import
54 | #ifndef UIImage
55 | #define UIImage NSImage
56 | #endif
57 | #ifndef UIImageView
58 | #define UIImageView NSImageView
59 | #endif
60 | #ifndef UIView
61 | #define UIView NSView
62 | #endif
63 | #else
64 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
65 | #error SDWebImage doesn't support Deployment Target version < 5.0
66 | #endif
67 |
68 | #if SD_UIKIT
69 | #import
70 | #endif
71 | #if SD_WATCH
72 | #import
73 | #endif
74 | #endif
75 |
76 | #ifndef NS_ENUM
77 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
78 | #endif
79 |
80 | #ifndef NS_OPTIONS
81 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type
82 | #endif
83 |
84 | #if OS_OBJECT_USE_OBJC
85 | #undef SDDispatchQueueRelease
86 | #undef SDDispatchQueueSetterSementics
87 | #define SDDispatchQueueRelease(q)
88 | #define SDDispatchQueueSetterSementics strong
89 | #else
90 | #undef SDDispatchQueueRelease
91 | #undef SDDispatchQueueSetterSementics
92 | #define SDDispatchQueueRelease(q) (dispatch_release(q))
93 | #define SDDispatchQueueSetterSementics assign
94 | #endif
95 |
96 | FOUNDATION_EXPORT UIImage *SDScaledImageForKey(NSString *key, UIImage *image);
97 |
98 | typedef void(^SDWebImageNoParamsBlock)(void);
99 |
100 | FOUNDATION_EXPORT NSString *const SDWebImageErrorDomain;
101 |
102 | #ifndef dispatch_queue_async_safe
103 | #define dispatch_queue_async_safe(queue, block)\
104 | if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(queue)) == 0) {\
105 | block();\
106 | } else {\
107 | dispatch_async(queue, block);\
108 | }
109 | #endif
110 |
111 | #ifndef dispatch_main_async_safe
112 | #define dispatch_main_async_safe(block) dispatch_queue_async_safe(dispatch_get_main_queue(), block)
113 | #endif
114 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "UIImage+MultiFormat.h"
11 |
12 | #if !__has_feature(objc_arc)
13 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
14 | #endif
15 |
16 | inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) {
17 | if (!image) {
18 | return nil;
19 | }
20 |
21 | #if SD_MAC
22 | return image;
23 | #elif SD_UIKIT || SD_WATCH
24 | if ((image.images).count > 0) {
25 | NSMutableArray *scaledImages = [NSMutableArray array];
26 |
27 | for (UIImage *tempImage in image.images) {
28 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)];
29 | }
30 |
31 | UIImage *animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration];
32 | if (animatedImage) {
33 | animatedImage.sd_imageLoopCount = image.sd_imageLoopCount;
34 | }
35 | return animatedImage;
36 | } else {
37 | #if SD_WATCH
38 | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) {
39 | #elif SD_UIKIT
40 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
41 | #endif
42 | CGFloat scale = 1;
43 | if (key.length >= 8) {
44 | NSRange range = [key rangeOfString:@"@2x."];
45 | if (range.location != NSNotFound) {
46 | scale = 2.0;
47 | }
48 |
49 | range = [key rangeOfString:@"@3x."];
50 | if (range.location != NSNotFound) {
51 | scale = 3.0;
52 | }
53 | }
54 |
55 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];
56 | image = scaledImage;
57 | }
58 | return image;
59 | }
60 | #endif
61 | }
62 |
63 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain";
64 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageDownloader.h"
11 | #import "SDWebImageOperation.h"
12 |
13 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStartNotification;
14 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadReceiveResponseNotification;
15 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStopNotification;
16 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification;
17 |
18 |
19 |
20 | /**
21 | Describes a downloader operation. If one wants to use a custom downloader op, it needs to inherit from `NSOperation` and conform to this protocol
22 | */
23 | @protocol SDWebImageDownloaderOperationInterface
24 |
25 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request
26 | inSession:(nullable NSURLSession *)session
27 | options:(SDWebImageDownloaderOptions)options;
28 |
29 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
30 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;
31 |
32 | - (BOOL)shouldDecompressImages;
33 | - (void)setShouldDecompressImages:(BOOL)value;
34 |
35 | - (nullable NSURLCredential *)credential;
36 | - (void)setCredential:(nullable NSURLCredential *)value;
37 |
38 | @end
39 |
40 |
41 | @interface SDWebImageDownloaderOperation : NSOperation
42 |
43 | /**
44 | * The request used by the operation's task.
45 | */
46 | @property (strong, nonatomic, readonly, nullable) NSURLRequest *request;
47 |
48 | /**
49 | * The operation's task
50 | */
51 | @property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask;
52 |
53 |
54 | @property (assign, nonatomic) BOOL shouldDecompressImages;
55 |
56 | /**
57 | * Was used to determine whether the URL connection should consult the credential storage for authenticating the connection.
58 | * @deprecated Not used for a couple of versions
59 | */
60 | @property (nonatomic, assign) BOOL shouldUseCredentialStorage __deprecated_msg("Property deprecated. Does nothing. Kept only for backwards compatibility");
61 |
62 | /**
63 | * The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`.
64 | *
65 | * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present.
66 | */
67 | @property (nonatomic, strong, nullable) NSURLCredential *credential;
68 |
69 | /**
70 | * The SDWebImageDownloaderOptions for the receiver.
71 | */
72 | @property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options;
73 |
74 | /**
75 | * The expected size of data.
76 | */
77 | @property (assign, nonatomic) NSInteger expectedSize;
78 |
79 | /**
80 | * The response returned by the operation's connection.
81 | */
82 | @property (strong, nonatomic, nullable) NSURLResponse *response;
83 |
84 | /**
85 | * Initializes a `SDWebImageDownloaderOperation` object
86 | *
87 | * @see SDWebImageDownloaderOperation
88 | *
89 | * @param request the URL request
90 | * @param session the URL session in which this operation will run
91 | * @param options downloader options
92 | *
93 | * @return the initialized instance
94 | */
95 | - (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request
96 | inSession:(nullable NSURLSession *)session
97 | options:(SDWebImageDownloaderOptions)options NS_DESIGNATED_INITIALIZER;
98 |
99 | /**
100 | * Adds handlers for progress and completion. Returns a tokent that can be passed to -cancel: to cancel this set of
101 | * callbacks.
102 | *
103 | * @param progressBlock the block executed when a new chunk of data arrives.
104 | * @note the progress block is executed on a background queue
105 | * @param completedBlock the block executed when the download is done.
106 | * @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue
107 | *
108 | * @return the token to use to cancel this set of handlers
109 | */
110 | - (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
111 | completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;
112 |
113 | /**
114 | * Cancels a set of callbacks. Once all callbacks are canceled, the operation is cancelled.
115 | *
116 | * @param token the token representing a set of callbacks to cancel
117 | *
118 | * @return YES if the operation was stopped because this was the last token to be canceled. NO otherwise.
119 | */
120 | - (BOOL)cancel:(nullable id)token;
121 |
122 | @end
123 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageFrame.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDWebImageFrame : NSObject
13 |
14 | // This class is used for creating animated images via `animatedImageWithFrames` in `SDWebImageCoderHelper`. Attension if you need animated images loop count, use `sd_imageLoopCount` property in `UIImage+MultiFormat`
15 |
16 | /**
17 | The image of current frame. You should not set an animated image.
18 | */
19 | @property (nonatomic, strong, readonly, nonnull) UIImage *image;
20 | /**
21 | The duration of current frame to be displayed. The number is seconds but not milliseconds. You should not set this to zero.
22 | */
23 | @property (nonatomic, readonly, assign) NSTimeInterval duration;
24 |
25 | /**
26 | Create a frame instance with specify image and duration
27 |
28 | @param image current frame's image
29 | @param duration current frame's duration
30 | @return frame instance
31 | */
32 | + (instancetype _Nonnull)frameWithImage:(UIImage * _Nonnull)image duration:(NSTimeInterval)duration;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageFrame.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageFrame.h"
10 |
11 | @interface SDWebImageFrame ()
12 |
13 | @property (nonatomic, strong, readwrite, nonnull) UIImage *image;
14 | @property (nonatomic, readwrite, assign) NSTimeInterval duration;
15 |
16 | @end
17 |
18 | @implementation SDWebImageFrame
19 |
20 | + (instancetype)frameWithImage:(UIImage *)image duration:(NSTimeInterval)duration {
21 | SDWebImageFrame *frame = [[SDWebImageFrame alloc] init];
22 | frame.image = image;
23 | frame.duration = duration;
24 |
25 | return frame;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder using ImageIO that supports GIF encoding/decoding
14 | @note `SDWebImageIOCoder` supports GIF but only as static (will use the 1st frame).
15 | @note Use `SDWebImageGIFCoder` for fully animated GIFs - less performant than `FLAnimatedImage`
16 | @note If you decide to make all `UIImageView`(including `FLAnimatedImageView`) instance support GIF. You should add this coder to `SDWebImageCodersManager` and make sure that it has a higher priority than `SDWebImageIOCoder`
17 | @note The recommended approach for animated GIFs is using `FLAnimatedImage`. It's more performant than `UIImageView` for GIF displaying
18 | */
19 | @interface SDWebImageGIFCoder : NSObject
20 |
21 | + (nonnull instancetype)sharedCoder;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageGIFCoder.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageGIFCoder.h"
10 | #import "NSImage+WebCache.h"
11 | #import
12 | #import "NSData+ImageContentType.h"
13 | #import "UIImage+MultiFormat.h"
14 | #import "SDWebImageCoderHelper.h"
15 |
16 | @implementation SDWebImageGIFCoder
17 |
18 | + (instancetype)sharedCoder {
19 | static SDWebImageGIFCoder *coder;
20 | static dispatch_once_t onceToken;
21 | dispatch_once(&onceToken, ^{
22 | coder = [[SDWebImageGIFCoder alloc] init];
23 | });
24 | return coder;
25 | }
26 |
27 | #pragma mark - Decode
28 | - (BOOL)canDecodeFromData:(nullable NSData *)data {
29 | return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF);
30 | }
31 |
32 | - (UIImage *)decodedImageWithData:(NSData *)data {
33 | if (!data) {
34 | return nil;
35 | }
36 |
37 | #if SD_MAC
38 | return [[UIImage alloc] initWithData:data];
39 | #else
40 |
41 | CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
42 | if (!source) {
43 | return nil;
44 | }
45 | size_t count = CGImageSourceGetCount(source);
46 |
47 | UIImage *animatedImage;
48 |
49 | if (count <= 1) {
50 | animatedImage = [[UIImage alloc] initWithData:data];
51 | } else {
52 | NSMutableArray *frames = [NSMutableArray array];
53 |
54 | for (size_t i = 0; i < count; i++) {
55 | CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, i, NULL);
56 | if (!imageRef) {
57 | continue;
58 | }
59 |
60 | float duration = [self sd_frameDurationAtIndex:i source:source];
61 | #if SD_WATCH
62 | CGFloat scale = 1;
63 | scale = [WKInterfaceDevice currentDevice].screenScale;
64 | #elif SD_UIKIT
65 | CGFloat scale = 1;
66 | scale = [UIScreen mainScreen].scale;
67 | #endif
68 | UIImage *image = [UIImage imageWithCGImage:imageRef scale:scale orientation:UIImageOrientationUp];
69 | CGImageRelease(imageRef);
70 |
71 | SDWebImageFrame *frame = [SDWebImageFrame frameWithImage:image duration:duration];
72 | [frames addObject:frame];
73 | }
74 |
75 | NSUInteger loopCount = 0;
76 | NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil);
77 | NSDictionary *gifProperties = [imageProperties valueForKey:(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary];
78 | if (gifProperties) {
79 | NSNumber *gifLoopCount = [gifProperties valueForKey:(__bridge_transfer NSString *)kCGImagePropertyGIFLoopCount];
80 | if (gifLoopCount) {
81 | loopCount = gifLoopCount.unsignedIntegerValue;
82 | }
83 | }
84 |
85 | animatedImage = [SDWebImageCoderHelper animatedImageWithFrames:frames];
86 | animatedImage.sd_imageLoopCount = loopCount;
87 | }
88 |
89 | CFRelease(source);
90 |
91 | return animatedImage;
92 | #endif
93 | }
94 |
95 | - (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source {
96 | float frameDuration = 0.1f;
97 | CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil);
98 | NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties;
99 | NSDictionary *gifProperties = frameProperties[(NSString *)kCGImagePropertyGIFDictionary];
100 |
101 | NSNumber *delayTimeUnclampedProp = gifProperties[(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
102 | if (delayTimeUnclampedProp) {
103 | frameDuration = [delayTimeUnclampedProp floatValue];
104 | } else {
105 | NSNumber *delayTimeProp = gifProperties[(NSString *)kCGImagePropertyGIFDelayTime];
106 | if (delayTimeProp) {
107 | frameDuration = [delayTimeProp floatValue];
108 | }
109 | }
110 |
111 | // Many annoying ads specify a 0 duration to make an image flash as quickly as possible.
112 | // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify
113 | // a duration of <= 10 ms. See and
114 | // for more information.
115 |
116 | if (frameDuration < 0.011f) {
117 | frameDuration = 0.100f;
118 | }
119 |
120 | CFRelease(cfFrameProperties);
121 | return frameDuration;
122 | }
123 |
124 | - (UIImage *)decompressedImageWithImage:(UIImage *)image
125 | data:(NSData *__autoreleasing _Nullable *)data
126 | options:(nullable NSDictionary*)optionsDict {
127 | // GIF do not decompress
128 | return image;
129 | }
130 |
131 | #pragma mark - Encode
132 | - (BOOL)canEncodeToFormat:(SDImageFormat)format {
133 | return (format == SDImageFormatGIF);
134 | }
135 |
136 | - (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format {
137 | if (!image) {
138 | return nil;
139 | }
140 |
141 | if (format != SDImageFormatGIF) {
142 | return nil;
143 | }
144 |
145 | NSMutableData *imageData = [NSMutableData data];
146 | CFStringRef imageUTType = [NSData sd_UTTypeFromSDImageFormat:SDImageFormatGIF];
147 | NSArray *frames = [SDWebImageCoderHelper framesFromAnimatedImage:image];
148 |
149 | // Create an image destination. GIF does not support EXIF image orientation
150 | CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count, NULL);
151 | if (!imageDestination) {
152 | // Handle failure.
153 | return nil;
154 | }
155 | if (frames.count == 0) {
156 | // for static single GIF images
157 | CGImageDestinationAddImage(imageDestination, image.CGImage, nil);
158 | } else {
159 | // for animated GIF images
160 | NSUInteger loopCount = image.sd_imageLoopCount;
161 | NSDictionary *gifProperties = @{(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary: @{(__bridge_transfer NSString *)kCGImagePropertyGIFLoopCount : @(loopCount)}};
162 | CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)gifProperties);
163 |
164 | for (size_t i = 0; i < frames.count; i++) {
165 | SDWebImageFrame *frame = frames[i];
166 | float frameDuration = frame.duration;
167 | CGImageRef frameImageRef = frame.image.CGImage;
168 | NSDictionary *frameProperties = @{(__bridge_transfer NSString *)kCGImagePropertyGIFDictionary : @{(__bridge_transfer NSString *)kCGImagePropertyGIFUnclampedDelayTime : @(frameDuration)}};
169 | CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties);
170 | }
171 | }
172 | // Finalize the destination.
173 | if (CGImageDestinationFinalize(imageDestination) == NO) {
174 | // Handle failure.
175 | imageData = nil;
176 | }
177 |
178 | CFRelease(imageDestination);
179 |
180 | return [imageData copy];
181 | }
182 |
183 | @end
184 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageImageIOCoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageCoder.h"
11 |
12 | /**
13 | Built in coder that supports PNG, JPEG, TIFF, includes support for progressive decoding.
14 |
15 | GIF
16 | Also supports static GIF (meaning will only handle the 1st frame).
17 | For a full GIF support, we recommend `FLAnimatedImage` or our less performant `SDWebImageGIFCoder`
18 |
19 | HEIC
20 | This coder also supports HEIC format because ImageIO supports it natively. But it depends on the system capabilities, so it won't work on all devices.
21 | Hardware works if: (iOS 11 || macOS 10.13) && (isMac || isIPhoneAndA10FusionChipAbove) && (!Simulator)
22 | */
23 | @interface SDWebImageImageIOCoder : NSObject
24 |
25 | + (nonnull instancetype)sharedCoder;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 | #import "SDWebImageManager.h"
11 |
12 | @class SDWebImagePrefetcher;
13 |
14 | @protocol SDWebImagePrefetcherDelegate
15 |
16 | @optional
17 |
18 | /**
19 | * Called when an image was prefetched.
20 | *
21 | * @param imagePrefetcher The current image prefetcher
22 | * @param imageURL The image url that was prefetched
23 | * @param finishedCount The total number of images that were prefetched (successful or not)
24 | * @param totalCount The total number of images that were to be prefetched
25 | */
26 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(nullable NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount;
27 |
28 | /**
29 | * Called when all images are prefetched.
30 | * @param imagePrefetcher The current image prefetcher
31 | * @param totalCount The total number of images that were prefetched (whether successful or not)
32 | * @param skippedCount The total number of images that were skipped
33 | */
34 | - (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount;
35 |
36 | @end
37 |
38 | typedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls);
39 | typedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls);
40 |
41 | /**
42 | * Prefetch some URLs in the cache for future use. Images are downloaded in low priority.
43 | */
44 | @interface SDWebImagePrefetcher : NSObject
45 |
46 | /**
47 | * The web image manager
48 | */
49 | @property (strong, nonatomic, readonly, nonnull) SDWebImageManager *manager;
50 |
51 | /**
52 | * Maximum number of URLs to prefetch at the same time. Defaults to 3.
53 | */
54 | @property (nonatomic, assign) NSUInteger maxConcurrentDownloads;
55 |
56 | /**
57 | * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority.
58 | */
59 | @property (nonatomic, assign) SDWebImageOptions options;
60 |
61 | /**
62 | * Queue options for Prefetcher. Defaults to Main Queue.
63 | */
64 | @property (SDDispatchQueueSetterSementics, nonatomic, nonnull) dispatch_queue_t prefetcherQueue;
65 |
66 | @property (weak, nonatomic, nullable) id delegate;
67 |
68 | /**
69 | * Return the global image prefetcher instance.
70 | */
71 | + (nonnull instancetype)sharedImagePrefetcher;
72 |
73 | /**
74 | * Allows you to instantiate a prefetcher with any arbitrary image manager.
75 | */
76 | - (nonnull instancetype)initWithImageManager:(nonnull SDWebImageManager *)manager NS_DESIGNATED_INITIALIZER;
77 |
78 | /**
79 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
80 | * currently one image is downloaded at a time,
81 | * and skips images for failed downloads and proceed to the next image in the list.
82 | * Any previously-running prefetch operations are canceled.
83 | *
84 | * @param urls list of URLs to prefetch
85 | */
86 | - (void)prefetchURLs:(nullable NSArray *)urls;
87 |
88 | /**
89 | * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,
90 | * currently one image is downloaded at a time,
91 | * and skips images for failed downloads and proceed to the next image in the list.
92 | * Any previously-running prefetch operations are canceled.
93 | *
94 | * @param urls list of URLs to prefetch
95 | * @param progressBlock block to be called when progress updates;
96 | * first parameter is the number of completed (successful or not) requests,
97 | * second parameter is the total number of images originally requested to be prefetched
98 | * @param completionBlock block to be called when prefetching is completed
99 | * first param is the number of completed (successful or not) requests,
100 | * second parameter is the number of skipped requests
101 | */
102 | - (void)prefetchURLs:(nullable NSArray *)urls
103 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock
104 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock;
105 |
106 | /**
107 | * Remove and cancel queued list
108 | */
109 | - (void)cancelPrefetching;
110 |
111 |
112 | @end
113 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImagePrefetcher.h"
10 |
11 | @interface SDWebImagePrefetcher ()
12 |
13 | @property (strong, nonatomic, nonnull) SDWebImageManager *manager;
14 | @property (strong, nonatomic, nullable) NSArray *prefetchURLs;
15 | @property (assign, nonatomic) NSUInteger requestedCount;
16 | @property (assign, nonatomic) NSUInteger skippedCount;
17 | @property (assign, nonatomic) NSUInteger finishedCount;
18 | @property (assign, nonatomic) NSTimeInterval startedTime;
19 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherCompletionBlock completionBlock;
20 | @property (copy, nonatomic, nullable) SDWebImagePrefetcherProgressBlock progressBlock;
21 |
22 | @end
23 |
24 | @implementation SDWebImagePrefetcher
25 |
26 | + (nonnull instancetype)sharedImagePrefetcher {
27 | static dispatch_once_t once;
28 | static id instance;
29 | dispatch_once(&once, ^{
30 | instance = [self new];
31 | });
32 | return instance;
33 | }
34 |
35 | - (nonnull instancetype)init {
36 | return [self initWithImageManager:[SDWebImageManager new]];
37 | }
38 |
39 | - (nonnull instancetype)initWithImageManager:(SDWebImageManager *)manager {
40 | if ((self = [super init])) {
41 | _manager = manager;
42 | _options = SDWebImageLowPriority;
43 | _prefetcherQueue = dispatch_get_main_queue();
44 | self.maxConcurrentDownloads = 3;
45 | }
46 | return self;
47 | }
48 |
49 | - (void)setMaxConcurrentDownloads:(NSUInteger)maxConcurrentDownloads {
50 | self.manager.imageDownloader.maxConcurrentDownloads = maxConcurrentDownloads;
51 | }
52 |
53 | - (NSUInteger)maxConcurrentDownloads {
54 | return self.manager.imageDownloader.maxConcurrentDownloads;
55 | }
56 |
57 | - (void)startPrefetchingAtIndex:(NSUInteger)index {
58 | if (index >= self.prefetchURLs.count) return;
59 | self.requestedCount++;
60 | [self.manager loadImageWithURL:self.prefetchURLs[index] options:self.options progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
61 | if (!finished) return;
62 | self.finishedCount++;
63 |
64 | if (image) {
65 | if (self.progressBlock) {
66 | self.progressBlock(self.finishedCount,(self.prefetchURLs).count);
67 | }
68 | }
69 | else {
70 | if (self.progressBlock) {
71 | self.progressBlock(self.finishedCount,(self.prefetchURLs).count);
72 | }
73 | // Add last failed
74 | self.skippedCount++;
75 | }
76 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didPrefetchURL:finishedCount:totalCount:)]) {
77 | [self.delegate imagePrefetcher:self
78 | didPrefetchURL:self.prefetchURLs[index]
79 | finishedCount:self.finishedCount
80 | totalCount:self.prefetchURLs.count
81 | ];
82 | }
83 | if (self.prefetchURLs.count > self.requestedCount) {
84 | dispatch_async(self.prefetcherQueue, ^{
85 | [self startPrefetchingAtIndex:self.requestedCount];
86 | });
87 | } else if (self.finishedCount == self.requestedCount) {
88 | [self reportStatus];
89 | if (self.completionBlock) {
90 | self.completionBlock(self.finishedCount, self.skippedCount);
91 | self.completionBlock = nil;
92 | }
93 | self.progressBlock = nil;
94 | }
95 | }];
96 | }
97 |
98 | - (void)reportStatus {
99 | NSUInteger total = (self.prefetchURLs).count;
100 | if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didFinishWithTotalCount:skippedCount:)]) {
101 | [self.delegate imagePrefetcher:self
102 | didFinishWithTotalCount:(total - self.skippedCount)
103 | skippedCount:self.skippedCount
104 | ];
105 | }
106 | }
107 |
108 | - (void)prefetchURLs:(nullable NSArray *)urls {
109 | [self prefetchURLs:urls progress:nil completed:nil];
110 | }
111 |
112 | - (void)prefetchURLs:(nullable NSArray *)urls
113 | progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock
114 | completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock {
115 | [self cancelPrefetching]; // Prevent duplicate prefetch request
116 | self.startedTime = CFAbsoluteTimeGetCurrent();
117 | self.prefetchURLs = urls;
118 | self.completionBlock = completionBlock;
119 | self.progressBlock = progressBlock;
120 |
121 | if (urls.count == 0) {
122 | if (completionBlock) {
123 | completionBlock(0,0);
124 | }
125 | } else {
126 | // Starts prefetching from the very first image on the list with the max allowed concurrency
127 | NSUInteger listCount = self.prefetchURLs.count;
128 | for (NSUInteger i = 0; i < self.maxConcurrentDownloads && self.requestedCount < listCount; i++) {
129 | [self startPrefetchingAtIndex:i];
130 | }
131 | }
132 | }
133 |
134 | - (void)cancelPrefetching {
135 | self.prefetchURLs = nil;
136 | self.skippedCount = 0;
137 | self.requestedCount = 0;
138 | self.finishedCount = 0;
139 | [self.manager cancelAll];
140 | }
141 |
142 | @end
143 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | @interface UIImage (ForceDecode)
12 |
13 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;
14 |
15 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+ForceDecode.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+ForceDecode.h"
10 | #import "SDWebImageCodersManager.h"
11 |
12 | @implementation UIImage (ForceDecode)
13 |
14 | + (UIImage *)decodedImageWithImage:(UIImage *)image {
15 | if (!image) {
16 | return nil;
17 | }
18 | NSData *tempData;
19 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}];
20 | }
21 |
22 | + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image {
23 | if (!image) {
24 | return nil;
25 | }
26 | NSData *tempData;
27 | return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}];
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface UIImage (GIF)
13 |
14 | /**
15 | * Creates an animated UIImage from an NSData.
16 | * For static GIF, will create an UIImage with `images` array set to nil. For animated GIF, will create an UIImage with valid `images` array.
17 | */
18 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data;
19 |
20 | /**
21 | * Checks if an UIImage instance is a GIF. Will use the `images` array.
22 | */
23 | - (BOOL)isGIF;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+GIF.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+GIF.h"
11 | #import "SDWebImageGIFCoder.h"
12 | #import "NSImage+WebCache.h"
13 |
14 | @implementation UIImage (GIF)
15 |
16 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data {
17 | if (!data) {
18 | return nil;
19 | }
20 | return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data];
21 | }
22 |
23 | - (BOOL)isGIF {
24 | return (self.images != nil);
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "NSData+ImageContentType.h"
11 |
12 | @interface UIImage (MultiFormat)
13 |
14 | /**
15 | * UIKit:
16 | * For static image format, this value is always 0.
17 | * For animated image format, 0 means infinite looping.
18 | * Note that because of the limitations of categories this property can get out of sync if you create another instance with CGImage or other methods.
19 | * AppKit:
20 | * NSImage currently only support animated via GIF imageRep unlike UIImage.
21 | * The getter of this property will get the loop count from GIF imageRep
22 | * The setter of this property will set the loop count from GIF imageRep
23 | */
24 | @property (nonatomic, assign) NSUInteger sd_imageLoopCount;
25 |
26 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;
27 | - (nullable NSData *)sd_imageData;
28 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImage+MultiFormat.h"
10 |
11 | #import "objc/runtime.h"
12 | #import "SDWebImageCodersManager.h"
13 |
14 | @implementation UIImage (MultiFormat)
15 |
16 | #if SD_MAC
17 | - (NSUInteger)sd_imageLoopCount {
18 | NSUInteger imageLoopCount = 0;
19 | for (NSImageRep *rep in self.representations) {
20 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
21 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
22 | imageLoopCount = [[bitmapRep valueForProperty:NSImageLoopCount] unsignedIntegerValue];
23 | break;
24 | }
25 | }
26 | return imageLoopCount;
27 | }
28 |
29 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {
30 | for (NSImageRep *rep in self.representations) {
31 | if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
32 | NSBitmapImageRep *bitmapRep = (NSBitmapImageRep *)rep;
33 | [bitmapRep setProperty:NSImageLoopCount withValue:@(sd_imageLoopCount)];
34 | break;
35 | }
36 | }
37 | }
38 |
39 | #else
40 |
41 | - (NSUInteger)sd_imageLoopCount {
42 | NSUInteger imageLoopCount = 0;
43 | NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount));
44 | if ([value isKindOfClass:[NSNumber class]]) {
45 | imageLoopCount = value.unsignedIntegerValue;
46 | }
47 | return imageLoopCount;
48 | }
49 |
50 | - (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {
51 | NSNumber *value = @(sd_imageLoopCount);
52 | objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
53 | }
54 | #endif
55 |
56 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {
57 | return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data];
58 | }
59 |
60 | - (nullable NSData *)sd_imageData {
61 | return [self sd_imageDataAsFormat:SDImageFormatUndefined];
62 | }
63 |
64 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {
65 | NSData *imageData = nil;
66 | if (self) {
67 | imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat];
68 | }
69 | return imageData;
70 | }
71 |
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | /**
16 | * Integrates SDWebImage async downloading and caching of remote images with UIImageView for highlighted state.
17 | */
18 | @interface UIImageView (HighlightedWebCache)
19 |
20 | /**
21 | * Set the imageView `highlightedImage` with an `url`.
22 | *
23 | * The download is asynchronous and cached.
24 | *
25 | * @param url The url for the image.
26 | */
27 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url NS_REFINED_FOR_SWIFT;
28 |
29 | /**
30 | * Set the imageView `highlightedImage` with an `url` and custom options.
31 | *
32 | * The download is asynchronous and cached.
33 | *
34 | * @param url The url for the image.
35 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
36 | */
37 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
38 | options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;
39 |
40 | /**
41 | * Set the imageView `highlightedImage` with an `url`.
42 | *
43 | * The download is asynchronous and cached.
44 | *
45 | * @param url The url for the image.
46 | * @param completedBlock A block called when operation has been completed. This block has no return value
47 | * and takes the requested UIImage as first parameter. In case of error the image parameter
48 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
49 | * indicating if the image was retrieved from the local cache or from the network.
50 | * The fourth parameter is the original image url.
51 | */
52 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
53 | completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;
54 |
55 | /**
56 | * Set the imageView `highlightedImage` with an `url` and custom options.
57 | *
58 | * The download is asynchronous and cached.
59 | *
60 | * @param url The url for the image.
61 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
62 | * @param completedBlock A block called when operation has been completed. This block has no return value
63 | * and takes the requested UIImage as first parameter. In case of error the image parameter
64 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
65 | * indicating if the image was retrieved from the local cache or from the network.
66 | * The fourth parameter is the original image url.
67 | */
68 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
69 | options:(SDWebImageOptions)options
70 | completed:(nullable SDExternalCompletionBlock)completedBlock;
71 |
72 | /**
73 | * Set the imageView `highlightedImage` with an `url` and custom options.
74 | *
75 | * The download is asynchronous and cached.
76 | *
77 | * @param url The url for the image.
78 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
79 | * @param progressBlock A block called while image is downloading
80 | * @note the progress block is executed on a background queue
81 | * @param completedBlock A block called when operation has been completed. This block has no return value
82 | * and takes the requested UIImage as first parameter. In case of error the image parameter
83 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
84 | * indicating if the image was retrieved from the local cache or from the network.
85 | * The fourth parameter is the original image url.
86 | */
87 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
88 | options:(SDWebImageOptions)options
89 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
90 | completed:(nullable SDExternalCompletionBlock)completedBlock;
91 |
92 | @end
93 |
94 | #endif
95 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImageView+HighlightedWebCache.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "UIView+WebCacheOperation.h"
14 | #import "UIView+WebCache.h"
15 |
16 | @implementation UIImageView (HighlightedWebCache)
17 |
18 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url {
19 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil];
20 | }
21 |
22 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options {
23 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil];
24 | }
25 |
26 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
27 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock];
28 | }
29 |
30 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
31 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock];
32 | }
33 |
34 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
35 | options:(SDWebImageOptions)options
36 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
37 | completed:(nullable SDExternalCompletionBlock)completedBlock {
38 | __weak typeof(self)weakSelf = self;
39 | [self sd_internalSetImageWithURL:url
40 | placeholderImage:nil
41 | options:options
42 | operationKey:@"UIImageViewImageOperationHighlighted"
43 | setImageBlock:^(UIImage *image, NSData *imageData) {
44 | weakSelf.highlightedImage = image;
45 | }
46 | progress:progressBlock
47 | completed:completedBlock];
48 | }
49 |
50 | @end
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImageView+WebCache.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "objc/runtime.h"
14 | #import "UIView+WebCacheOperation.h"
15 | #import "UIView+WebCache.h"
16 |
17 | @implementation UIImageView (WebCache)
18 |
19 | - (void)sd_setImageWithURL:(nullable NSURL *)url {
20 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
21 | }
22 |
23 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {
24 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
25 | }
26 |
27 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {
28 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
29 | }
30 |
31 | - (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
32 | [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock];
33 | }
34 |
35 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {
36 | [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock];
37 | }
38 |
39 | - (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
40 | [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock];
41 | }
42 |
43 | - (void)sd_setImageWithURL:(nullable NSURL *)url
44 | placeholderImage:(nullable UIImage *)placeholder
45 | options:(SDWebImageOptions)options
46 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
47 | completed:(nullable SDExternalCompletionBlock)completedBlock {
48 | [self sd_internalSetImageWithURL:url
49 | placeholderImage:placeholder
50 | options:options
51 | operationKey:nil
52 | setImageBlock:nil
53 | progress:progressBlock
54 | completed:completedBlock];
55 | }
56 |
57 | - (void)sd_setImageWithPreviousCachedImageWithURL:(nullable NSURL *)url
58 | placeholderImage:(nullable UIImage *)placeholder
59 | options:(SDWebImageOptions)options
60 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
61 | completed:(nullable SDExternalCompletionBlock)completedBlock {
62 | NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:url];
63 | UIImage *lastPreviousCachedImage = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];
64 |
65 | [self sd_setImageWithURL:url placeholderImage:lastPreviousCachedImage ?: placeholder options:options progress:progressBlock completed:completedBlock];
66 | }
67 |
68 | #if SD_UIKIT
69 |
70 | #pragma mark - Animation of multiple images
71 |
72 | - (void)sd_setAnimationImagesWithURLs:(nonnull NSArray *)arrayOfURLs {
73 | [self sd_cancelCurrentAnimationImagesLoad];
74 | __weak __typeof(self)wself = self;
75 |
76 | NSMutableArray> *operationsArray = [[NSMutableArray alloc] init];
77 |
78 | [arrayOfURLs enumerateObjectsUsingBlock:^(NSURL *logoImageURL, NSUInteger idx, BOOL * _Nonnull stop) {
79 | id operation = [SDWebImageManager.sharedManager loadImageWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
80 | if (!wself) return;
81 | dispatch_main_async_safe(^{
82 | __strong UIImageView *sself = wself;
83 | [sself stopAnimating];
84 | if (sself && image) {
85 | NSMutableArray *currentImages = [[sself animationImages] mutableCopy];
86 | if (!currentImages) {
87 | currentImages = [[NSMutableArray alloc] init];
88 | }
89 |
90 | // We know what index objects should be at when they are returned so
91 | // we will put the object at the index, filling any empty indexes
92 | // with the image that was returned too "early". These images will
93 | // be overwritten. (does not require additional sorting datastructure)
94 | while ([currentImages count] < idx) {
95 | [currentImages addObject:image];
96 | }
97 |
98 | currentImages[idx] = image;
99 |
100 | sself.animationImages = currentImages;
101 | [sself setNeedsLayout];
102 | }
103 | [sself startAnimating];
104 | });
105 | }];
106 | [operationsArray addObject:operation];
107 | }];
108 |
109 | [self sd_setImageLoadOperation:[operationsArray copy] forKey:@"UIImageViewAnimationImages"];
110 | }
111 |
112 | - (void)sd_cancelCurrentAnimationImagesLoad {
113 | [self sd_cancelImageLoadOperationWithKey:@"UIImageViewAnimationImages"];
114 | }
115 | #endif
116 |
117 | @end
118 |
119 | #endif
120 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | FOUNDATION_EXPORT NSString * _Nonnull const SDWebImageInternalSetImageInGlobalQueueKey;
16 |
17 | typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable imageData);
18 |
19 | @interface UIView (WebCache)
20 |
21 | /**
22 | * Get the current image URL.
23 | *
24 | * Note that because of the limitations of categories this property can get out of sync
25 | * if you use setImage: directly.
26 | */
27 | - (nullable NSURL *)sd_imageURL;
28 |
29 | /**
30 | * Set the imageView `image` with an `url` and optionally a placeholder image.
31 | *
32 | * The download is asynchronous and cached.
33 | *
34 | * @param url The url for the image.
35 | * @param placeholder The image to be set initially, until the image request finishes.
36 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
37 | * @param operationKey A string to be used as the operation key. If nil, will use the class name
38 | * @param setImageBlock Block used for custom set image code
39 | * @param progressBlock A block called while image is downloading
40 | * @note the progress block is executed on a background queue
41 | * @param completedBlock A block called when operation has been completed. This block has no return value
42 | * and takes the requested UIImage as first parameter. In case of error the image parameter
43 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
44 | * indicating if the image was retrieved from the local cache or from the network.
45 | * The fourth parameter is the original image url.
46 | */
47 | - (void)sd_internalSetImageWithURL:(nullable NSURL *)url
48 | placeholderImage:(nullable UIImage *)placeholder
49 | options:(SDWebImageOptions)options
50 | operationKey:(nullable NSString *)operationKey
51 | setImageBlock:(nullable SDSetImageBlock)setImageBlock
52 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
53 | completed:(nullable SDExternalCompletionBlock)completedBlock;
54 |
55 | /**
56 | * Set the imageView `image` with an `url` and optionally a placeholder image.
57 | *
58 | * The download is asynchronous and cached.
59 | *
60 | * @param url The url for the image.
61 | * @param placeholder The image to be set initially, until the image request finishes.
62 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
63 | * @param operationKey A string to be used as the operation key. If nil, will use the class name
64 | * @param setImageBlock Block used for custom set image code
65 | * @param progressBlock A block called while image is downloading
66 | * @note the progress block is executed on a background queue
67 | * @param completedBlock A block called when operation has been completed. This block has no return value
68 | * and takes the requested UIImage as first parameter. In case of error the image parameter
69 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
70 | * indicating if the image was retrieved from the local cache or from the network.
71 | * The fourth parameter is the original image url.
72 | * @param context A context with extra information to perform specify changes or processes.
73 | */
74 | - (void)sd_internalSetImageWithURL:(nullable NSURL *)url
75 | placeholderImage:(nullable UIImage *)placeholder
76 | options:(SDWebImageOptions)options
77 | operationKey:(nullable NSString *)operationKey
78 | setImageBlock:(nullable SDSetImageBlock)setImageBlock
79 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
80 | completed:(nullable SDExternalCompletionBlock)completedBlock
81 | context:(nullable NSDictionary *)context;
82 |
83 | /**
84 | * Cancel the current download
85 | */
86 | - (void)sd_cancelCurrentImageLoad;
87 |
88 | #if SD_UIKIT
89 |
90 | #pragma mark - Activity indicator
91 |
92 | /**
93 | * Show activity UIActivityIndicatorView
94 | */
95 | - (void)sd_setShowActivityIndicatorView:(BOOL)show;
96 |
97 | /**
98 | * set desired UIActivityIndicatorViewStyle
99 | *
100 | * @param style The style of the UIActivityIndicatorView
101 | */
102 | - (void)sd_setIndicatorStyle:(UIActivityIndicatorViewStyle)style;
103 |
104 | - (BOOL)sd_showActivityIndicatorView;
105 | - (void)sd_addActivityIndicator;
106 | - (void)sd_removeActivityIndicator;
107 |
108 | #endif
109 |
110 | @end
111 |
112 | #endif
113 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | @interface UIView (WebCacheOperation)
16 |
17 | /**
18 | * Set the image load operation (storage in a UIView based dictionary)
19 | *
20 | * @param operation the operation
21 | * @param key key for storing the operation
22 | */
23 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
24 |
25 | /**
26 | * Cancel all operations for the current UIView and key
27 | *
28 | * @param key key for identifying the operations
29 | */
30 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
31 |
32 | /**
33 | * Just remove the operations corresponding to the current UIView and key without cancelling them
34 | *
35 | * @param key key for identifying the operations
36 | */
37 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
38 |
39 | @end
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIView+WebCacheOperation.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "objc/runtime.h"
14 |
15 | static char loadOperationKey;
16 |
17 | typedef NSMutableDictionary SDOperationsDictionary;
18 |
19 | @implementation UIView (WebCacheOperation)
20 |
21 | - (SDOperationsDictionary *)operationDictionary {
22 | SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey);
23 | if (operations) {
24 | return operations;
25 | }
26 | operations = [NSMutableDictionary dictionary];
27 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
28 | return operations;
29 | }
30 |
31 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key {
32 | if (key) {
33 | [self sd_cancelImageLoadOperationWithKey:key];
34 | if (operation) {
35 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
36 | operationDictionary[key] = operation;
37 | }
38 | }
39 | }
40 |
41 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key {
42 | // Cancel in progress downloader from queue
43 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
44 | id operations = operationDictionary[key];
45 | if (operations) {
46 | if ([operations isKindOfClass:[NSArray class]]) {
47 | for (id operation in operations) {
48 | if (operation) {
49 | [operation cancel];
50 | }
51 | }
52 | } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){
53 | [(id) operations cancel];
54 | }
55 | [operationDictionary removeObjectForKey:key];
56 | }
57 | }
58 |
59 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key {
60 | if (key) {
61 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
62 | [operationDictionary removeObjectForKey:key];
63 | }
64 | }
65 |
66 | @end
67 |
68 | #endif
69 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## SDWebImage
5 |
6 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
7 |
8 | Permission is hereby granted, free of charge, to any person obtaining a copy
9 | of this software and associated documentation files (the "Software"), to deal
10 | in the Software without restriction, including without limitation the rights
11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 | copies of the Software, and to permit persons to whom the Software is furnished
13 | to do so, subject to the following conditions:
14 |
15 | The above copyright notice and this permission notice shall be included in all
16 | copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 | THE SOFTWARE.
25 |
26 |
27 | Generated by CocoaPods - https://cocoapods.org
28 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com
18 |
19 | Permission is hereby granted, free of charge, to any person obtaining a copy
20 | of this software and associated documentation files (the "Software"), to deal
21 | in the Software without restriction, including without limitation the rights
22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23 | copies of the Software, and to permit persons to whom the Software is furnished
24 | to do so, subject to the following conditions:
25 |
26 | The above copyright notice and this permission notice shall be included in all
27 | copies or substantial portions of the Software.
28 |
29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35 | THE SOFTWARE.
36 |
37 |
38 | License
39 | MIT
40 | Title
41 | SDWebImage
42 | Type
43 | PSGroupSpecifier
44 |
45 |
46 | FooterText
47 | Generated by CocoaPods - https://cocoapods.org
48 | Title
49 |
50 | Type
51 | PSGroupSpecifier
52 |
53 |
54 | StringsTable
55 | Acknowledgements
56 | Title
57 | Acknowledgements
58 |
59 |
60 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_AutoPackageScriptDemo : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_AutoPackageScriptDemo
5 | @end
6 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
6 |
7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
8 |
9 | install_framework()
10 | {
11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
12 | local source="${BUILT_PRODUCTS_DIR}/$1"
13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
15 | elif [ -r "$1" ]; then
16 | local source="$1"
17 | fi
18 |
19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
20 |
21 | if [ -L "${source}" ]; then
22 | echo "Symlinked..."
23 | source="$(readlink "${source}")"
24 | fi
25 |
26 | # use filter instead of exclude so missing patterns dont' throw errors
27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
29 |
30 | local basename
31 | basename="$(basename -s .framework "$1")"
32 | binary="${destination}/${basename}.framework/${basename}"
33 | if ! [ -r "$binary" ]; then
34 | binary="${destination}/${basename}"
35 | fi
36 |
37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
39 | strip_invalid_archs "$binary"
40 | fi
41 |
42 | # Resign the code if required by the build settings to avoid unstable apps
43 | code_sign_if_enabled "${destination}/$(basename "$1")"
44 |
45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
47 | local swift_runtime_libs
48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
49 | for lib in $swift_runtime_libs; do
50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
52 | code_sign_if_enabled "${destination}/${lib}"
53 | done
54 | fi
55 | }
56 |
57 | # Signs a framework with the provided identity
58 | code_sign_if_enabled() {
59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
60 | # Use the current code_sign_identitiy
61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
63 |
64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
65 | code_sign_cmd="$code_sign_cmd &"
66 | fi
67 | echo "$code_sign_cmd"
68 | eval "$code_sign_cmd"
69 | fi
70 | }
71 |
72 | # Strip invalid architectures
73 | strip_invalid_archs() {
74 | binary="$1"
75 | # Get architectures for current file
76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
77 | stripped=""
78 | for arch in $archs; do
79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
80 | # Strip non-valid architectures in-place
81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
82 | stripped="$stripped $arch"
83 | fi
84 | done
85 | if [[ "$stripped" ]]; then
86 | echo "Stripped $binary of architectures:$stripped"
87 | fi
88 | }
89 |
90 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
91 | wait
92 | fi
93 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
5 |
6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
7 | > "$RESOURCES_TO_COPY"
8 |
9 | XCASSET_FILES=()
10 |
11 | case "${TARGETED_DEVICE_FAMILY}" in
12 | 1,2)
13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
14 | ;;
15 | 1)
16 | TARGET_DEVICE_ARGS="--target-device iphone"
17 | ;;
18 | 2)
19 | TARGET_DEVICE_ARGS="--target-device ipad"
20 | ;;
21 | 3)
22 | TARGET_DEVICE_ARGS="--target-device tv"
23 | ;;
24 | 4)
25 | TARGET_DEVICE_ARGS="--target-device watch"
26 | ;;
27 | *)
28 | TARGET_DEVICE_ARGS="--target-device mac"
29 | ;;
30 | esac
31 |
32 | install_resource()
33 | {
34 | if [[ "$1" = /* ]] ; then
35 | RESOURCE_PATH="$1"
36 | else
37 | RESOURCE_PATH="${PODS_ROOT}/$1"
38 | fi
39 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
40 | cat << EOM
41 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
42 | EOM
43 | exit 1
44 | fi
45 | case $RESOURCE_PATH in
46 | *.storyboard)
47 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
48 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
49 | ;;
50 | *.xib)
51 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
52 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
53 | ;;
54 | *.framework)
55 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
56 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
57 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
58 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
59 | ;;
60 | *.xcdatamodel)
61 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
62 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
63 | ;;
64 | *.xcdatamodeld)
65 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
66 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
67 | ;;
68 | *.xcmappingmodel)
69 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
70 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
71 | ;;
72 | *.xcassets)
73 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
74 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
75 | ;;
76 | *)
77 | echo "$RESOURCE_PATH"
78 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
79 | ;;
80 | esac
81 | }
82 |
83 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
85 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
86 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
88 | fi
89 | rm -f "$RESOURCES_TO_COPY"
90 |
91 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
92 | then
93 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
94 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
95 | while read line; do
96 | if [[ $line != "${PODS_ROOT}*" ]]; then
97 | XCASSET_FILES+=("$line")
98 | fi
99 | done <<<"$OTHER_XCASSETS"
100 |
101 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
102 | fi
103 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo.debug.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"SDWebImage" -framework "ImageIO"
6 | PODS_BUILD_DIR = $BUILD_DIR
7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/Pods-AutoPackageScriptDemo/Pods-AutoPackageScriptDemo.release.xcconfig:
--------------------------------------------------------------------------------
1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
3 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/SDWebImage"
4 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/SDWebImage"
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"SDWebImage" -framework "ImageIO"
6 | PODS_BUILD_DIR = $BUILD_DIR
7 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/workspace_demo/AutoPackageScriptDemo/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage"
4 | OTHER_LDFLAGS = -framework "ImageIO"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------