然后输入Xcodebuild命令: xcodebuild -project 0.BaiSi-LS.xcodeproj -target 0.BaiSi-LS -configuration Debug 此命令中用到了-project名,-target名和指定一个configuration,这些都可以利用Xcodebuild -list命令看到。 如果我们项目中使用了cocoapods对文件进行管理,那么我们的项目工程中会有一个.xcworkspace文件,此时自动打包的命令有所不同 xcodebuild archive -workspace 0 ipa 如果导出成功终端会输出: ** EXPORT SUCCEEDED ** 此命令中需要知道 xcworkspace文件名,此文件名可以在项目中直接获取,而-scheme名同样可以利用Xcodebuild Xcodebuild -list输出内容 ?
幸运的是,Apple 有命令行工具来完成所有这些工作,其中一个最受欢迎的实用工具是 xcodebuild。 macOS 与钥匙串中的分发证书 我们将介绍 iOS 应用程序的循环,从分析 app 到使用 xcodebuild 部署到 iTunes Connect 。 该 xcodebuild 有清理和分析的源代码,任何常见的语法错误的能力。 clean analyze Build 构建 我们可以使用 xcodebuild'build'动作构建一个 iOS 应用程序,为我们的 iOS 应用程序生成派生数据。 有两个步骤 使用 xcodebuild 存档构建存档 使用 xcodebuild -exportArchive 创建. ipa 我们现在构建这样的存档: $ xcodebuild -workspace
最近开始用xcodebuild,Xcode的可视化操作带来的便利就是对命令行的生疏,特写一篇文章来回顾下。 命令行编译 xcodebuild是命令行构建工具,接下来尝试用xcodebuild产生上面所说的.app、.xcarchive 和 .ipa文件。 image.png 2、产生.xcarchive文件 xcodebuild的archive 动作(action)可以产生.xcarchive文件,下面是一个普通的archive指令: xcodebuild 2、编译project工程和xcworkspace工程的区别 xcodebuild编译project,可添加-project projectName参数,也可以不添加 xcodebuild编译xcworkspace ,需要添加-workspace workspaceName参数 如果对于缺省的参数,xcodebuild会优先使用xcode工程内的设置,再使用默认值。
步骤: xcodebuild指令 ---- xcode工具其实本身就包含了静态代码分析功能,打开项目后,可通过菜单Product->Analyze来对代码进行扫描。 ? 不过xcodebuild指令中也包含analyze可以方便我们调用。 xcodebuild功能非常强大,具体的用法可以通过man xcodebuild来查看。 analyze OCLint工具 ---- OCLint在本文中的作用是对xcodebuild产生的log进行分析,获取相关数据以后生成html文件或pmd文件。 | tee xcodebuild.log 将xcodebuild analyze的输出信息记录在xcodebuild.log中。 原因可见,oclint-xcodebuild不在使用了,需要安装xcpretty,使用xcpretty命令分析日志信息。因此转而采用xcpretty。
安装oclint brew install oclint 安装 xcpretty 用于对xcodebuild的输出进行格式化 $ gem install xcpretty oclint分析脚本 #! en_US.UTF-8 myworkspace=PuddingPlus.xcworkspace # 替换workspace的名字 myscheme=PuddingPlus # 替换scheme的名字 xcodebuild -workspace $myworkspace -scheme $myscheme clean&& xcodebuild -workspace $myworkspace -scheme $myscheme 编译工程 xcodebuild -workspace $myworkspace -scheme $myscheme clean&& xcodebuild -workspace $myworkspace -scheme $myscheme \ -configuration Debug 获取xcodebuild.log tee xcodebuild.log compile_commands.json xcpretty
source ~/.bash_profile (5) 验证是否安装成功:$ infer -version (6)使用infer扫描 命令行cd到项目代码所在目录:$ cd /path infer-- xcodebuild 这里主要使用oclint对xcodebuild产生的log进行分析,获取相关数据以后生成html文件。 kylinhuang/Documents/tools/oclint-0.11.1/bin (3)验证是否安装成功:$ oclint (4)命令行cd到项目代码所在目录:$ cd /path (5)进行xcodebuild clean:$ xcodebuild clean (6)xcodebuild与oclint结合,将xcodebuild analyze的输出信息记录在xcodebuild.log中,并使用xcpretty 生成json文件: $xcodebuild analyze | tee xcodebuild.log | xcpretty --reportjson-compilation-database (7)xcpretty
xcodebuild是一个命令行的工具,可以让你的工程通过projects workspaces进行编译,测试,分析,打包。 xcodebuild提供了几个选项,可以在Main Page看到这些。默认情况下,xcodebuild会保存和输出在Xcode的本地定义的面板里面。 请观看下面xcodebuild运用的各种用法。 === xcodebuild还有其他执行scheme的编译命令,比如build,analyze,analyze。 通过下面可以知道怎么用弹出的菜单设置一个默认的xcodebuild选项 给xcodebuild设置默认编译Debug ? Paste_Image.png 我怎么通过命令行运行unit测试的命令。 xcodebuild test -scheme <your_scheme_name> -destination destinationspecifier xcodebuild运用test的编译命令去执行
$TIMESTAMP.ipa #rm -rf $tmp_dir rm $ipa xcodebuild -target $target_name -sdk iphoneos -configuration Debug ARCHS="armv7 armv7s armv64" CONFIGURATION_BUILD_DIR=$tmp_dir PROVISIONING_PROFILE="$profile" xcodebuild CODE_SIGN_IDENTITY="$sign" -archivePath $tmp_dir/target.xcarchive PROVISIONING_PROFILE="$profile" xcodebuild $TIMESTAMP.ipa #rm -rf $tmp_dir rm $ipa xcodebuild -target $target_name -sdk iphoneos -configuration 出错 xcodebuild can't build when no physical iOS xcode-sh
1. xcodebuild + xcrun命令 Xcode为我们开发者提供了一套构建打包的命令,就是xcodebuild 和xcrun命令。 具体的文档如下, xcodebuild官方文档、xcrun官方文档 NAME xcodebuild – build Xcode projects and workspaces SYNOPSIS 1. -version [-sdk [sdkfullpath | sdkname]] [infoitem] 5. xcodebuild -showsdks 6. xcodebuild -showBuildSettings 上面10个命令的第一个和第二个里面的参数,其中 -target 和 -configuration 参数可以使用 xcodebuild -list 获得,-sdk 参数可由 xcodebuild -showsdks /customScript.sh" slack end Ps:这里可能大家还会听过一个命令叫 xctool xctool是官方xcodebuild命令的一个增强实现,输出的内容比xcodebuild
In Xcode 8, as Bruce said, this happens when Qt tries to find xcrun when it should be looking for xcodebuild xcrun -find xcrun 2>/dev/null"))) With: isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild Contents/Developer Step 2: Confirm the license agreement with the command: xcodebuild
usr/bin/xcodebuild。 我们就以xcodebuild举例,我们通过which xcodebuild得到的结果是/usr/bin/xcodebuild,也就是说我们在执行xcodebuild的时候实际上在执行usr/bin/xcodebuild /xcodebuild的? /usr/bin/xcodebuild xcrun xcodebuild Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild 当然这套工具包有些命令不在 ; 可以通过man xcodebuild查看手册。
1. xcodebuild + xcrun命令 Xcode为我们开发者提供了一套构建打包的命令,就是xcodebuild 和xcrun命令。 具体的文档如下, xcodebuild官方文档、xcrun官方文档 NAME xcodebuild – build Xcode projects and workspaces SYNOPSIS 1. -version [-sdk [sdkfullpath | sdkname]] [infoitem] 5. xcodebuild -showsdks 6. xcodebuild -showBuildSettings 上面10个命令的第一个和第二个里面的参数,其中 -target 和 -configuration 参数可以使用 xcodebuild -list 获得,-sdk 参数可由 xcodebuild -showsdks /customScript.sh" slack end复制代码 Ps:这里可能大家还会听过一个命令叫 xctool xctool是官方xcodebuild命令的一个增强实现,输出的内容比xcodebuild
样本对象:动态资源下载 RMResourceManager 对照组:xcodebuild和xcbuild 测试方法:在同一条件下分别build RMResourceManager,用time打印命令执行时间 结果 平台 完全build耗费时间 增量build耗费时间 xcodebuild 3.125s 1.056s xcbuild 4.974s 4.814s xcbuild+ninja 3.696s 0.329s 结果分析 xcbuild一定要和ninja一起用,不然相比xcodebuild没有优势; 完全build(即clean build)下,xcbuild+ninja并没有太大优势;但是增量更新上,xcbuild 附录 测试时使用的命令: xcodebuild: time xcodebuild -workspace RMResourceManager.xcworkspace -scheme RMResourceManager
<Debug Or Release> 无workspace xcodebuild clean -workspace kmyd.xcworkspace -scheme kmyd -configuration Release 接下来生成archive包 xcodebuild archive -workspace 项目名称.xcworkspace -scheme 项目名称 -configuration Release -archivePath archive包存储路径 CODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID xcodebuild archive -workspace image.png 执行完命令后,此时生成一个archive包 release.ipa.xcarchive 生成ipa文件 xcodebuild -exportArchive -archivePath archive包文件路径 -exportPath 导出到指定文件目录 -exportOptionsPlist 配置文件路径 xcodebuild -exportArchive -archivePath
xcodebuild是xcode内置的编译命令,我们可以用它来编译打包我们的iOS项目,接下来介绍的Infer和OCLint都是基于xcodebuild的编译产物进行分析的,所以有必要简单介绍一下它。 xcodebuild -workspace WorkspaceName.xcworkspace -scheme SchemeName Release clean **之后对xcodebuild命令的使用都需要将这些参数替换为自己项目的参数 安装xcpretty xcpretty是一个格式化xcodebuild输出内容的脚本工具,oclint的解析依赖于它的输出。 # 内置变量 cd ${SRCROOT} xcodebuild clean xcodebuild | xcpretty -r json-compilation-database oclint-json-compilation-database 而OCLint作为一个target本身就运行在特定的环境下,所以xcodebuild可以省去配置参数。
- NOTE | xcodebuild: note: Using new build system - NOTE | [iOS] xcodebuild: note: Planning build - NOTE | [iOS] xcodebuild: note: Constructing build description - NOTE | [iOS] xcodebuild (in target 'App' from project 'App') - NOTE | [iOS] xcodebuild: note: Execution policy exception - NOTE | xcodebuild: note: Using new build system - NOTE | [iOS] xcodebuild: note: Planning build - NOTE | [iOS] xcodebuild: note: Constructing build description - NOTE | [iOS] xcodebuild
脚本化中使用如下的命令打包: xcodebuild -project name.xcodeproj -target targetname -configuration Release -sdk iphoneos ` xcodebuild -workspace name.xcworkspace -scheme schemename -configuration Release -sdk iphoneos 然后使用 exportArchive 生成 ipa 文件: xcodebuild -exportArchive -archivePath archiveName.xcarchive BUILD_INSTALL_TYPE BUILD_PASSWORD BUILD_DESCRIPTION: 是给测试用户的安装方式和版本更新描述 注意 xcodebuild和Xcode是一一对应的版本,如果 Xcode版本过高,会造成xcodebuild异常处理 #查看xcodebuild和Xcode的对应版本 xcodebuild -version 如果存在多个版本Xcode可以用以下命令进行更换: sudo
compile_commands.json; rm $reportFile; fi # clean -- build -- OCLint analyse echo '-----开始生成编译数据-----'; xcodebuild -workspace $myworkspace -scheme $myscheme clean&& xcodebuild -workspace $myworkspace -scheme $myscheme /$reportFile ] then echo '-----分析完毕-----' else echo '-----分析失败-----' fi 首先需要用xcodebuild clean和build项目 -workspace $myworkspace -scheme $myscheme clean&&xcodebuild -workspace $myworkspace -scheme $myscheme xcpretty是用来格式化xcodebuild输出的工具。 xcpretty -r json-compilation-database -o compile_commands.json 3.
自动打包 好了,言归正传,其实这个打包过程我们可以脱离 Xcode,改用xcodebuild命令进行打包,相关核心命令包括: xcodebuild clean xcodebuild archive xcodebuild xcodeproj ### 编译打包过程 ### echo "============Build Clean Begin============" ## 清理缓存 ## project形式 # xcodebuild project ${PROJECT_PATH} -scheme ${SCHEME_NAME} -configuration ${BUILD_TYPE} || exit ## workspace形式 xcodebuild archive -project ${PROJECT_PATH} -scheme ${SCHEME_NAME} -archivePath ${ARCHIVE_PATH} ## workspace形式 xcodebuild =====Build Archive Success============" echo "============Export IPA Begin============" ## 导出IPA包 xcodebuild
打包主要是xcodebuild命令,分为编译archive文件与导出ipa文件两步。编译archive时可以设置不同scheme、target、configuration。 解决方案 将 Jenkins 项目里的 Xcode 构建步骤去掉,使用下面所示的命令: xcodebuild -archivePath "/Users/USERNAME/.jenkins/workspace HJEntDisExportOptions.plist 3.1.10.6 问题二解决方案 将shell脚本加入换行连接符、分行输入,例如: xcodebuild -archivePath 参数化构建时报错: + xcodebuild -exportArchive-archivePath . tag=iOS xcodebuild命令官方说明 https://www.jianshu.com/p/4f4d16326152 xcodebuild error - SecKey API returned