标签: xcodebuild

Mac开发人员使用什么自动构建系统?

我的团队目前正在使用buildbot来实现隔夜和持续集成构建和回归测试的自动化.对于构建和单元测试,构建器只调用一个脚本,该脚本从p4同步源然后运行xcodebuild.回归测试也由shell脚本启动,它们本身就是shell脚本和AppleScripts的组合.构建都在一个系统上执行,但随后buildbot触发测试在多台Mac上进行,具有不同的架构和操作系统组合.我喜欢buildbot的东西是自动触发器(因此只有在构建成功时才运行测试),并且报告包括瀑布视图以查看整体状态.

但是,我也看到了一些问题.协调构建的"主"进程要么是漏洞,要么只是有一个巨大的工作集,这意味着它消耗了几千兆字节的内存.偶尔网络问题意味着奴隶会丢失; 而不是稍后重试它将只是失败的构建.实际上,如果应该为依赖构建触发从属设备,则在第一次构建成功完成之后它将失败.

那么你们其他人用什么来自动化你的Xcode构建和单元测试呢?这些解决方案如何为您服务?你会推荐什么?

build-automation xcode continuous-integration xcodebuild

12
推荐指数
1
解决办法
5596
查看次数

将iOS应用程序安装到xcode模拟器中?

我们是iOS(和其他移动平台)开发人员,我们的销售人员通常需要为客户提供我们的应用演示.我们要做的是自动化流程,以便销售人员可以访问自助服务网站并将应用程序提供给他们的模拟器.

使用xcodebuild,我们可以启动构建过程,然后将其作为安全下载链接(通过我们的Intranet)呈现,但所有让他们做的就是将其安装到他们的iOS设备上.这是可以的,除了路上的每个人都没有iOS设备(或者有些旧的iPod触摸,而且速度超慢).所以,我认为必须有一种方法将它安装在他们的模拟器中.

我看到其他人通过压缩模拟器目录并将其放在另一个目录上来破解它:http: //discussions.apple.com/thread.jspa?messageID = 7680994

将目标设置为模拟器,释放.部署.停止iPhone模拟器.从〜/ Library/Application Support/iPhone模拟器/用户/应用程序中拉出您的应用程序/将其发送给其他人,并让该人知道将其解压缩到该文件夹​​中,而不是启动iPhone模拟器 - 您就完成了.

我想我们可以做到这一点,但它似乎没有确定性(或者至少,脚本更难).我更喜欢使用.app,但如果唯一的方法就是使用这种hacky复制和粘贴操作,这就是我们必须要做的.

有什么想法吗?

xcodebuild ios ios-simulator

12
推荐指数
1
解决办法
4万
查看次数

当输出重定向到文件时,xcodebuild会破坏测试结果输出

我将Jenkins与Xcode插件配置为通过将测试构建操作添加到Custom xcodebuild参数设置来运行单元测试.有关让Jenkins使用Xcode 5运行单元测试的更多信息,请参阅此问题.

现在我已经运行了,它似乎将NSLog语句的控制台输出或最终** TEST SUCCEEDED **消息与测试结果混合在一起,因此偶尔会将解码器绊倒,将单元测试结果转换为Jenkins所需的JUnit格式.

例如,Jenkins日志显示如下输出:

Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (** TEST SUCCEEDED **

0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
Run Code Online (Sandbox Code Playgroud)

什么时候它应该是:

Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
** TEST SUCCEEDED **
Run Code Online (Sandbox Code Playgroud)

我进一步调查了这一点,并把詹金斯拉出了画面.如果我在命令提示符下直接运行xcodebuild命令:

xcodebuild \
    -workspace project.xcworkspace \
    -scheme Tests \
    -configuration Release \
    -sdk iphonesimulator7.0 \
    -destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=latest" \
    test
Run Code Online (Sandbox Code Playgroud)

输出总是很好,有序.

但是,如果我将输出传递给另一个程序或重定向到文件:

xcodebuild \
    -workspace project.xcworkspace \
    -scheme Tests \
    -configuration Release \ …
Run Code Online (Sandbox Code Playgroud)

xcode unit-testing pipe xcodebuild xcode5

12
推荐指数
2
解决办法
3881
查看次数

xcodebuild:查找输出应用程序文件的位置

反正有没有指定xcodebuild的输出文件(即.app)的放置位置?默认情况下,它位于:

/Users/myusername/Library/Developer/Xcode/DerivedData/Project-crkyjjbuqqnqqvfxehsjsarzlbbr/Build/Products/Release-iphoneos/Project.app

因为我需要找到输出Project.app文件,如果无法指定路径,我可以使用脚本查找"/ Users/myusername/Library/Developer/Xcode/DerivedData /"文件夹并在其中找到具有最新修改日期和前缀"Project-"的那个?脚本是什么样的?

谢谢

macos xcode xcodebuild

12
推荐指数
1
解决办法
5131
查看次数

xcodebuild - 如何指定项目所在的目录,而不在其中执行cd

我在脚本中从命令行使用xcodebuild,但我意识到我无法指定我想要构建的项目的路径;我被迫在项目所在的文件夹中进行cd.

有没有办法完成构建过程而不必在目录中cd,或者这是必须的?

进入目录并执行xcodebuild并不是什么大不了的事,但是我想知道如果有一天你需要建立一个项目并且你不能进入目录....我对没有能力是没有意义的指定路径.

macos xcodebuild

11
推荐指数
2
解决办法
3866
查看次数

llvm-gcc-4.2:错误

项目在真实设备上构建并运行良好,但iphone模拟器的构建在此错误"llvm-gcc-4.2:error"中完成.有任何想法吗?

llvm-gcc-4.2: error trying to exec '/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/../llvm-gcc-4.2/bin/arm-apple-darwin10-llvm-gcc-4.2': execvp: No such file or directory 
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 255
Run Code Online (Sandbox Code Playgroud)

thx,Fabian

iphone xcode xcodebuild ios4 ios-simulator

11
推荐指数
2
解决办法
2万
查看次数

无法为Cordova iOS App生成发布版本

我正在使用Phonegap CLI 3.1XCode5.我想通过命令行为iPhone应用程序生成发布版本,我有有效的分发证书移动配置文件.我想完全通过命令生成发布版本,不想使用XCode GUI或Phonegap Build.我用xcodebuild,xcrun甚至corodva build命令都做了太多尝试,但它们都没有为我提供发布版本文件(无论是.app格式还是.ipa).

方法1(使用xcodebuild)

a) xcodebuild -project MyApp.xcodeproj -alltargets -sdk iphoneos7.0 PROVISIONING_PROFILE="PROFILE_UUID.mobileprovision" -configuration Release
Run Code Online (Sandbox Code Playgroud)

