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

文章目录

  • 编译最终的 Target
    • 一、准备工作
      • 创建 `.app` 文件夹
      • 处理 Entitlements
    • 二、WriteAuxiliaryFile (写入辅助文件)
    • 三、脚本文件 Check Pods Manifest.lock
    • 四、CompileC (编译源文件)
    • 五、Ld 库(静态库`.a`、动态库`framework`)处理(链接到.app下的可执行文件中)
    • 六、拷贝/处理资源文件
      • CompileStoryboard 编译 `.storyboard` 为 `.storyboardc` 文件
      • CpResource (其他的资源文件)
      • CopyPlistFile 处理自定义的 plist 文件
      • CopyPNGFile 拷贝png图片文件
      • CompileAssetCatalog (编译 .xcassets 文件 为 Assets.car)
      • ProcessInfoPlistFile (处理 `info.plsit` 信息)
      • LinkStoryboards 链接前面生成的 storyboradc
    • 七、脚本文件 Copy Pods Resources
    • 八、CodeSign 签名

编译最终的 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 Id
  • aps-environment: 推送 aps




	application-identifier
	1111111
	aps-environment
	development



Entitlements.plist 内容如下:





	com.apple.security.get-task-allow
	



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 文件中

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

六、拷贝/处理资源文件

把相关的资源文件处理之后放到.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 文件为 .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/首页选中[email protected] /Users/ocean/Desktop/code/iOS/Company/Myway/MyAppName/MyAppName/MyAppName/MyImages/tabbarImg/首页选中[email protected] (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/首页选中[email protected] 
    /Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/首页选中[email protected]

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信息





	CFBundleIcons
	
		CFBundlePrimaryIcon
		
			CFBundleIconFiles
			
				AppIcon20x20
				AppIcon29x29
				AppIcon40x40
				AppIcon57x57
				AppIcon60x60
			
			CFBundleIconName
			AppIcon
		
	
	CFBundleIcons~ipad
	
		CFBundlePrimaryIcon
		
			CFBundleIconFiles
			
				AppIcon20x20
				AppIcon29x29
				AppIcon40x40
				AppIcon57x57
				AppIcon60x60
				AppIcon50x50
				AppIcon72x72
				AppIcon76x76
				AppIcon83.5x83.5
			
			CFBundleIconName
			AppIcon
		
	
	UILaunchImages
	
		
			UILaunchImageMinimumOSVersion
			11.0
			UILaunchImageName
			LaunchImage-1100-Portrait-2436h
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{375, 812}
		
		
			UILaunchImageMinimumOSVersion
			8.0
			UILaunchImageName
			LaunchImage-800-Portrait-736h
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{414, 736}
		
		
			UILaunchImageMinimumOSVersion
			8.0
			UILaunchImageName
			LaunchImage-800-667h
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{375, 667}
		
		
			UILaunchImageMinimumOSVersion
			7.0
			UILaunchImageName
			LaunchImage-700
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{320, 480}
		
		
			UILaunchImageMinimumOSVersion
			7.0
			UILaunchImageName
			LaunchImage-700-568h
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{320, 568}
		
		
			UILaunchImageMinimumOSVersion
			7.0
			UILaunchImageName
			LaunchImage-700-Portrait
			UILaunchImageOrientation
			Portrait
			UILaunchImageSize
			{768, 1024}
		
	



assetcatalog_dependencies 文件内容主要是AppIconLaunchImage的文件名称


处理结果:

/* com.apple.actool.compilation-results */
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/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/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/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/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/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/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/Users/ocean/Library/Developer/Xcode/DerivedData/MyAppName-eexzhxxmdkygpcfkoprwzzghvpkj/Build/Products/Debug-iphonesimulator/MyAppName.app/[email protected]
/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


.appInfo.plist 中的 UILaunchImages

   UILaunchImages
    
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-1100-Portrait-2436h
        UILaunchImageSize
        {375, 812}
        UILaunchImageMinimumOSVersion
        11.0
      
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-800-Portrait-736h
        UILaunchImageSize
        {414, 736}
        UILaunchImageMinimumOSVersion
        8.0
      
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-800-667h
        UILaunchImageSize
        {375, 667}
        UILaunchImageMinimumOSVersion
        8.0
      
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-700
        UILaunchImageSize
        {320, 480}
        UILaunchImageMinimumOSVersion
        7.0
      
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-700-568h
        UILaunchImageSize
        {320, 568}
        UILaunchImageMinimumOSVersion
        7.0
      
      
        UILaunchImageOrientation
        Portrait
        UILaunchImageName
        LaunchImage-700-Portrait
        UILaunchImageSize
        {768, 1024}
        UILaunchImageMinimumOSVersion
        7.0
      

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 文件夹下面

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

具体如下:

#!/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/[email protected]
AMap.bundle/images/greenPin.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/greenPin_lift.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
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/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/pin_shadow.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/purplePin.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/purplePin_lift.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/redPin.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/redPin_lift.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
AMap.bundle/images/select_.png
AMap.bundle/images/[email protected]
AMap.bundle/images/[email protected]
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/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
CodeScan.bundle/qrcode_scan_full_net.png
CodeScan.bundle/[email protected]
CodeScan.bundle/qrcode_scan_part_net.png
CodeScan.bundle/[email protected]
CodeScan.bundle/[email protected]
MHBaseClass.bundle/
MHBaseClass.bundle/Info.plist
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
MHBaseClass.bundle/[email protected]
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/[email protected]
MHHudManager.bundle/[email protected]
MHHudManager.bundle/[email protected]
MHHudManager.bundle/[email protected]
MHHudManager.bundle/[email protected]
MHHudManager.bundle/[email protected]
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/[email protected]
MHHudManager.bundle/[email protected]
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/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
MHUIKit.bundle/[email protected]
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/[email protected]
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/error.png
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/info.png
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/success.png
SVProgressHUD.bundle/[email protected]
SVProgressHUD.bundle/[email protected]
TZImagePickerController.bundle/
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/Root.plist
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
TZImagePickerController.bundle/[email protected]
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

你可能感兴趣的:(ios,编译)