我在持续集成服务器上的bash脚本中使用xcodebuild.
我想知道脚本中的构建何时失败,因此我可以提前退出并将构建标记为失败.
xcodebuild向控制台显示BUILD FAILED消息,但是我没有成功获取返回值.
我怎样才能做到这一点?
提前致谢
我有一个配置,我想通过环境变量动态控制预处理器定义的值.
这可能吗?如果是如何在预处理器定义表中设置我想根据环境变量设置值?
我刚刚更新到最新版本的Xcode,并在运行我们的自动构建脚本时遇到错误(他们使用xcodebuild和xcrun命令).
在### Codesigning '/Users/...日志语句之后立即发生错误,如下所示:
Program /usr/bin/codesign returned 1 : [/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: replacing existing signature
/var/folders/__/63j90nkn2lg18ct1nq791_nc0000gn/T/g5hbigh1tM/Payload/CurrentTarget.app: cannot find code object on disk
Run Code Online (Sandbox Code Playgroud)
我在这里找到了文档,列出并简要描述了错误,但没有具体说明如何解决它.
因为我花了很长时间寻找解决方案(没有任何关于SO)我将在下面发布答案以防其他人遇到同样的问题.
我刚刚发现,Xcode 6的命令行工具允许您使用导出XLIFF本地化文件
xcodebuild -exportLocalizations -localizationPath
Run Code Online (Sandbox Code Playgroud)
现在,我想在推送到GIT仓库时在我的CI上导出XLIFF.这很容易.
但是,预构建我需要再次导入它们.不幸的xcodebuild是没有提供-importLocalizations或类似.
有没有其他方法可以使用命令行导入XLIFF?
我在为OTA分发生成IPA时遇到了麻烦.
我们为另一家公司制作了一款应用 另一家公司在我们的企业帐户上添加了我,以便我可以使用他们的签名身份进行分发.
使用命令行创建ipa
使用命令xcodebuild,我使用xcode创建的存档,我将团队作为其他公司的团队,以及说明我正在为Enterprise构建的plist,我收到此错误:
未找到属于团队[其他公司的公司团队ID]的有效iOS分发签名身份.
使用XCode
我尝试使用XCode,取消选中Xcode中的"自动管理签名"并选择其他公司,然后我收到这些错误:
找不到签名证书"iOS Distribution".
没有发现"iOS发布"签名证书与团队ID [其他公司的团队ID]匹配的私钥."
我应该从开发者帐户下载一些东西吗?(我已经下载了所有证书......我认为)我不能撤销他们拥有的分发证书,因为它不是我的公司,它可能会给他们带来麻烦.
谢谢.
当我使用命令行工具xcodebuild(XCode 4.2.1 - iOS SDK 5.0)随机编译我的应用程序时ibtoold(Interface Builder)崩溃.当我重新运行构建时,一切正常.
发生以下错误:
ibtoold[88134:107] [MT] DVTAssertions: ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-933/IBPlugin/Utilities/IBObjectMarshalling.m:499
Details: Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report.
Exception name: NSInvalidReceivePortException
Exception reason: connection went invalid while waiting for a reply because a mach port …Run Code Online (Sandbox Code Playgroud) 我通过调用发布版本:
xcodebuild -project HelloWorld -sdk iphoneos5.1 -configuration Release install
Run Code Online (Sandbox Code Playgroud)
但对于PhoneGap应用程序,我收到此错误:
**建筑失败**
以下构建命令失败:CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv6 objective-c com.apple.compilers.llvm. clang.1_0.compiler(1次失败)
当我尝试:
xcodebuild -project HelloWorld -sdk iphoneos5.1 -configuration Release clean build
Run Code Online (Sandbox Code Playgroud)
我明白了:
2012-10-04 22:51:52.776 xcodebuild [20016:4107] DVTAssertions:/ SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1559/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:87中的警告详情:无法访问从"/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d"加载依赖项输出内容.错误:错误Domain = NSCocoaErrorDomain Code = 260"无法打开文件"AppDelegate.d",因为没有这样的文件." UserInfo = 0x400eabf40 {NSFilePath =/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d,NSUnderlyingError = 0x40079c140"操作无法完成.没有这样的文件或目录"}.用户信息:{NSFilePath ="/ Users/camobap-mac/Project/Phonefinch/build/Phonefinch.build/Release -iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d"; NSUnderlyingError ="错误域= NSPOSIXErrorDomain代码= 2 \"操作无法完成.没有相应的文件和目录\""; }.功能:void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString*,void(^)(NSString*))线程:{name =(null),num = 7}请在http://bugreport.apple.com上提交此警告消息和任何错误您可以提供的有用信息.**建筑失败**
以下构建命令失败:CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv7/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv7 objective-c com.apple.compilers.llvm. clang.1_0.compiler CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv6 objective-c com.apple.compilers.llvm.clang .1_0.compiler(2次失败)2012-10-04 22:52:04.887 …
我刚刚将我的Xcode更新到7.2版.现在我尝试使用xcodebuild从命令行构建一个框架但是有这个错误
.... /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CAMediaTiming.h:6:9: note: in file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CAMediaTiming.h:6:
#import <QuartzCore/CABase.h>
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CABase.h:11:10: error: could not build module 'Darwin'
#include <stdbool.h>
^
/Users/atran/Desktop/Repos/DSA_Working_Directory/Libs/Kingfisher/Kingfisher/Kingfisher.h:27:9: note: while building module 'UIKit' imported from /Users/atran/Desktop/Repos/DSA_Working_Directory/Libs/Kingfisher/Kingfisher/Kingfisher.h:27:
#import <UIKit/UIKit.h>
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UICollectionViewLayout.h:11:9: note: while building module 'QuartzCore' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UICollectionViewLayout.h:11:
#import <QuartzCore/CATransform3D.h>
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CAEAGLLayer.h:7:9: note: while building module 'OpenGLES' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/QuartzCore.framework/Headers/CAEAGLLayer.h:7:
#import <OpenGLES/EAGLDrawable.h>
^
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/EAGL.h"
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/OpenGLES.framework/Headers/EAGL.h:8:10: error: could not build module 'Foundation'
#include <Foundation/Foundation.h>
^ …Run Code Online (Sandbox Code Playgroud) 首先,我想声明没有bitcode,一切都很完美.当我打开应用程序中的"bitcode"标志时,问题就出现了.
此外,所有构建都是通过CI流(不是手动在xcode-> archive et.al中).
该框架是在与应用程序本身分开的流程中构建的(该应用程序嵌入了编译的框架)
当我尝试打包ipa时,我收到此错误:
❌ld:bitcode bundle无法生成,因为'..../Framework.framework/Framework'是在没有完整bitcode的情况下构建的.bitcode的所有框架和dylib必须从Xcode Archive或Install build for architecture armv7生成
❌clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
关于框架:
我正在使用以下命令构建框架:(省略技术细节)
# iphone (arm)
xcodebuild -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
# iphone (simulator)
xcodebuild -configuration Release -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Run Code Online (Sandbox Code Playgroud)
然后脂肪(FAT二进制)
lipo -create /Release-iphonesimulator/Framework.framework/Framework -output /Universal/Framework.framework/Framework
Run Code Online (Sandbox Code Playgroud)
我已经将编译器标志添加到框架中以"嵌入bitcode"
我甚至"验证"它有其他所有问题的bitcode :( 编译启用了bitcode的iOS库)
另外,检查二进制文件是否包含bitcode的最简单方法是使用otool和grep:
otool -l binary_name | grep __LLVM
你会看到一个或多个segname __LLVM条目,如果它有bitcode或空输出,如果没有.
otool -arch arm64 -l Frameworks/Framework.framework/Framework | grep __LL
segname __LLVM
segname __LLVM
Run Code Online (Sandbox Code Playgroud)
我还尝试了添加编译标志的其他变体
xcodebuild OTHER_CFLAGS="-fembed-bitcode"
Run Code Online (Sandbox Code Playgroud)
并报告给我相同的错误
我们一直在使用 lipo 命令创建一个框架,当集成到其他项目中时,该框架可在设备和模拟器上运行。以下是用于生成设备和模拟器构建的构建命令
xcodebuild -target SampleSDK ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" OBJROOT="${OBJROOT}/DependentBuilds"
xcodebuild -target SampleSDK ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" OBJROOT="${OBJROOT}/DependentBuilds"
Run Code Online (Sandbox Code Playgroud)
在此之后,我们将 iphonesimulator(如果存在)中的 swift 模块复制到复制的框架目录
cp -R "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/Modules/SampleSDK.swiftmodule/" "${UNIVERSAL_OUTPUTFOLDER}/${PRODUCT_NAME}/Modules/${PROJECT_NAME}.swiftmodule/"
Run Code Online (Sandbox Code Playgroud)
然后 lipo 命令
lipo -create "$BUILD_DIR/${CONFIGURATION}-iphonesimulator/${PRODUCT_NAME}/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PRODUCT_NAME}/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PRODUCT_NAME}/${PROJECT_NAME}"
Run Code Online (Sandbox Code Playgroud)
上面的命令失败并出现以下错误
fatal error: lipo: /path/to/Library/Developer/Xcode/DerivedData/Sample-bhfmlauxsdympmdjkjyvujaljevg/Build/Products/Debug-iphonesimulator/SampleSDK.framework/SampleSDK and /Users/rramshettysiddaraju/Library/Developer/Xcode/DerivedData/Sample-bhfmlauxsdympmdjkjyvujaljevg/Build/Products/Debug-iphoneos/SampleSDK.framework/SampleSDK have the same architectures (arm64) and can't be in the same fat output file
Run Code Online (Sandbox Code Playgroud)
我尝试了 stackoverflow 中的答案之一,关于添加用户定义的设置 VALID_ARCHS 然后将其删除。但这没有用
xcodebuild ×10
xcode ×7
ios ×4
bitcode ×1
code-signing ×1
cordova ×1
ibtool ×1
import ×1
ios14 ×1
ipa ×1
ipad ×1
lipo ×1
localization ×1
module ×1
objective-c ×1
preprocessor ×1
xcode12 ×1
xcode6 ×1
xcode8 ×1