**BUILD FAILED**
以下构建命令失败:

CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7/AppDelegate.o MyApp/Classes/AppDelegate.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler

CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7/MainViewController.o MyApp/Classes/MainViewController.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler

CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7s/AppDelegate.o MyApp/Classes/AppDelegate.m normal armv7s objective-c com.apple.compilers.llvm.clang.1_0.compiler
( 3次失败)


方法2(使用corodova build和xcrun签署应用程序)

a) cordova build ios -release
Run Code Online (Sandbox Code Playgroud)

通过命令"/ Users/Macuser/Desktop/MyApp/platforms/ios/cordova/build"在平台"ios"上编译应用程序 - 发布平台"ios"编译成功.

b) xcrun -sdk iphoneos PackageApplication -v "build/Release-iphoneos/MyApp.app" -o "build/Release-iphoneos/MyApp.ipa" --sign "iPhone Distribution: NAME (ID)" --embed "PROFILE_UUID.mobileprovision"
Run Code Online (Sandbox Code Playgroud)

error: Failed …

xcode xcodebuild ios cordova xcrun

11
推荐指数
1
解决办法
1万
查看次数

等待120秒,模拟器启动

看起来Teamcity代理(TC版本是9.0 EAP)无法iOS Simulator通过测试shell脚本运行.

我正在使用Build Step: Command Line,它运行Custom Script并传递params.Teamcity代理通过使用shell脚本在Mac OS X Yosemite 10.10上启动../bin/mac.launchd.sh.

构建日志出错:

[12:33:24][Step 2/2] 2014-11-20 11:33:25.421 xcodebuild[28083:289783]  iPhoneSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1.
[12:33:24][Step 2/2] 
[12:33:24][Step 2/2] Testing failed:
[12:33:24][Step 2/2] Test target app-tests encountered an error (Timed out waiting 120 seconds for simulator to boot, current state is 1. If you believe this error represents a bug, please attach the log file …
Run Code Online (Sandbox Code Playgroud)

teamcity xcode xcodebuild ocunit ios

11
推荐指数
1
解决办法
4539
查看次数

Xcode 10归档失败-仅在命令行(xcodebuild)

我在CI机器(Jenkins)上进行归档时遇到问题,当在SAME机器上手动运行过程但使用Xcode UI时,一切正常。

我得到的错误是:

<unknown>:0: error: cannot have input files with file list

** ARCHIVE FAILED **


The following build commands failed:
    CompileSwift normal armv7
    CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
    CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
    CompileSwift normal arm64
(4 failures)
Run Code Online (Sandbox Code Playgroud)

它在失败时执行的原始命令非常长(68K +个字符),在此将其从所有pod /应用信息中删除:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift @/var/folders/cc/h3hp1kt14rv3j5t_lybwwgqh0000gp/T/arguments-ece6e3.resp # -frontend -c -filelist /var/folders/cc/h3hp1kt14rv3j5t_lybwwgqh0000gp/T/sources-e4a704 -supplementary-output-file-map /var/folders/cc/h3hp1kt14rv3j5t_lybwwgqh0000gp/T/supplementaryOutputs-4e5601 -target arm64-apple-ios10.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk  -g -module-cache-path / ... /ModuleCache.noindex -swift-version 4 -O -D RELEASE -serialize-debugging-options ...  -module-name APPNAME -num-threads 8 -output-filelist /var/folders/cc/h3hp1kt14rv3j5t_lybwwgqh0000gp/T/outputs-3df91d
Run Code Online (Sandbox Code Playgroud)

更多信息:

  1. 使用Cocoapods 1.5.3(也可以复制最新的1.6.0_beta.1)
  2. 使用“旧版构建系统”
  3. 我要存档的确切命令是: xcodebuild …

archiving xcodebuild ios cocoapods xcode10

11
推荐指数
2
解决办法
6594
查看次数

如何通过命令行为 iOS 构建 Swift 包?

在 Xcode 中,我可以选择我的目的地作为“通用 iOS 设备”或任何 iOS 模拟器,我的包将为 ios 构建特定于平台的代码。

通过命令行“swift build”为 macOS 构建我的目标。

我想为 CI 目的构建 iOS 目标。为 macOS 构建的问题在于不会构建 UIKit 特定的代码。

例如:

#if canImport(UIKit)
    // some invalid code
#endif
Run Code Online (Sandbox Code Playgroud)

无效代码不会被注意到,并且会通过构建阶段。

理想情况下,我可以说类似swift build -platform iOS. 有没有办法做这样的事情?

xcode xcodebuild uikit swift swift-package-manager

11
推荐指数
2
解决办法
2689
查看次数