文章目录
编译最终的 Target
Build target MyAppName of project MyAppName with configuration Debug
注意:
编译的顺序总体上是遵守着Build Phases
中的顺序的
这部分相比较编译单个
Target
就是多了一些步骤:
1、一些自定义的脚本执行
2、在链接生成可执行文件之后,还会进行资源的处理,拷贝
3、签名步骤
一、准备工作
创建 .app
文件夹
路径为: Build/Products/Debug-iphonesimulator/MyAppName.app
;就是最终的生成的app文件夹
// 生成 .app 文件夹
MkDir /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
/bin/mkdir -p /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app
路径格式为
Build/Products/{配置}-{平台}/{项目名称}.app
处理 Entitlements
// 写入相关文件到 DerivedSources (Entitlements.plist、Entitlements-Simulated.plist)
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/Entitlements.plist (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/Entitlements.plist
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/Entitlements-Simulated.plist (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/Entitlements-Simulated.plist
// 处理产品打包,生成 Entitlements
ProcessProductPackaging "" /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app.xcent (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
Entitlements:
{
"com.apple.security.get-task-allow" = 1;
}
builtin-productPackagingUtility -entitlements -format xml -o /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app.xcent
ProcessProductPackaging "" /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app-Simulated.xcent (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
Entitlements:
{
"application-identifier" = "111111111";
"aps-environment" = development;
}
builtin-productPackagingUtility -entitlements -format xml -o /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app-Simulated.xcent
DerivedSources
路径为/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources
DerivedSources
文件夹内容如下:
.
├── Entitlements-Simulated.plist
├── Entitlements.plist
└── Pods-MyAppName-checkManifestLockResult.txt
Entitlements-Simulated.plist
内容如下:
application-identifier
: Bundle Idaps-environment
: 推送 aps
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>1111111</string>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
Entitlements.plist
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.get-task-allow</key>
<true/>
</dict>
</plist>
Pods-MyAppName-checkManifestLockResult.txt
是 pod
检查 Podfile
文件内容
SUCCESS
这个就是动态调试的一些权限
二、WriteAuxiliaryFile (写入辅助文件)
和上面?的单个Target
相同
// 写入辅助文件
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/all-product-headers.yaml (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/all-product-headers.yaml
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.hmap
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-project-headers.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-project-headers.hmap
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-own-target-headers.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-own-target-headers.hmap
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-generated-files.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-generated-files.hmap
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-all-target-headers.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-all-target-headers.hmap
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-all-non-framework-target-headers.hmap (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-all-non-framework-target-headers.hmap
// 写入辅助文件 .LinkFileList
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MyAppName.LinkFileList (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MyAppName.LinkFileList
三、脚本文件 Check Pods Manifest.lock
看下Xcode
的Build Phases
内容如下:
这个步骤对应的是上面的脚本文件
// 自定义脚本文件 (这个是 pod 的 Check Pods Manifest.lock)
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-DF83CB016ED7E296FB2BFB2E.sh (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-DF83CB016ED7E296FB2BFB2E.sh
// 执行脚本
PhaseScriptExecution [CP]\ Check\ Pods\ Manifest.lock /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-DF83CB016ED7E296FB2BFB2E.sh (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
/bin/sh -c /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-DF83CB016ED7E296FB2BFB2E.sh
Script-DF83CB016ED7E296FB2BFB2E.sh
内容打开如下:
#!/bin/sh
diff "${PODS_PODFILE_DIR_PATH}/Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [ $? != 0 ] ; then
# print error to STDERR
echo "error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation." >&2
exit 1
fi
# This output is used by Xcode 'outputs' to avoid re-running this script phase.
echo "SUCCESS" > "${SCRIPT_OUTPUT_FILE_0}"
这个就是对比podfile
文件,最终结果输出到 /Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/Pods-MyAppName-checkManifestLockResult.txt
文件中
四、CompileC (编译源文件)
.m
文件经过编译成为 .o
文件
看下Xcode
的Build Phases
内容如下:
// 编译源文件
CompileC /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MJRefreshBackStateFooter.o /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/MJ/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export LANG=en_US.US-ASCII
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/Users/ocean/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/ocean/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wno-deprecated-implementations -DDEBUG=1 -DCOCOAPODS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -mios-simulator-version-min=7.0 -g -Wno-sign-conversion -Wno-infinite-recursion -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version=2 -fobjc-legacy-dispatch -index-store-path /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Index/DataStore -iquote /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-generated-files.hmap -I/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-own-target-headers.hmap -I/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-all-target-headers.hmap -iquote /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName-project-headers.hmap -I/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/include -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/AFNetworking -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/BlocksKit -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYAlert -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYDeviceKit -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYHudManager -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYPageRouteManager -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYTextInput -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/HYWebView -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/LBXScan -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MBProgressHUD -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MGSwipeTableCell -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHAnimationKit -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHAppConfiguration -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHBaseClass -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHConfigUtil -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHFoundationKit -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHHudManager -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHNetworkManager -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHReachability -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHUIKit -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/MHUserInfo -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/Masonry -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/NJKWebViewProgress -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/RegexKitLite -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/SDCycleScrollView -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/SDWebImage -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/SVProgressHUD -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/TZImagePickerController -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/Valet -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/WZLBadge -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/YYModel -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/ZipArchive -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/pop -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/AFNetworking -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/AMap3DMap -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/AMapFoundation -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/AMapSearch -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/Masonry -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/RegexKitLite -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/SimpleKeychain -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/SystemServices -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/Headers/Public/ZipArchive -I/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/HotServices/Others -I/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources/x86_64 -I/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/DerivedSources -F/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMap3DMap -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMapFoundation -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMapSearch -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Frameworks -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/Optional -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/PlatformSDK/QQSDK -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/Required -F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/AlipaySDK -include /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/MyAppName.pch -MMD -MT dependencies -MF /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MJRefreshBackStateFooter.d --serialize-diagnostics /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MJRefreshBackStateFooter.dia -c /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/MJ/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m -o /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MJRefreshBackStateFooter.o
编译过程中会有一些警告信息
// 编译过程中产生的警告信息
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/CustomUI/WPAttributedMarkup/WPAttributedMarkup/NSString+WPAttributedMarkup.m:124:9: warning: address of function 'link' will always evaluate to 'true' [-Wpointer-bool-conversion]
if (link)
~~ ^~~~
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/CustomUI/WPAttributedMarkup/WPAttributedMarkup/NSString+WPAttributedMarkup.m:124:9: note: prefix with the address-of operator to silence this warning
if (link)
^
&
1 warning generated.
五、Ld 库(静态库.a
、动态库framework
)处理(链接到.app下的可执行文件中)
看下Xcode
的Build Phases
内容如下:
Pod
管理的第三方库最终生成的是 .a
静态库;
这个步骤Ld
就是把所有的
- 静态库: (包含
Pod
中的和主项目中的静态库).a
.framework
- 动态库:
.framework
合并到.app
下的可执行文件中
-L
:.a
-F
:framework
// 静态库依赖
Ld /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/MyAppName normal x86_64 (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export IPHONEOS_DEPLOYMENT_TARGET=7.0
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-arch x86_64
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/AFNetworking
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/BlocksKit
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYAlert
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYDeviceKit
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYHudManager
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYPageRouteManager
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYTextInput
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/HYWebView
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/LBXScan
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MBProgressHUD
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MGSwipeTableCell
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHAnimationKit
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHAppConfiguration
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHBaseClass
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHConfigUtil
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHFoundationKit
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHHudManager
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHNetworkManager
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHReachability
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHUIKit
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHUserInfo
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/Masonry
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/NJKWebViewProgress
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/RegexKitLite
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/SDCycleScrollView
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/SDWebImage
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/SVProgressHUD
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/TZImagePickerController
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/Valet
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/WZLBadge
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/YYModel
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/ZipArchive
-L/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/pop
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Frameworks
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/JpushLib
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/UMAnalytics_Sdk_3.6.6
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/PlatformSDK/SinaWeiboSDK
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/PlatformSDK/WeChatSDK
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/HotServices/Others
-L/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/Lame
-F/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMap3DMap
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMapFoundation
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMapSearch
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Frameworks
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/Optional
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/PlatformSDK/QQSDK
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/ShareSDK/Support/Required
-F/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/AlipaySDK
-filelist /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MyAppName.LinkFileList
-Xlinker
-rpath
-Xlinker
@executable_path/Frameworks
-mios-simulator-version-min=7.0
-dead_strip
-Xlinker
-object_path_lto
-Xlinker /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MyAppName_lto.o
-Xlinker
-export_dynamic
-Xlinker
-no_deduplicate
-Xlinker
-objc_abi_version
-Xlinker 2
-fobjc-arc
-fobjc-link-runtime
-ObjC
-lAFNetworking
-lBlocksKit
-lHYAlert
-lHYDeviceKit
-lHYHudManager
-lHYPageRouteManager
-lHYTextInput
-lHYWebView
-lLBXScan
-lMBProgressHUD
-lMGSwipeTableCell
-lMHAnimationKit
-lMHAppConfiguration
-lMHBaseClass
-lMHConfigUtil
-lMHFoundationKit
-lMHHudManager
-lMHNetworkManager
-lMHReachability
-lMHUIKit
-lMHUserInfo
-lMasonry
-lNJKWebViewProgress
-lRegexKitLite
-lSDCycleScrollView
-lSDWebImage
-lSVProgressHUD
-lTZImagePickerController
-lValet
-lWZLBadge
-lYYModel
-lZipArchive
-lc++
-licucore
-lpop
-lz
-framework AMapFoundationKit
-framework AMapSearchKit
-framework AVFoundation
-framework AssetsLibrary
-framework CoreFoundation
-framework CoreGraphics
-framework CoreLocation
-framework CoreTelephony
-framework CoreText
-framework Foundation
-framework GLKit
-framework ImageIO
-framework MAMapKit
-framework MessageUI
-framework MobileCoreServices
-framework OpenGLES
-framework Photos
-framework QuartzCore
-framework Security
-framework SystemConfiguration
-framework UIKit
-framework WebKit
-Xlinker
-sectcreate
-Xlinker
__TEXT
-Xlinker
__entitlements
-Xlinker /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app-Simulated.xcent
-lz
-lsqlite3.0
-lz.1.2.5
-lxml2
-framework WebKit
-framework AlipaySDK
-framework CoreMotion
-framework CFNetwork
-framework Foundation
-framework UIKit
-framework CoreGraphics
-framework CoreText
-framework QuartzCore
-framework CoreTelephony
-lc++
-lresolv
-framework AddressBookUI
-framework AddressBook
-framework MessageUI
-framework ImageIO
-framework JavaScriptCore
-lstdc++
-licucore
-lxml2
-lz.1.2.5
-framework ShareSDKUI
-framework ShareSDK
-framework TencentOpenAPI
-lsqlite3.0
-lz /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/JpushLib/jpush-ios-2.1.6.a
-lWeChatSDK
-lcrypto
-framework MOBFoundation
-lMobClickLibrary
-framework MobileCoreServices
-lssl
-framework SystemConfiguration
-framework Security
-framework MapKit
-framework CoreLocation
-framework AudioToolbox
-framework ShareSDKExtension
-framework ShareSDKConnector
-framework MediaPlayer
-framework CoreFoundation
-lsqlite3
-lWeiboSDK
-framework AssetsLibrary
-framework AVFoundation
-lPods-MyAppName
-Xlinker
-dependency_info
-Xlinker /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Objects-normal/x86_64/MyAppName_dependency_info.dat
-o /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/MyAppName
存放的所以来的库的信息
补充:
1、Pods
项目管理所有的第三方库
2、每一个第三方库都有一个Target
,每一个Target
最终生成静态库.a
3、Pods
项目有一个特殊的Target
(Pods-MyAppName
), 最终生成一个静态库libPods-MyAppName.a
,这个Target
依赖Pods
项目中的其他Target
,所以libPods-MyAppName.a
也会依赖其他Target
生成的静态库
4、Pods
项目特殊的Target
(Pods-MyAppName
) 生成的静态库libPods-MyAppName.a
会被放到主项目,主项目依赖这个静态库
六、拷贝/处理资源文件
把相关的资源文件处理之后放到.app
文件夹下面
看下Xcode
的Build Phases
内容如下:
CompileStoryboard 编译 .storyboard
为 .storyboardc
文件
- 使用的工具:
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
注:这一步
CompileStoryboard
只是把.storyboard
编译为.storyboardc
文件,还需要经过下面的LinkStoryboards
操作才会把.storyboardc
移动到.app
文件夹下面
MHChildRearingHome.storyboard
文件生成 MHChildRearingHome.storyboardc
文件
// 编译 .Storyboard 文件为 .storyboardc 文件
CompileStoryboard /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/Home/MHChildRearingHome.storyboard (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/..
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
--errors
--warnings
--notices
--module MyAppName
--output-partial-info-plist /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MHChildRearingHome-SBPartialInfo.plist
--auto-activate-custom-fonts
--target-device iphone
--target-device ipad
--minimum-deployment-target 7.0
--output-format human-readable-text
--compilation-directory /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/Home/MHChildRearingHome.storyboard
对应的目录文件如下:
$ cd /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build
$ tree
.
├── Base.lproj
│ ├── LaunchScreen-SBPartialInfo.plist
│ ├── LaunchScreen.storyboardc
│ │ ├── 01J-lp-oVM-view-Ze5-6b-2t3.nib
│ │ ├── Info.plist
│ │ ├── StringsFiles.plist
│ │ └── UIViewController-01J-lp-oVM.nib
│ ├── Main-SBPartialInfo.plist
│ ├── Main.storyboardc
│ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC~ipad.nib
│ │ │ ├── objects-8.0+.nib
│ │ │ └── runtime.nib
│ │ ├── BYZ-38-t0r-view-8bC-Xf-vdC~iphone.nib
│ │ │ ├── objects-8.0+.nib
│ │ │ └── runtime.nib
│ │ ├── StringsFiles.plist
│ │ ├── UIViewController-BYZ-38-t0r~ipad.nib
│ │ │ ├── objects-8.0+.nib
│ │ │ └── runtime.nib
│ │ └── UIViewController-BYZ-38-t0r~iphone.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── Main~ipad.storyboardc
│ │ ├── Info-8.0+.plist
│ │ └── Info.plist
│ └── Main~iphone.storyboardc
│ ├── Info-8.0+.plist
│ └── Info.plist
├── MyAppName.app-Simulated.xcent
├── MyAppName.app.xcent
├── MHChildRearingHome-SBPartialInfo.plist
├── MHChildRearingHome.storyboardc
│ ├── 6Hp-rT-Utw-view-kJC-jE-2BB~ipad.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── 6Hp-rT-Utw-view-kJC-jE-2BB~iphone.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── Lcz-kB-qdq-view-oge-hV-Jzc~ipad.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── Lcz-kB-qdq-view-oge-hV-Jzc~iphone.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── MHChildRearingHomeHeaderVC~ipad.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── MHChildRearingHomeHeaderVC~iphone.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ ├── MHVIPMoreViewController~ipad.nib
│ │ ├── objects-8.0+.nib
│ │ └── runtime.nib
│ └── MHVIPMoreViewController~iphone.nib
│ ├── objects-8.0+.nib
│ └── runtime.nib
├── MHChildRearingHome~ipad.storyboardc
│ ├── Info-8.0+.plist
│ └── Info.plist
├── MHChildRearingHome~iphone.storyboardc
│ ├── Info-8.0+.plist
│ └── Info.plist
CpResource (其他的资源文件)
命令是
builtin-copy
.caf
.json
.db
.bundle
.txt
.jpg
// 拷贝资源文件到 .app 文件夹下面 (sound.caf、MineConfigClass.json、Database.db、ShareSDK.bundle、read_me.txt、Launch2.jpg)
CpResource /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/sound.caf /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/sound.caf (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
builtin-copy
-exclude .DS_Store
-exclude CVS
-exclude .svn
-exclude .git
-exclude .hg
-resolve-src-symlinks
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/sound.caf
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app
CopyPlistFile 处理自定义的 plist 文件
命令是
builtin-copyPlist
不是info.plist
文件,是自定义的plist
文件;
// 拷贝plist文件到 .app 文件夹下面
CopyPlistFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/MyConfig.plist /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/Home/HaiZiGuoPlist/MyConfig.plist (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
builtin-copyPlist
--convert binary1
--outdir /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app
-- /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/IndexVC/Home/HaiZiGuoPlist/MyConfig.plist
CopyPNGFile 拷贝png图片文件
命令是
/Applications/Xcode.app/Contents/Developer/usr/bin/copypng
注意是直接放在项目文件夹中的图片文件,不是
.xcassets
中的图片
// 拷贝 png 图片到 .app 文件夹下面
CopyPNGFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/首页选中_06@2x.png /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/MyImages/tabbarImg/首页选中_06@2x.png (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk
export TOOLCHAINS=
/Applications/Xcode.app/Contents/Developer/usr/bin/copypng
-compress
-strip-PNG-text
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/MyImages/tabbarImg/首页选中_06@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/首页选中_06@2x.png
CompileAssetCatalog (编译 .xcassets 文件 为 Assets.car)
命令是
/Applications/Xcode.app/Contents/Developer/usr/bin/actool
对 .xcassets
文件进行处理 ,生成 .car
文件,同时会对 AppIcon
和 LaunchImage
进行处理,同时会对文件名称重新格式化命名
// 编译 .xcassets 文件 为 Assets.car
CompileAssetCatalog /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/CustomUI/CTAssetsPickerController/Images.xcassets /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Images.xcassets /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/MJ/Images.xcassets (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
/Applications/Xcode.app/Contents/Developer/usr/bin/actool
--output-format human-readable-text
--notices
--warnings
--export-dependency-info /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/assetcatalog_dependencies
--output-partial-info-plist /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/assetcatalog_generated_info.plist
--app-icon AppIcon
--launch-image LaunchImage
--compress-pngs
--enable-on-demand-resources YES
--filter-for-device-model iPhone11,2
--filter-for-device-os-version 12.1
--sticker-pack-identifier-prefix com.mywayinfo.yuerzhushou.sticker-pack.
--target-device iphone
--target-device ipad
--minimum-deployment-target 7.0
--platform iphonesimulator
--product-type com.apple.product-type.application
--compile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/CustomUI/CTAssetsPickerController/Images.xcassets /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Images.xcassets /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Library/MJ/Images.xcassets
assetcatalog_generated_info.plist
内容如下:
是必须的
AppIcon
和LaunchImage
信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon20x20</string>
<string>AppIcon29x29</string>
<string>AppIcon40x40</string>
<string>AppIcon57x57</string>
<string>AppIcon60x60</string>
</array>
<key>CFBundleIconName</key>
<string>AppIcon</string>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon20x20</string>
<string>AppIcon29x29</string>
<string>AppIcon40x40</string>
<string>AppIcon57x57</string>
<string>AppIcon60x60</string>
<string>AppIcon50x50</string>
<string>AppIcon72x72</string>
<string>AppIcon76x76</string>
<string>AppIcon83.5x83.5</string>
</array>
<key>CFBundleIconName</key>
<string>AppIcon</string>
</dict>
</dict>
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>11.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-1100-Portrait-2436h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 812}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-800-Portrait-736h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-800-667h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700-568h</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700-Portrait</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
</array>
</dict>
</plist>
assetcatalog_dependencies
文件内容主要是AppIcon
和LaunchImage
的文件名称
处理结果:
/* com.apple.actool.compilation-results */
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon20x20@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon20x20@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon29x29.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon29x29@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon29x29@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon40x40@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon40x40@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon57x57.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon57x57@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon60x60@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon60x60@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon20x20~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon20x20@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon29x29~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon29x29@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon40x40~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon40x40@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon50x50~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon50x50@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon72x72~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon72x72@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon76x76~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon76x76@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/AppIcon83.5x83.5@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-1100-Portrait-2436h@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-800-Portrait-736h@3x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-800-667h@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-700@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-700-568h@2x.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-700-Portrait~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/LaunchImage-700-Portrait@2x~ipad.png
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/Assets.car
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/assetcatalog_generated_info.plist
.app
中Info.plist
中的AppIcon
.app
中 Info.plist
中的 UILaunchImages
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-1100-Portrait-2436h</string>
<key>UILaunchImageSize</key>
<string>{375, 812}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>11.0</string>
</dict>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-800-Portrait-736h</string>
<key>UILaunchImageSize</key>
<string>{414, 736}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
</dict>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-800-667h</string>
<key>UILaunchImageSize</key>
<string>{375, 667}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>8.0</string>
</dict>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
</dict>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700-568h</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
</dict>
<dict>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageName</key>
<string>LaunchImage-700-Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
</dict>
ProcessInfoPlistFile (处理 info.plsit
信息)
处理 info.plist
文件,把上面的处理 .xcassets
生成的 plist
文件合并到当前的 info.plist
文件上
命令是
builtin-infoPlistUtility
// 处理 info.plist 文件,把上面的处理 .xcassets 生成的 plist 文件合并到当前的 info.plist 文件上
ProcessInfoPlistFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/Info.plist /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Info.plist (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
builtin-infoPlistUtility /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/Info.plist
-genpkginfo /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/PkgInfo
-expandbuildsettings
-format binary
-platform iphonesimulator
-additionalcontentfile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Base.lproj/LaunchScreen-SBPartialInfo.plist
-additionalcontentfile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Base.lproj/Main-SBPartialInfo.plist
-additionalcontentfile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MHChildRearingHome-SBPartialInfo.plist
-additionalcontentfile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/assetcatalog_generated_info.plist
-o /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/Info.plist
对比两个plist
文件内容,会有一些不同
Info.plist的key值 | 项目中Info.plist | .app文件夹中Info.plist | 备注 |
---|---|---|---|
CFBundleExecutable | $(EXECUTABLE_NAME) | MyAppName | 可执行文件名称 |
CFBundleIdentifier | $(PRODUCT_BUNDLE_IDENTIFIER) | 11111 | 替换实际的bundle id |
CFBundleName | $(PRODUCT_NAME) | MyAppName | |
CFBundleIcons | 空值 | 有具体值,见下面 | |
CFBundleIcons~ipad | 空值 | 见下面 | |
UILaunchImages | 没有key | 见下面 | |
DTCompiler | 没有key | com.apple.compilers.llvm.clang.1_0 | 编译器 |
DTPlatformVersion | 没有key | 12.1 | 编译的目标平台版本 |
DTPlatformBuild | 没有key | 16B91 | |
DTPlatformName | 没有key | iphoneos | |
DTSDKName | 没有key | iphoneos12.1 | 编译的sdk名称 |
DTSDKBuild | 没有key | 16B91 | 编译的sdk的build版本号 |
DTXcodeBuild | 没有key | 10B61 | |
DTXcode | 没有key | 1010 | Xcode的版本号 |
DTAppStoreToolsBuild | 没有key | 10B61 | |
BuildMachineOSBuild | 没有key | 18A391 | |
CFBundleSupportedPlatforms | 没有key | 数组类型: iPhoneOS | 支持的平台 |
MinimumOSVersion | 没有key | 7.0 | 支持的最大系统版本 |
UIDeviceFamily | 没有key | 数组: 1、2 | 1表示iPhone和iPod;2表示iPad |
LinkStoryboards 链接前面生成的 storyboradc
命令工具是
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
// 链接 .storyboardc 文件
LinkStoryboards (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/..
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool
--errors
--warnings
--notices
--module MyAppName
--target-device iphone
--target-device ipad
--minimum-deployment-target 7.0
--output-format human-readable-text
--link /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Base.lproj/LaunchScreen.storyboardc
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Base.lproj/Main.storyboardc
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MHChildRearingHome.storyboardc
七、脚本文件 Copy Pods Resources
把 Pod
项目中的资源文件(.bundle
)拷贝到 .app
文件夹下面
看下Xcode
的Build Phases
内容如下:
// 写入辅助文件 .sh 脚本文件 (Copy Pods Resources)
WriteAuxiliaryFile /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-5A2B58FAD3740B34882140C7.sh (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
write-file /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-5A2B58FAD3740B34882140C7.sh
// 执行脚本文件,把 pod 中的 bundle 文件拷贝到 .app 文件夹下
PhaseScriptExecution [CP]\ Copy\ Pods\ Resources /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-5A2B58FAD3740B34882140C7.sh (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
/bin/sh -c /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/Script-5A2B58FAD3740B34882140C7.sh
Script-5A2B58FAD3740B34882140C7.sh
打开内容如下
#!/bin/sh
"${PODS_ROOT}/Target Support Files/Pods-MyAppName/Pods-MyAppName-resources.sh"
根据路径找到脚本.sh
的内容
路径为: ${PODS_ROOT}/Target Support Files/Pods-MyAppName/Pods-MyAppName-resources.sh
具体如下:
#!/bin/sh
set -e
set -u
set -o pipefail
function on_error {
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
}
trap 'on_error $LINENO' ERR
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
# resources to, so exit 0 (signalling the script phase was successful).
exit 0
fi
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
> "$RESOURCES_TO_COPY"
XCASSET_FILES=()
# This protects against multiple targets copying the same framework dependency at the same time. The solution
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
case "${TARGETED_DEVICE_FAMILY:-}" in
1,2)
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
;;
1)
TARGET_DEVICE_ARGS="--target-device iphone"
;;
2)
TARGET_DEVICE_ARGS="--target-device ipad"
;;
3)
TARGET_DEVICE_ARGS="--target-device tv"
;;
4)
TARGET_DEVICE_ARGS="--target-device watch"
;;
*)
TARGET_DEVICE_ARGS="--target-device mac"
;;
esac
install_resource()
{
if [[ "$1" = /* ]] ; then
RESOURCE_PATH="$1"
else
RESOURCE_PATH="${PODS_ROOT}/$1"
fi
if [[ ! -e "$RESOURCE_PATH" ]] ; then
cat << EOM
error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
EOM
exit 1
fi
case $RESOURCE_PATH in
*.storyboard)
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}" || true
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}
;;
*.xib)
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}" || true
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}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
;;
*.xcdatamodel)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
;;
*.xcdatamodeld)
echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
;;
*.xcmappingmodel)
echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
;;
*.xcassets)
ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
;;
*)
echo "$RESOURCE_PATH" || true
echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
;;
esac
}
if [[ "$CONFIGURATION" == "Debug" ]]; then
install_resource "${PODS_ROOT}/AMap3DMap/MAMapKit.framework/AMap.bundle"
install_resource "${PODS_ROOT}/LBXScan/LBXScan/UI/CodeScan.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHBaseClass/MHBaseClass.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHBaseClass/MHBaseClassAssets.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHHudManager/MHHudManager.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHUIKit/MHUIKit.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHUIKit/MHScoreUnit.bundle"
install_resource "${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle"
install_resource "${PODS_ROOT}/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle"
fi
if [[ "$CONFIGURATION" == "Release" ]]; then
install_resource "${PODS_ROOT}/AMap3DMap/MAMapKit.framework/AMap.bundle"
install_resource "${PODS_ROOT}/LBXScan/LBXScan/UI/CodeScan.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHBaseClass/MHBaseClass.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHBaseClass/MHBaseClassAssets.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHHudManager/MHHudManager.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHUIKit/MHUIKit.bundle"
install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MHUIKit/MHScoreUnit.bundle"
install_resource "${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle"
install_resource "${PODS_ROOT}/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle"
fi
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
fi
rm -f "$RESOURCES_TO_COPY"
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
then
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
while read line; do
if [[ $line != "${PODS_ROOT}*" ]]; then
XCASSET_FILES+=("$line")
fi
done <<<"$OTHER_XCASSETS"
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
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}"
else
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}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
fi
fi
build
中的log
如下:
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/AMap3DMap/MAMapKit.framework/AMap.bundle
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/LBXScan/LBXScan/UI/CodeScan.bundle
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHBaseClass/MHBaseClass.bundle
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHBaseClass/MHBaseClassAssets.bundle
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHHudManager/MHHudManager.bundle
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHUIKit/MHUIKit.bundle
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MHUIKit/MHScoreUnit.bundle
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle
/Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.bundle
building file list ... done
AMap.bundle/
AMap.bundle/GNaviConfig.xml
AMap.bundle/res.zip
AMap.bundle/AMap3D.bundle/
AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data
AMap.bundle/AMap3D.bundle/3d_sky_day.data
AMap.bundle/AMap3D.bundle/3d_sky_night.data
AMap.bundle/AMap3D.bundle/3dlandscape.xml
AMap.bundle/AMap3D.bundle/3dportrait.xml
AMap.bundle/AMap3D.bundle/bktile.data
AMap.bundle/AMap3D.bundle/bktile_n.data
AMap.bundle/AMap3D.bundle/building.data
AMap.bundle/AMap3D.bundle/config_1_14_1510107091.data
AMap.bundle/AMap3D.bundle/config_2_14_1510107001.data
AMap.bundle/AMap3D.bundle/crossing_day_bk.data
AMap.bundle/AMap3D.bundle/crossing_nigth_bk.data
AMap.bundle/AMap3D.bundle/dash.data
AMap.bundle/AMap3D.bundle/dash_cd.data
AMap.bundle/AMap3D.bundle/dash_tq.data
AMap.bundle/AMap3D.bundle/gconfig_1_14_1484563173.data
AMap.bundle/AMap3D.bundle/icons_10_14_1510107265.data
AMap.bundle/AMap3D.bundle/icons_11_14_1510107270.data
AMap.bundle/AMap3D.bundle/icons_1_14_1517312363.data
AMap.bundle/AMap3D.bundle/icons_23_14_1514285400.data
AMap.bundle/AMap3D.bundle/icons_24_14_1510107285.data
AMap.bundle/AMap3D.bundle/icons_25_14_1510054937.data
AMap.bundle/AMap3D.bundle/icons_26_14_1510107290.data
AMap.bundle/AMap3D.bundle/icons_27_14_1517312468.data
AMap.bundle/AMap3D.bundle/icons_2_14_1517312372.data
AMap.bundle/AMap3D.bundle/icons_32_14_1517312481.data
AMap.bundle/AMap3D.bundle/icons_33_14_1510107307.data
AMap.bundle/AMap3D.bundle/icons_35_14_1521026482.data
AMap.bundle/AMap3D.bundle/icons_3_14_1517312381.data
AMap.bundle/AMap3D.bundle/icons_4_14_1510107228.data
AMap.bundle/AMap3D.bundle/icons_50_14_1501055190.data
AMap.bundle/AMap3D.bundle/icons_5_14_1517312288.data
AMap.bundle/AMap3D.bundle/icons_6_14_1510107235.data
AMap.bundle/AMap3D.bundle/icons_7_14_1510107241.data
AMap.bundle/AMap3D.bundle/icons_8_14_1517312432.data
AMap.bundle/AMap3D.bundle/icons_9_14_1517312442.data
AMap.bundle/AMap3D.bundle/lineround.data
AMap.bundle/AMap3D.bundle/roadarrow.data
AMap.bundle/AMap3D.bundle/search_scenic_icon.data
AMap.bundle/AMap3D.bundle/style_0_14_1520856789.data
AMap.bundle/AMap3D.bundle/style_100_14_1521026633.data
AMap.bundle/AMap3D.bundle/style_10_14_1510107620.data
AMap.bundle/AMap3D.bundle/style_13_14_1517302048.data
AMap.bundle/AMap3D.bundle/style_14_14_1517302061.data
AMap.bundle/AMap3D.bundle/style_15_14_1520821838.data
AMap.bundle/AMap3D.bundle/style_16_14_1515641762.data
AMap.bundle/AMap3D.bundle/style_17_14_1510122186.data
AMap.bundle/AMap3D.bundle/style_18_14_1517302071.data
AMap.bundle/AMap3D.bundle/style_19_14_1515641010.data
AMap.bundle/AMap3D.bundle/style_1_14_1520908388.data
AMap.bundle/AMap3D.bundle/style_20_14_1517301960.data
AMap.bundle/AMap3D.bundle/style_21_14_1517301977.data
AMap.bundle/AMap3D.bundle/style_22_14_1510123381.data
AMap.bundle/AMap3D.bundle/style_23_14_1510123404.data
AMap.bundle/AMap3D.bundle/style_30_14_1520821733.data
AMap.bundle/AMap3D.bundle/style_31_14_1520821753.data
AMap.bundle/AMap3D.bundle/style_32_14_1520821814.data
AMap.bundle/AMap3D.bundle/style_33_14_1520821825.data
AMap.bundle/AMap3D.bundle/style_3_14_1517301966.data
AMap.bundle/AMap3D.bundle/style_4_14_1520827092.data
AMap.bundle/AMap3D.bundle/style_50_14_1501671321.data
AMap.bundle/AMap3D.bundle/style_5_14_1517301920.data
AMap.bundle/AMap3D.bundle/style_6_14_1517302037.data
AMap.bundle/AMap3D.bundle/style_8_14_1520821790.data
AMap.bundle/AMap3D.bundle/styleiconslist.data
AMap.bundle/AMap3D.bundle/tbl.data
AMap.bundle/AMap3D.bundle/tbl_l.data
AMap.bundle/AMap3D.bundle/tbl_n.data
AMap.bundle/AMap3D.bundle/tgl.data
AMap.bundle/AMap3D.bundle/tgl_l.data
AMap.bundle/AMap3D.bundle/tgl_n.data
AMap.bundle/AMap3D.bundle/tmc_allinone.data
AMap.bundle/AMap3D.bundle/tmc_blind_allinone.data
AMap.bundle/AMap3D.bundle/tmc_blind_amble.data
AMap.bundle/AMap3D.bundle/tmc_blind_congestion.data
AMap.bundle/AMap3D.bundle/tmc_blind_null.data
AMap.bundle/AMap3D.bundle/tmc_blind_severe_congestion.data
AMap.bundle/AMap3D.bundle/tmc_blind_smoothly.data
AMap.bundle/AMap3D.bundle/tmc_l_allinone.data
AMap.bundle/AMap3D.bundle/tmc_n_allinone.data
AMap.bundle/AMap3D.bundle/tnl.data
AMap.bundle/AMap3D.bundle/tnl_l.data
AMap.bundle/AMap3D.bundle/tnl_n.data
AMap.bundle/AMap3D.bundle/trl.data
AMap.bundle/AMap3D.bundle/trl_l.data
AMap.bundle/AMap3D.bundle/trl_n.data
AMap.bundle/AMap3D.bundle/tyl.data
AMap.bundle/AMap3D.bundle/tyl_l.data
AMap.bundle/AMap3D.bundle/tyl_n.data
AMap.bundle/AMap3D.bundle/waterline.data
AMap.bundle/AMap3D.bundle/VM3DRes/
AMap.bundle/AMap3D.bundle/VM3DRes/1015.png
AMap.bundle/AMap3D.bundle/VM3DRes/1016.png
AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png
AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png
AMap.bundle/AMap3D.bundle/VM3DRes/cross_white_edge.png
AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png
AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_secondary_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/grass_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/grass_night.png
AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/road_bottom_night.png
AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_day.png
AMap.bundle/AMap3D.bundle/VM3DRes/roadbk_main_night.png
AMap.bundle/AMap3D.bundle/weather/
AMap.bundle/AMap3D.bundle/weather/fog.png
AMap.bundle/AMap3D.bundle/weather/haze.png
AMap.bundle/AMap3D.bundle/weather/rain.png
AMap.bundle/AMap3D.bundle/weather/rainmask.png
AMap.bundle/AMap3D.bundle/weather/snow.png
AMap.bundle/AMap3D.bundle/weather/snow_far.png
AMap.bundle/AMap3D.bundle/weather/snowmask.png
AMap.bundle/images/
AMap.bundle/images/arrow_line_inner.png
AMap.bundle/images/arrow_line_outer.png
AMap.bundle/images/calloutArrowMask.png
AMap.bundle/images/calloutArrowMask@2x.png
AMap.bundle/images/greenPin.png
AMap.bundle/images/greenPin@2x.png
AMap.bundle/images/greenPin@3x.png
AMap.bundle/images/greenPin_lift.png
AMap.bundle/images/greenPin_lift@2x.png
AMap.bundle/images/greenPin_lift@3x.png
AMap.bundle/images/lineDashTexture.png
AMap.bundle/images/lineDashTextureDot.png
AMap.bundle/images/lineDashTextureThin.png
AMap.bundle/images/lineTexture.png
AMap.bundle/images/lineTextureThin.png
AMap.bundle/images/marker_blue.png
AMap.bundle/images/marker_blue@2x.png
AMap.bundle/images/offline_clear@2x.png
AMap.bundle/images/offline_down@2x.png
AMap.bundle/images/offline_shouqi@2x.png
AMap.bundle/images/offline_shouqi_2@2x.png
AMap.bundle/images/offline_sousuo@2x.png
AMap.bundle/images/offline_zhankai@2x.png
AMap.bundle/images/offline_zhankai_2@2x.png
AMap.bundle/images/pin_shadow.png
AMap.bundle/images/pin_shadow@2x.png
AMap.bundle/images/pin_shadow@3x.png
AMap.bundle/images/purplePin.png
AMap.bundle/images/purplePin@2x.png
AMap.bundle/images/purplePin@3x.png
AMap.bundle/images/purplePin_lift.png
AMap.bundle/images/purplePin_lift@2x.png
AMap.bundle/images/purplePin_lift@3x.png
AMap.bundle/images/redPin.png
AMap.bundle/images/redPin@2x.png
AMap.bundle/images/redPin@3x.png
AMap.bundle/images/redPin_lift.png
AMap.bundle/images/redPin_lift@2x.png
AMap.bundle/images/redPin_lift@3x.png
AMap.bundle/images/select_.png
AMap.bundle/images/select_@2x.png
AMap.bundle/images/select_@3x.png
AMap.bundle/images/traffic_texture_blue.png
AMap.bundle/images/traffic_texture_darkred.png
AMap.bundle/images/traffic_texture_gray.png
AMap.bundle/images/traffic_texture_green.png
AMap.bundle/images/traffic_texture_red.png
AMap.bundle/images/traffic_texture_yellow.png
AMap.bundle/offline/
AMap.bundle/offline/offlinePackage.plist
CodeScan.bundle/
CodeScan.bundle/device_scan@2x.png
CodeScan.bundle/qrcode_Scan_weixin_Line@2x.png
CodeScan.bundle/qrcode_scan_btn_flash_down@2x.png
CodeScan.bundle/qrcode_scan_btn_flash_nor@2x.png
CodeScan.bundle/qrcode_scan_btn_myqrcode_down@2x.png
CodeScan.bundle/qrcode_scan_btn_myqrcode_nor@2x.png
CodeScan.bundle/qrcode_scan_btn_photo_down@2x.png
CodeScan.bundle/qrcode_scan_btn_photo_nor@2x.png
CodeScan.bundle/qrcode_scan_btn_scan_off@2x.png
CodeScan.bundle/qrcode_scan_full_net.png
CodeScan.bundle/qrcode_scan_light_green@2x.png
CodeScan.bundle/qrcode_scan_part_net.png
CodeScan.bundle/qrcode_scan_titlebar_back_nor@2x.png
CodeScan.bundle/qrcode_scan_titlebar_back_pressed@2x.png
MHBaseClass.bundle/
MHBaseClass.bundle/Info.plist
MHBaseClass.bundle/empty_data@2x.png
MHBaseClass.bundle/empty_data@3x.png
MHBaseClass.bundle/navigation_back@1x.png
MHBaseClass.bundle/navigation_back@2x.png
MHBaseClass.bundle/navigation_back@3x.png
MHBaseClass.bundle/navigation_close@1x.png
MHBaseClass.bundle/navigation_close@2x.png
MHBaseClass.bundle/navigation_close@3x.png
MHBaseClass.bundle/network_error@2x.png
MHBaseClass.bundle/network_error@3x.png
MHBaseClass.bundle/page_error@2x.png
MHBaseClass.bundle/page_error@3x.png
MHBaseClass.bundle/tabbar_campus_normal@1x.png
MHBaseClass.bundle/tabbar_campus_normal@2x.png
MHBaseClass.bundle/tabbar_campus_normal@3x.png
MHBaseClass.bundle/tabbar_campus_selected@1x.png
MHBaseClass.bundle/tabbar_campus_selected@2x.png
MHBaseClass.bundle/tabbar_campus_selected@3x.png
MHBaseClass.bundle/tabbar_me_normal@1x.png
MHBaseClass.bundle/tabbar_me_normal@2x.png
MHBaseClass.bundle/tabbar_me_normal@3x.png
MHBaseClass.bundle/tabbar_me_selected@1x.png
MHBaseClass.bundle/tabbar_me_selected@2x.png
MHBaseClass.bundle/tabbar_me_selected@3x.png
MHBaseClass.bundle/tabbar_rearing_normal@1x.png
MHBaseClass.bundle/tabbar_rearing_normal@2x.png
MHBaseClass.bundle/tabbar_rearing_normal@3x.png
MHBaseClass.bundle/tabbar_rearing_selected@1x.png
MHBaseClass.bundle/tabbar_rearing_selected@2x.png
MHBaseClass.bundle/tabbar_rearing_selected@3x.png
MHBaseClass.bundle/_CodeSignature/
MHBaseClass.bundle/_CodeSignature/CodeDirectory
MHBaseClass.bundle/_CodeSignature/CodeRequirements
MHBaseClass.bundle/_CodeSignature/CodeRequirements-1
MHBaseClass.bundle/_CodeSignature/CodeResources
MHBaseClass.bundle/_CodeSignature/CodeSignature
MHBaseClassAssets.bundle/
MHBaseClassAssets.bundle/Assets.car
MHBaseClassAssets.bundle/Info.plist
MHBaseClassAssets.bundle/_CodeSignature/
MHBaseClassAssets.bundle/_CodeSignature/CodeDirectory
MHBaseClassAssets.bundle/_CodeSignature/CodeRequirements
MHBaseClassAssets.bundle/_CodeSignature/CodeRequirements-1
MHBaseClassAssets.bundle/_CodeSignature/CodeResources
MHBaseClassAssets.bundle/_CodeSignature/CodeSignature
MHHudManager.bundle/
MHHudManager.bundle/Info.plist
MHHudManager.bundle/authorization@2x.png
MHHudManager.bundle/authorization@3x.png
MHHudManager.bundle/exchange_failure@2x.png
MHHudManager.bundle/exchange_failure@3x.png
MHHudManager.bundle/exchange_success@2x.png
MHHudManager.bundle/exchange_success@3x.png
MHHudManager.bundle/loading1.png
MHHudManager.bundle/loading10.png
MHHudManager.bundle/loading11.png
MHHudManager.bundle/loading12.png
MHHudManager.bundle/loading13.png
MHHudManager.bundle/loading14.png
MHHudManager.bundle/loading15.png
MHHudManager.bundle/loading16.png
MHHudManager.bundle/loading17.png
MHHudManager.bundle/loading18.png
MHHudManager.bundle/loading19.png
MHHudManager.bundle/loading2.png
MHHudManager.bundle/loading20.png
MHHudManager.bundle/loading21.png
MHHudManager.bundle/loading22.png
MHHudManager.bundle/loading23.png
MHHudManager.bundle/loading24.png
MHHudManager.bundle/loading25.png
MHHudManager.bundle/loading26.png
MHHudManager.bundle/loading27.png
MHHudManager.bundle/loading28.png
MHHudManager.bundle/loading29.png
MHHudManager.bundle/loading3.png
MHHudManager.bundle/loading30.png
MHHudManager.bundle/loading31.png
MHHudManager.bundle/loading32.png
MHHudManager.bundle/loading33.png
MHHudManager.bundle/loading34.png
MHHudManager.bundle/loading35.png
MHHudManager.bundle/loading36.png
MHHudManager.bundle/loading4.png
MHHudManager.bundle/loading5.png
MHHudManager.bundle/loading6.png
MHHudManager.bundle/loading7.png
MHHudManager.bundle/loading8.png
MHHudManager.bundle/loading9.png
MHHudManager.bundle/modal_close@2x.png
MHHudManager.bundle/modal_close@3x.png
MHHudManager.bundle/_CodeSignature/
MHHudManager.bundle/_CodeSignature/CodeDirectory
MHHudManager.bundle/_CodeSignature/CodeRequirements
MHHudManager.bundle/_CodeSignature/CodeRequirements-1
MHHudManager.bundle/_CodeSignature/CodeResources
MHHudManager.bundle/_CodeSignature/CodeSignature
MHScoreUnit.bundle/
MHScoreUnit.bundle/Assets.car
MHScoreUnit.bundle/Info.plist
MHScoreUnit.bundle/_CodeSignature/
MHScoreUnit.bundle/_CodeSignature/CodeDirectory
MHScoreUnit.bundle/_CodeSignature/CodeRequirements
MHScoreUnit.bundle/_CodeSignature/CodeRequirements-1
MHScoreUnit.bundle/_CodeSignature/CodeResources
MHScoreUnit.bundle/_CodeSignature/CodeSignature
MHUIKit.bundle/
MHUIKit.bundle/Info.plist
MHUIKit.bundle/arrow_down@1x.png
MHUIKit.bundle/arrow_down@2x.png
MHUIKit.bundle/arrow_down@3x.png
MHUIKit.bundle/child_selected@1x.png
MHUIKit.bundle/child_selected@2x.png
MHUIKit.bundle/child_selected@3x.png
MHUIKit.bundle/navigation_back_2@2x.png
MHUIKit.bundle/navigation_back_2@3x.png
MHUIKit.bundle/placeholder_icon_female@2x.png
MHUIKit.bundle/placeholder_icon_female@3x.png
MHUIKit.bundle/placeholder_icon_male@2x.png
MHUIKit.bundle/placeholder_icon_male@3x.png
MHUIKit.bundle/placeholder_icon_no_sex@2x.png
MHUIKit.bundle/placeholder_icon_no_sex@3x.png
MHUIKit.bundle/score_gain@2x.png
MHUIKit.bundle/score_gain@3x.png
MHUIKit.bundle/_CodeSignature/
MHUIKit.bundle/_CodeSignature/CodeDirectory
MHUIKit.bundle/_CodeSignature/CodeRequirements
MHUIKit.bundle/_CodeSignature/CodeRequirements-1
MHUIKit.bundle/_CodeSignature/CodeResources
MHUIKit.bundle/_CodeSignature/CodeSignature
SVProgressHUD.bundle/
SVProgressHUD.bundle/angle-mask.png
SVProgressHUD.bundle/angle-mask@2x.png
SVProgressHUD.bundle/angle-mask@3x.png
SVProgressHUD.bundle/error.png
SVProgressHUD.bundle/error@2x.png
SVProgressHUD.bundle/error@3x.png
SVProgressHUD.bundle/info.png
SVProgressHUD.bundle/info@2x.png
SVProgressHUD.bundle/info@3x.png
SVProgressHUD.bundle/success.png
SVProgressHUD.bundle/success@2x.png
SVProgressHUD.bundle/success@3x.png
TZImagePickerController.bundle/
TZImagePickerController.bundle/MMVideoPreviewPlay@2x.png
TZImagePickerController.bundle/MMVideoPreviewPlayHL@2x.png
TZImagePickerController.bundle/Root.plist
TZImagePickerController.bundle/VideoSendIcon@2x.png
TZImagePickerController.bundle/navi_back@2x.png
TZImagePickerController.bundle/photo_def_photoPickerVc@2x.png
TZImagePickerController.bundle/photo_def_previewVc@2x.png
TZImagePickerController.bundle/photo_number_icon@2x.png
TZImagePickerController.bundle/photo_original_def@2x.png
TZImagePickerController.bundle/photo_original_sel@2x.png
TZImagePickerController.bundle/photo_sel_photoPickerVc@2x.png
TZImagePickerController.bundle/photo_sel_previewVc@2x.png
TZImagePickerController.bundle/preview_number_icon@2x.png
TZImagePickerController.bundle/preview_original_def@2x.png
TZImagePickerController.bundle/takePicture80@2x.png
TZImagePickerController.bundle/takePicture@2x.png
TZImagePickerController.bundle/en.lproj/
TZImagePickerController.bundle/en.lproj/Localizable.strings
TZImagePickerController.bundle/vi.lproj/
TZImagePickerController.bundle/vi.lproj/Localizable.strings
TZImagePickerController.bundle/zh-Hans.lproj/
TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings
TZImagePickerController.bundle/zh-Hant.lproj/
TZImagePickerController.bundle/zh-Hant.lproj/Localizable.strings
sent 5283871 bytes received 7484 bytes 10582710.00 bytes/sec
total size is 5259048 speedup is 0.99
八、CodeSign 签名
命令工具是
/usr/bin/codesign
就是前面步骤中生成的Entitlements
变成的.xcent
文件,经过处理放置到.app
文件夹下面
// 签名
CodeSign /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
Signing Identity: "-"
/usr/bin/codesign
--force
--sign
- --entitlements /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Intermediates.noindex/MyAppName.build/Debug-iphonesimulator/MyAppName.build/MyAppName.app.xcent
--timestamp=none
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app
Touch /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app (in target: MyAppName)
cd /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName
/usr/bin/touch -c /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app