Xcode编译App(三): 编译整个项目的最终Target

6 篇文章 1 订阅

编译最终的 Target

Build target MyAppName of project MyAppName with configuration Debug

注意:
编译的顺序总体上是遵守着 Build Phases中的顺序的

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 Id
  • aps-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.txtpod 检查 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

看下XcodeBuild 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 文件中

Pod脚本1

四、CompileC (编译源文件)

.m 文件经过编译成为 .o 文件

看下XcodeBuild 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下的可执行文件中)

看下XcodeBuild 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会被放到主项目,主项目依赖这个静态库

Pod项目

主项目依赖Pods项目生成的静态库

六、拷贝/处理资源文件

把相关的资源文件处理之后放到.app文件夹下面

看下XcodeBuild Phases内容如下:

CompileStoryboard 编译 .storyboard.storyboardc 文件

  • 使用的工具: /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool

注:这一步CompileStoryboard只是把 .storyboard 编译为 .storyboardc 文件,还需要经过下面的 LinkStoryboards 操作才会把 .storyboardc 移动到 .app 文件夹下面

MHChildRearingHome.storyboard 文件生成 MHChildRearingHome.storyboardc 文件

Storyboard文件编译

// 编译 .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图片

// 拷贝 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 文件,同时会对 AppIconLaunchImage 进行处理,同时会对文件名称重新格式化命名

// 编译 .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内容如下:

是必须的AppIconLaunchImage信息

<?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 文件内容主要是AppIconLaunchImage的文件名称


处理结果:

/* 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

.appInfo.plist 中的 AppIcon

AppIcon


.appInfo.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>

UILaunchImages

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没有keycom.apple.compilers.llvm.clang.1_0编译器
DTPlatformVersion没有key12.1编译的目标平台版本
DTPlatformBuild没有key16B91
DTPlatformName没有keyiphoneos
DTSDKName没有keyiphoneos12.1编译的sdk名称
DTSDKBuild没有key16B91编译的sdk的build版本号
DTXcodeBuild没有key10B61
DTXcode没有key1010Xcode的版本号
DTAppStoreToolsBuild没有key10B61
BuildMachineOSBuild没有key18A391
CFBundleSupportedPlatforms没有key数组类型: iPhoneOS支持的平台
MinimumOSVersion没有key7.0支持的最大系统版本
UIDeviceFamily没有key数组: 1、21表示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 文件夹下面

看下XcodeBuild 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

pod处理资源图片脚本

具体如下:

#!/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值