:$ infer -version (6)使用infer扫描 命令行cd到项目代码所在目录:$ cd /path infer-- xcodebuild -target QQPimPro -configuration...这里主要使用oclint对xcodebuild产生的log进行分析,获取相关数据以后生成html文件。...:$ cd /path (5)进行xcodebuild clean:$ xcodebuild clean (6)xcodebuild与oclint结合,将xcodebuild analyze的输出信息记录在...oclint执行最后一步生成.html文件时出现该错误,最后排查到是开始没有clean xcodebuild,因此在进行扫描之前先执行这一步。...; (2)switch中缺少break 开发故意设计如此,没有问题: (3)没有判断是否为空 提示844行传传入的actionButton可能为空,但实际前面已赋值,且排查没有问题: (4)未使用的值
同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。...根据官方定义,Jenkins有以下的用途: 列表项 构建项目 跑测试用例检测bug 静态代码检测 部署 关于这4点,实际使用中还是比较方便的: 1.构建项目自动化打包可以省去开发人员好多时间,重要的是,...上传成功后,我们再为keychain指明签名文件的名称。...xcodebuild把我们指定的项目打包成.app文件,xcrun将指定的.app文件转换为对应的.ipa文件。..." #指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method
同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。...根据官方定义,Jenkins有以下的用途: 构建项目 跑测试用例检测bug 静态代码检测 部署 关于这4点,实际使用中还是比较方便的: 1.构建项目自动化打包可以省去开发人员好多时间,重要的是,Jenkins...上传成功后,我们再为keychain指明签名文件的名称。...xcodebuild把我们指定的项目打包成.app文件,xcrun将指定的.app文件转换为对应的.ipa文件。...一个Master节点理论上可以管理的slave节点数是没有上限的,但通常随着数量的增加,其性能以及稳定性就会有不同程度的下降,具体的影响则因Master硬件性能的高低而不同。
" # 指定项目的scheme名称 # (注意: 因为shell定义变量时,=号两边不能留空格,若scheme_name与info_plist_name有空格,脚本运行会失败,暂时还没有解决方法,知道的还请指教...# 指定输出归档文件地址 export_archive_path="$export_path/$scheme_name.xcarchive" # 指定输出ipa地址 export_ipa_path="...configuration ${build_configuration} \ -archivePath ${export_archive_path} fi # 检查是否构建成功...# xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断 if [ -d "$export_archive_path" ] ; then echo "\033[32;1m项目构建成功.../ \033[0m" exit 1 fi # 输出打包总用时 echo "\033[36;1m使用PPAutoPackageScript打包总用时: ${SECONDS}s \033[0m" xcode
终端使用如下命令将此服务杀死即可: kill -9 PID号 方式二:使用Mac的启动进行控制器启动Jenkins 如果成功安装了Jenkins,在Mac电脑磁盘的资源库中的LaunchDaemons...账户的主要用途是使得Jenkins有权限拉取项目的代码,如果之前没有添加过,可以点击右侧的Add按钮进行添加,如下图: ?.../app/upload 上面脚本中,xcodebuild -archivePath 命令用来编译项目,如果你的项目没有使用workspace,需要将命令中的workspace修改成project,configuration...ExportOptions.plist文件,新Xcode如果不配置这个文件是无法打包成功的。... 配置完了上面的脚本,你可以尝试点击立即构建按钮进行构建,当然构建过程中极有可能会出错,你可以根据log输出检查下是否是因为下面的问题。
您可能想知道为什么我们需要使用命令行来部署 iOS 应用程序。你能想象没有 Xcode 的一天吗?或者您能想到从没有 GUI 访问权限的服务器部署应用程序吗?...或者如果你没有 Ruby 的 脚本技能怎么办?使用Fastlane? 我们必须知道在构建,测试,存档和上传应用程序时幕后发生的事情。我们应该知道用于所有这些活动的本机 Apple 开发人员工具。...我们可以通过我们的 Xcode 项目,例如 CLI.xcodeproj $ xcodebuild -project CLI.xcodeproj -scheme CLI -sdk iphonesimulator10.3...有两个步骤 使用 xcodebuild 存档构建存档 使用 xcodebuild -exportArchive 创建. ipa 我们现在构建这样的存档: $ xcodebuild -workspace...上传需要花费大量时间,但请耐心等待,并将您的 IPA 上传到 iTunes 连接。
在终端输入 oclint --version xcpretty 用于对xcodebuild的输出进行格式化 gem install xcpretty 用法: 紧跟在xcodebuild 相关语句后面,...在bin/macosx-universal-64目录下的输入: sh sonar.sh start 控制台输出"Started SonarQube"说明启动成功....需要在找一个免费的插件,在github找到两个项目 插件一 https://github.com/Backelite/sonar-objective-c 这个插件在三年前没有修改了,在使用中发现有些扫描规则并没有...: 配置文件方式: 在项目根目录下新建 sonar-project.properties 文件,内容如下: //项目的key sonar.projectKey=projectKey //项目的名字...]:iOS+Jenkins持续构建-代码扫描(https://www.jianshu.com/p/c0d49bcefeb0) [3]:使用Jenkins+OCLint+SonarCube对iOS项目进行代码分析
打包成功之后会输出build success否则输出build failed 最后是导出ipa包: xcrun -sdk iphoneos -vxcodebuild -exportArchive....如果我们项目中使用了cocoapods对文件进行管理,那么我们的项目工程中会有一个.xcworkspace文件,此时自动打包的命令有所不同 xcodebuild archive -workspace 0...SUCCEEDED ** 此时会打包成.dSYM文件,我们可以根据终端输出的地址找到此文件,我们也可以不用找到此文件而直接导出ipa文件 xcodebuild -exportArchive -archivePath...* 此命令中需要知道 xcworkspace文件名,此文件名可以在项目中直接获取,而-scheme名同样可以利用Xcodebuild -list命令获得。...Xcodebuild -list输出内容 ?
结果就是文件照常编译,同时被 Infer 翻译成中间语言,留作第二阶段处理。特别注意的就是,如果没有文件被编译,那么也没有任何文件会被分析。...在分析一个函数的时候,如果发现错误,将会停止分析,但这不影响其他函数的继续分析。 所以你在检查问题的时候,修复输出的错误之后,需要继续运行 Infer 进行检查,知道确认所有问题都已经修复。.../make 成功之后会出现build文件夹,里面有个oclint-release就是编译成功的oclint工具。 **设置oclint工具的环境变量** 设置环境变量的目的是为了我们能够快捷访问。...安装xcpretty xcpretty是一个格式化xcodebuild输出内容的脚本工具,oclint的解析依赖于它的输出。...来过滤掉一些规则 规则列表 -disable-rule 需要忽略的规则,根据项目需求设置 在Xcode中使用OCLint 因为OCLint提供了xcode格式的输出样式,所以我们可以将它作为一个脚本放在
构建过程补充 在持续构建中遇到了一些问题,这里来填下坑。 1、在command中不使用脚本,直接使用【sh jenkins.sh】。 2、创建的项目名称带空格,导致脚本构建失败。...(该问题已经更新了上一篇的脚本解决了,主要原因是脚本中的变量(如${APP_NAME})在使用时没有用""包起来,导致执行出错。) 3、构建使用cocoapods的项目如何修改脚本。...执行脚本.png 因为要上传至蒲公英,构建脚本做了小小的修改,借助一个中间文件获取导出的ipa路径,供上传使用。...3 使用cocoapods的项目脚本如何改 使用cocoapods后,因为启动项目的工程文件已经由【xxx.xcodeproj】变为【xxx.xcworkspace】,所以在build时,需要添加【-workspace...上传成功后,会返回相应的json数据。失败提示,可以参考蒲公英官网说明。 ? 上传成功返回的json.png
一般自动打包都会专门使用一台 Mac 作为打包机(一般是 Mac Mini,大厂会有专门的打包集群),在打包机上安装 jenkins 用来做自动化构建,关于 jenkins 这块我就不展开讲了,有兴趣的可以去查阅相关资料...; 构建任务内部拉取最新代码,进行一系列操作,如根据 jenkins 任务参数修改代码中的一些参数等,最后进行打包 打包成功后,将安装包上传到分发平台(蒲公英等外部平台或者自研的内部平台),上传成功后便可以将下载链接等相关信息通过...那有的读者所在公司可能没有专门的打包机,那这种情况我觉得就没有必要在自己的机器上再安装 jenkins 了,直接在终端执行脚本就可以了。.../package.sh , 则先附加权限,命令如下:chmod 777 package.sh # 2、请根据自己项目的情况选择使用 workspace 还是 project 形式,目前默认为 workspace...## 打包生成路径 PRODUCT_PATH=XXX ## ExportOptions.plist文件的存放路径,该文件描述了导出ipa文件所需要的配置 ## 如果不知道如何配置该plist,可直接使用
org.jenkins-ci httpPort 7070 强烈推荐使用方法二安装JenKins,使用命令行可以避免后面构建项目时,报一些莫名其妙的权限错误。...在执行完pod install后,就可以使用Xcode构建项目打包环境了。...如果项目中没有workspace后缀,那就在“Xcode Project File”上填.xcodeproj文件的路径。...于是,在JenKins里,点击项目的”配置“选项,在”构建“中,添加xcodebuild -archivePath, xcodebuild -exportArchive -archivePath的脚本命令...在 Jenkins 中使用 SVN 管理源码,因此,我需要将这个新增的文件上传SVN,这样在我每次构建项目,输出ipa时就能直接从SVN上拉取这个plist文件,通过设置 ExportOptions.plist
IP: 1.180.215.104 创建 .podspec 文件 pod spec create HQSliderView 如果成功,终端输出: Specification created at HQSliderView.podspec...如果你写的是swift的项目,你的项目里面一定要有一个.swift-version的配置文件。.../GitHub/Test/HQSliderView/HQSliderView.m:93:29: error: use of undeclared identifier 'HQLineColor' 说我项目中用到了没有定义的...因为这些是我在项目里统一配置的,所以单个文件拎出来的时候,肯定会报错。自己在这两个文件里再定义一下就好了,或者有其它更好的办法也可以。...给项目打上 tag 版本并推送到 GitHub 在进行打tag之前,确保你已经把验证成功的.podspec文件和.swift-version(如果是 swift 项目要有这个)以及资源文件等,commit
6.它可以灵活的进行模式配置,Git模块,Xcode构建模块和发布模块可以自由组合。 7.它应该有一个输出窗口,可以让使用者获取构建的进度以及log日志。 ...1.支持多个项目同时进行自动化构建。 在界面上,可以采用列表的方式进行已添加项目的展示。NSTableView是一个很好选择,其使用方便,结合xib文件来编写cell,其开发效率也十分高。...2.新增与删除项目。 对于iOS工程的自动构建,新增和删除项目无非就是保存或删除xcode文件的路径,当然,你可以也需要一些附带的数据用于显示,例如项目名等。 ...7.输出窗口。 使用NSTextView来显示输出信息,无论是执行脚本,还是上传文件,如果出错,都会有信息反馈。 8.记忆功能。 ...后续你可以为你的自动构建工具添加轮询打包的功能,将其运行在一台作为服务器的Mac电脑上,它就是具有了持续集成功能。
关于这个系列文章有几点说明:1)这个系列会涉及到 Cocoapods,小菜的项目使用该工具进行组件管理。2)标题中提到的编译会涉及到全量编译和增量编译。 我们如何衡量构建时间呢?...有读者朋友问了,如果我不用 Xcode 软件编译呢,比如我使用xcodebuild来编译,怎么获取到编译耗时呢?...time xcodebuild 很简单,shell 的基本操作,使用time便可获取执行的时间情况。 Build With Timing Summary 构建时长概要 ? ?...,用于分析 xcactivitylog 日志文件(注:xcactivitylog 是 Xcode 和 xcodebuild 在构建时保存的一种日志文件) XCLogParser 可以提供项目中每个模块和文件的构建时间...BuildTimeAnalyzer BuildTimeAnalyzer[3] 是一款开源工具,使用很简单。其本质还是利用 Swift 编译器的诊断选项将耗时部分输出出来。 ?
注意:Mac OS 10.12以下的没有login.keychain-db这个文件,只需要拷login.keychain文件。...另外,还有一个原因是Mac OS账号jenkins名下其实并没有安装该证书,只是系统登录账号下安装了,而jenkins构建时是使用Jenkins帐号进行的,其名下找不到证书自然就报错了。...解决方案 将 Jenkins 项目里的 Xcode 构建步骤去掉,使用下面所示的命令: xcodebuild -archivePath "/Users/USERNAME/.jenkins/workspace...另外,还有一个原因是Mac OS账号jenkins名下其实并没有安装该证书,只是系统登录账号下安装了,而jenkins构建时是使用Jenkins帐号进行的,其名下找不到证书自然就报错了。...(Good)jenkins xcodebuild命令行打包iOS项目问题汇总 http://blog.csdn.net/offbye/article/details/51506256 Jenkins构建
xcrun 回想我们过去在使用一些 CLI 命令的时候,会直接在终端上执行xcodebuild ...这样的方式,没有指定具体的 CLI 路径,并且我们执行which xcodebuild得到的结果是/...xcodebuild 作用:我们可以使用其对 Xcode 工程进行清理,分析,构建,测试,存档;场景:CI 构建等;路径:/Applications/Xcode.app/Contents/Developer...Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp 工具相关 actool 作用:对 项目中 Assets 的文件进行压缩、处理,生成.car...# 查看使用到哪些动态库,一般是涉及到 /usr/lib/ /System/Library/Frameworks/ @rpath 这三个位置,如果没有自己的动态库,就没有后面的 @rpath otool...这与使用 'otool -ov' 提供的信息相同,但呈现为普通的 Objective-C 声明,因此更加紧凑和可读。 如果安装了MonkeyDev,内置了class-dump,就不用再特意去安装了。
静态库虽然表面上是在共享代码,但实际上却被单独打包在每个目标的编译二进制文件当中(在本示例中就是 1 个应用加 2 个扩展),而这很可能会导致不必要的重复。...大家可以查看 Xcode 中的主项目来检查是否设置成功。 对于静态库,框架、库和嵌入内容中的“Embed”下不会存在与模块相关联的选项。...苹果一直使用伞形框架(导入 Foundation、导入 UIKit、导入 AVKit……),但除非大家明确知道自己在做什么,否则常规方案一般不建议使用这种粗暴的方法。...使用二进制目标创建一个新的 Swift 包。 为每个架构建立框架,并将 build 输出打包在 xcframework 当中,由上述二进制目标进行引用。 将新包导入至现有动态库中。...构建 XCFramework 我们可以使用 xcodebuild 命令行工具来创建二进制框架。
此时指令是可以正确运行的,没有任何报错,这说明可以正常编译,也就进一步说明了产物的构建并不是必须要依赖于Scheme。 那么Scheme是做什么用的呢?...在workspace所在目录下,执行如下指令,都可以成功运行: xcodebuild -workspace Norman.xcworkspace -scheme NormanTarget-Dev -showBuildSettings...CMD = nm ${MACHO_PATH} // 查看二进制可执行文件的符号表信息 3,将脚本文件放在对应目录下(本例中是直接放在项目根目录),运行脚本文件,然后就可以在对应终端中看到对应的符号信息了...但是不知道诸位有没有注意到Run Script中的一些配置选项,如下: 在Input Files或者Input File Lists中是配置输入文件的路径,在脚本执行过程中会使用到这些输入文件。...在Output Files或者Output File Lists中是配置输出文件的路径,会将脚本执行的结果输出到这些输出文件当中。
这里作为一个门外汉,通过自己的实践经验做个说明: 这个报错表示,「当前所运行的文件目录下,没有找到xcode类型的文件项目。」...2、按步骤执行命令 第一步 执行如下命令前,需要cd到第一步中我们保存的xcode项目文件目录下 $ xcodebuild build-for-testing -scheme WebDriverAgentRunner...,这就代表我们成功了。...「这个时候我们就可以脱离Mac,直接使用windows操作了。」 之后也不需要再来xcode进行构建WebDriverAgent了,直接安装这个ipa包即可。...三、安装ipa文件 前面我们把ipa文件构建出来了,接下来就是需要进行安装了。
领取专属 10元无门槛券
手把手带您无忧上云