mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-25 04:17:17 +00:00
docs: image url
This commit is contained in:
@@ -97,10 +97,10 @@ QA:存在一个情况,点击一个网页,下载 iOS App 到本地,点击
|
||||
|
||||
|
||||
Xcode 中,对于项目是可以看到配置文件的。我们可以鼠标按住,拖动到桌面文件夹下。
|
||||
<img src="./../assets/XcodeProvisionProfile.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/XcodeProvisionProfile.png" style="zoom:30%" />
|
||||
此外,`mobileprovision` 文件是不可读的。可以通过 **security cms -D -i 195103db-6d6f-4da1-bd0e-66d5db88176f.mobileprovision -o profil
|
||||
e.plist** 指令,dump 成为一个 plist 格式的文件。如下图所示:
|
||||
<img src="./../assets/DumpProvisionProfile.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/DumpProvisionProfile.png" style="zoom:30%" />
|
||||
|
||||
指令解读:
|
||||
- security:是 macOS 自带的安全相关的命令行工具,用于处理证书、配置文件、密钥等的处理
|
||||
@@ -158,7 +158,7 @@ e.plist** 指令,dump 成为一个 plist 格式的文件。如下图所示:
|
||||
|
||||
1个 iOS App 工程,使用动态库的方式,依赖了 AFNetworking。选择模拟器进行编译,查看日志:
|
||||
|
||||
<img src="./../assets/CodeSignAppWithDynamicLibLog.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CodeSignAppWithDynamicLibLog.png" style="zoom:30%" />
|
||||
|
||||
日志分析:
|
||||
1. 日志中的 `--sign` 后一般接的是证书的名称,但是当前日志中是 `-`,代表使用自动签名模式(Automatic Signing)。
|
||||
@@ -170,30 +170,30 @@ e.plist** 指令,dump 成为一个 plist 格式的文件。如下图所示:
|
||||
2. 日志中的 `--entitlements /Users/unix_kernel/Library/Developer/Xcode/DerivedData/InstallDyanmicAndStaticFramework-bmcbqvmynpdalkdhzqirbithtfwp/Build/Intermediates.noindex/InstallDyanmicAndStaticFramework.build/Debug-iphonesimulator/InstallDyanmicAndStaticFramework.build/InstallDyanmicAndStaticFramework.app.xcent` 代表 Xcode 开启的 App 能力信息。`--entitlements` 参数后面跟随的是一个 `.xcent` 文件的路径,这个文件包含了应用程序的权限(Entitlements)配置信息,也就是 “App 能力信息”
|
||||
|
||||
对其查看,内容如下:
|
||||
<img src="./../assets/CodeSignEntitlements.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CodeSignEntitlements.png" style="zoom:30%" />
|
||||
|
||||
`security find-identity -v -p codesigning` 指令用于 macOS 系统中用于查看可用代码签名证书的命令,主要用于开发者在进行代码签名操作前确认可用的证书信息
|
||||
|
||||
##### 2. Demo2
|
||||
|
||||
1个 iOS App 工程,使用动态库的方式,依赖了 AFNetworking。选择真机进行编译,查看日志:
|
||||
<img src="./../assets/CocdSignIphoneLog.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CocdSignIphoneLog.png" style="zoom:30%" />
|
||||
日志分析:
|
||||
1. 日志中的 `Signing Identity: "Apple Development: FantasticLBP@github.com (953PZFXZFR)"` 变成了开发者证书。多了一个配置文件。
|
||||
2. 使用的动态库 AFNetworking 是如何签名的?
|
||||
选择 Pods 的 Product 里面的 AFNetworking 动态库,右击 “show in finder”。看到并没有一个 **`_CodeSignature`** 的文件夹,也就是没有签名信息。然后用指令 ` objdump --macho --private-headers /Users/unix_kernel/Library/Developer/Xcode/DerivedData/InstallDyanmicAndStaticFramework-bmcbqvmynpdalkdhzqirbithtfwp/Build/Products/Debug-iphoneos/AFNetworking/AFNetworking.framework/AFNetworking` 进行查看,发现也不存在 **`LC_CODE_SIGNATURE`** 存储签名信息的 load command。
|
||||
<img src="./../assets/AppLinkDynamicLibNotSign.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AppLinkDynamicLibNotSign.png" style="zoom:30%" />
|
||||
|
||||
可能会问,如何确定是动态库?使用 `file AFNetworking` 指令即可验证
|
||||
<img src="./../assets/AFNetworkingIsDynamicLib.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/AFNetworkingIsDynamicLib.png" style="zoom:30%" />
|
||||
|
||||
问题:动态库 AFNetworking 没有经过签名,为什么拷贝到 App 里面后,可以上架?
|
||||
其实 Cocoapods 自动生成了脚本,在主工程的 `Build Phases -> Embed Pods Frameworks` 下。且 `Input File Lists` 配置的文件内容,就是所依赖库的文件路径。会被当作参数传递给 `Embed Pods Frameworks` 脚本。
|
||||
|
||||
<img src="./../assets/CodeSignByCocoapodsScripts.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CodeSignByCocoapodsScripts.png" style="zoom:30%" />
|
||||
观察编译日志,会发现 「Run custom shell script '[CP] Embed Pods Frameworks'」这里,先对 Frameworks 目录进行了创建和拷贝。然后对 AFNetworking 进行签名。
|
||||
在主工程的 Products 目录下,选择 App,show in finder,然后显示包内容。查看 `Frameworks` 文件夹下的 `AFNetworking.framework` 已经存在了 `_CodeSignature` 文件夹,也就是已经签名完成。继续查看 Load Command,发现也存在了 **LC_CODE_SIGNATURE** Load Command。
|
||||
<img src="./../assets/CocoapodsScriptCodeSignDetails.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/CocoapodsScriptCodeSignDetails.png" style="zoom:30%" />
|
||||
|
||||
同时,也可以看到是先对动态库签名,再对 App 签名。
|
||||
|
||||
@@ -204,13 +204,13 @@ e.plist** 指令,dump 成为一个 plist 格式的文件。如下图所示:
|
||||
安装方式为:`brew install --no-quarantine excitedplus1s/repo/jtool2`
|
||||
使用方式为:**`jtool2 --sig -vv ${MachOFile}`**
|
||||
|
||||
<img src="./../assets/jtool2WatchSignature.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/jtool2WatchSignature.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
### 5. fastlane 相关概念
|
||||
|
||||
<img src="./../assets/FastlaneStructure.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/FastlaneStructure.png" style="zoom:30%" />
|
||||
- fastlane 本质就是一套命令行工具,专为用来简化并实现我们与 Apple 交互时的自动化
|
||||
- fastlane 的每一个单独工具都是为了解决常见的 App Store 或其他问题而设计的
|
||||
- fastlane 通过脚本方式集合了一系列常见的行为,叫做 lane。也就意味着可以通过 lane 来对自己的 App 做一些量身定制的需求
|
||||
@@ -276,7 +276,7 @@ e.plist** 指令,dump 成为一个 plist 格式的文件。如下图所示:
|
||||
end
|
||||
```
|
||||
- 第三种:使用特定的 Fastlane 文件。比如使用脚本 `Fastlane scan init` 会生成关于 scan 相关逻辑的脚本文件 `Scanfile`
|
||||
<img src="./../assets/FastlaneScriptCodeGen.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/FastlaneScriptCodeGen.png" style="zoom:30%" />
|
||||
|
||||
建议使用方式二、三,不建议使用方式一。关于 fastlane 脚本编写文档查看 [fastlane docs](http://docs.fastlane.tools)
|
||||
|
||||
@@ -405,7 +405,7 @@ end
|
||||
|
||||
终端使用 `fastlane match init` 指令创建 Matchfile,同时根据提示选择一些模版和输入信息。
|
||||
|
||||
<img src="./../assets/FastlaneMatchfile.png" style="zoom:30%" />
|
||||
<img src="https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/FastlaneMatchfile.png" style="zoom:30%" />
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user