日常总结-用好Xcode
设置环境变量或者启动参数
方式1
option + 点击 运行按钮 或者 运行目标target。可以快速打开Scheme设置窗口
环境变量可以设置系统支持的比如DYLD_PRINT_STATISTICS
也可以根据需要设置 具体用法可以用objc的方式
然后在代码里获取当前环境变量,进行对应操作。获取方式也有两种
[NSProcessInfo processInfo].environment
也可以使用C语言的方式
if (getenv("RAC_DEBUG_SIGNAL_NAMES") != NULL) {
方式2 - UITest
- (void)testExample {
// UI tests must launch the application that they test.
XCUIApplication *app = [[XCUIApplication alloc] init];
app.launchEnvironment = ...
app.launchArguments = ...
[app launch];
}
应用场景:
1、可以实现某些功能只在Run模式下启用或者关闭某些功能 比如 在开发阶段关闭防崩溃功能、网络库的日志等级等等
2、可以识别是不是UITest环境。关闭图像验证码等等。
通过Behaviors设计更好的工作流程
官方文档在 developer.apple.com/library/arc…
除了系统已有的一些动作。还可以添加Script。来自定义动作
应用场景
1、Run Starts里脚本可以获取env。env里包含了当前工程路径
XcodeDeveloperDirectory=/Applications/Xcode.app/Contents/Developer
XcodeWorkspace=Demo.xcworkspace
PWD=/Users/example/XcodeBehaviorScripts
XcodeWorkspacePath=/Users/example/Developer/Demo.xcworkspace
通过XcodeWorkspacePath这个路径可以与其他开发流程进行交互
2、设置在调试断点时自动打开一个新标签窗口。隐藏右边Uinitiy边栏。打开Debug Console窗口等
3、自定义Behaviors 并设置快捷键。比如Open In Finder、Open SourceTree、Open in Terminal等。
静态分析Analyze,结果输出到html,再配合持续集成系统
mgrebenets.github.io/mobile%20ci…
通过如下两个来设置静态分析的输出格式和目录,然后再配合脚本把结果放到WebServer上,可以更好监控项目质量。
CLANG_ANALYZER_OUTPUT
CLANG_ANALYZER_OUTPUT_DIR
设置代码片段Snippets,git仓库一键导入历史片段
代码片段提供了一些经常用到的代码,可以包含一些填空。类似模版。系统提供了一些。我们也可以自己添加。再配合git仓库和配置脚本,可以自动配置。
代码片段建议增加统一前缀。比如lv_这样的,团队可以通过脚本统一配置
快捷键Command + 1~9,尤其是9(Reports),详细的编译日志在这里
可以很好了解编译过程、copy图片、签名过程、警告类型等等细节全在日志里,清清楚楚。
用好Build Phases
常用的Cocoapods就用的很好,一些操作就是利用了Build Phases。可以自己设置一些脚本,放在适当的时机。
1、把编译信息写入Bundle[LV] Write Compile Time
complieTime=`date "+%Y-%m-%d %H:%M:%S"`
echo "$complieTime" > ${CODESIGNING_FOLDER_PATH}/compileTime.txt
echo "${CONFIGURATION}" > ${CODESIGNING_FOLDER_PATH}/CONFIGURATION.txt
2、把图片信息解析并写入Bundle[LV] Unzip Car Script,配合图片尺寸、命名规范、缺失2倍或3倍图、扩展名和实际格式是否相符的检测,保障图片质量。
if [ $CONFIGURATION = 'Debug' ]; then
OTHER_XCASSETS=$(find "$CODESIGNING_FOLDER_PATH" -iname "*.car" -type f)
while read line; do
echo $line
xcrun --sdk iphoneos assetutil -I "${line}" --output "${line}Info";
done <<<"$OTHER_XCASSETS"
fi