日常总结-用好Xcode

386 阅读2分钟

日常总结-用好Xcode

设置环境变量或者启动参数

方式1

option + 点击 运行按钮 或者 运行目标target。可以快速打开Scheme设置窗口

环境变量可以设置系统支持的比如DYLD_PRINT_STATISTICS

也可以根据需要设置 具体用法可以用objc的方式

smile

然后在代码里获取当前环境变量,进行对应操作。获取方式也有两种

[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 FinderOpen SourceTreeOpen 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