Fastlane匹配极大地改善了代码签名,即使对于小型团队而言,其唯一的问题是默认情况下它不适用于现有证书,这对试图在现有项目上使用它的任何人来说都是一个停滞点。 但是,有一种欺骗快速通道匹配的方法来使用您现有的证书。 match是https://codesigning.guide概念的实现。 match创建所有必需的证书和配置文件,并将它们存储在单独的git存储库中。 每个有权访问该存储库的团队成员都可以使用这些凭据进行代码签名。 匹配还会自动修复损坏和过期的凭据。 这是在团队之间共享签名凭证的最简单方法 https://docs.fastlane.tools/actions/match/ 让我们开始吧,首先,您需要设置fastlane和fastlane匹配,为了不重复文档,只需按照那里的设置步骤进行操作: https://docs.fastlane.tools/getting-started/ios/setup/ https://docs.fastlane.tools/actions/match/#setup 重要提示:我建议您花些时间阅读整个文档,但在匹配指南上,请仅遵循设置步骤! 不要执行其余步骤,因为这会导致Fastlane为您的应用生成新的证书/配置文件。 现在您有了匹配设置,但是证书为零,并且由于它将证书存储在加密的存储库中,因此您不能简单地将现有证书添加到其中, 它将无法正常工作。 正确的方法是使用fastlane文档中的隐藏功能,该功能使您可以解密匹配存储库并对其进行更改。 在此之前,请确保已将证书和私钥导出到计算机上的某个位置。 为此,请打开“钥匙串”应用程序并转到“ Certificates类别。 选择您要使用的证书(该证书必须是您的应用程序正在使用的证书),然后通过打开上下文菜单并选择“导出:…”来导出该证书: 选择“证书(.cer)”作为“ 文件格式” ,然后保存在您记得的地方。 现在对“ 导入的私钥 ”执行相同的操作,这次选择“个人信息交换(.p12)”作为“文件格式”,然后保存。 不要在导出的密钥上放置密码,否则match将无法导入它。 下一步是验证该证书的ID,此信息不容易看到,因此我们需要使用Spaceship来抓取它,它是一个由fastlane直接创建的Ruby库。 由于您已经设置了快速通道,因此您已经可以访问它。 通过在终端上运行irb启动交互式红宝石外壳。 输入require ‘spaceship’并按回车键,这将在当前shell会话中导入库。 现在运行以下命令在Apple Portal上登录,如果正确设置了快速通道,它将检查您的凭据并登录。 飞船登录 现在有必要获取您帐户中可用证书的列表,有两种方法可以使用 太空飞船证书 基本上打印所有证书,或者使用限制性更强的调用 宇宙飞船证书发展 和 太空飞船证书生产 取决于您要使用的证书类型。 该列表将包含每个证书的所有属性,您需要查找刚刚保存的证书的详细信息,查找名称和创建/到期日期。 找到要查找的密钥后,请重命名先前保存的密钥和证书,以将该ID作为名称。 注意: Fastlane更改了下一步需要使用的一些方法,因此,在必要时,我将明确地将命令分为两部分,一个用于Fastlane版本≤2.105.2,另一个用于较新版本。 有关更改的更多详细信息,请参见https://github.com/fastlane/fastlane/issues/13521。 打开加密的存储库 在交互式外壳上运行以下命令,以设置一些稍后将使用的变量: 版本≤2.105.2 irb(main):001:0>需要“匹配” irb(main):002:0> git_url =’git@github.com:path-to / […]
Apple在Xcode 8中引入了自动代码签名功能。该功能旨在解决开发人员以前在管理证书和预配应用程序时遇到的许多问题,并使签名应用程序以及在应用程序和开发人员门户中的功能同步变得更加容易。 在WWDC 2016中,有一个关于此主题的整个会议,Xcode App Signing的新增功能。 此功能有助于节省大量时间用于供应应用程序的证书管理。 但是,由于自动代码签名功能开始使用开发证书来存档应用程序,因此这破坏了大多数构建脚本。 正如在此答案中讨论的那样,有几种解决方法。 在本文中,我们将研究如何针对需要在构建脚本中使用单独的证书的情况,切换到构建脚本中的手动代码签名。 尽管具有自动代码签名的所有优点,但是它也带来了一些危害。 自动代码签名的主要问题之一是,当您的CI脚本需要覆盖CODE_SIGN_IDENTITY ei Enterprise和App Store的不同团队构建具有不同证书的应用程序时。 可能您的构建脚本如下所示: xcodebuild -project MyAmazingApp.xcodeproj -target MyTarget干净存档-sdk iphoneos PRODUCT_BUNDLE_IDENTIFIER = edu.myamazingcompany.myamazingapp -archivePath MyArchive.xcarchive PROVISIONING_PROFILE_SPECIFIER = {Provisioning_Profile_Uuid} CODE_SIGN_IDENTITY =” 运行会在Xcode 8中给您以下错误: 检查依赖项 {目标/方案}的配置设置冲突。 {Target / Scheme}将自动签名以进行开发,但是已经手动指定了冲突的代码签名标识iPhone Distribution。 在构建设置编辑器中将代码签名标识值设置为“ iPhone Developer”,或在项目编辑器中切换为手动签名。 SDK’iOS 10.X’中的产品类型’Application’需要代码签名 如果您不熟悉xcodebuild命令,则可以通过运行以下命令来了解它: xcodebuild -help或查看xcodebuild上的Apple文档页面。 如前所述,此问题有几种解决方法。 在这里,我们将研究如何在项目中保留“自动代码签名”功能,并在调用xcodebuild命令之前将其禁用,以便我们仍然可以手动指定代码签名证书并覆盖默认值。 首先,让我们看看Xcode如何指示是否使用自动代码签名设置了目标。 正如此处讨论的那样, ProvisioningStyle是用于标识目标是否应使用自动代码签名的属性名称,具体取决于其值Atuomatic / Manual […]
没有Fastlane比赛 在TechOps中,我们使用CircleCI来测试和部署iOS应用。 最初的CircleCI 1.0很好,但是他们推出了2.0版,并停止了对1.0版以后的Xcode版本的支持。 当我开始迁移到2.0时,我遇到了以下注意事项: 在CircleCI 2.0上,唯一支持代码签名的方法是使用上述文档中所述的Fastlane Match。 我很惊讶。 你惊喜吗? 我喜欢Fastlane。 这是iOS开发工具发生的一件好事。 但是我不想在CI上使用Match,因为: 它需要带有加密证书的单独回购。 好。 但是密码仍然应该存储在CI环境变量设置中。 那么为什么身份不应该呢? 依靠互联网连接的不必要步骤 这是对Google产品的不可预测的依赖; 我们不知道它将活多久 可以说,如果我们转向Match,那么我们将不再依赖CI提供者。 但是事实并非如此,迁移文档建议使用特殊操作: 尽管其他快速通道操作可以轻松地与一组xcodebuild命令互换,但“匹配”步骤提供了一种处理签名身份和配置文件的概念,这些概念有时可能会过时。 无论如何,我已经弄清楚了如何在不使用Match的情况下使用代码签名。 解 TL; DR:很难说,但是您必须将证书和配置文件编码为base64表示形式,将其设置为env,然后将其解码回文件。 macOS钥匙串 将证书和私钥导出为p12文件,设置证书密码。 从Apple Dev Center获取配置文件(使用该身份签名)。 编码文件 在macOS Terminal中,将Certificates.p12编码为base64,然后将结果复制到剪贴板: $ base64 -i Certificates.p12 | pbcopy 并使用相同的命令来解码.mobileprovision文件。 CircleCI上下文 要在2.0中存储环境值,我们必须使用上下文。 转到组织设置→上下文→资源→添加资源。 添加具有某些名称的变量(例如Certificates ),然后将先前复制的值粘贴到Value字段中。 CircleCI配置YAML 现在,我们需要取回这些文件。 在.circleci/config.yml使用以下步骤: 现在,我们将证书和个人资料放在正确的位置。 进口证明书 现在,我们需要将签名身份添加到CI钥匙串中,CircleCI上不再存在。 我提到了setup_circle_ci特殊操作,我们将使用它来创建钥匙串,正如我们从其源代码中知道的那样。 我们必须添加以下before_all通道: […]
我想正确理解代码签名标识设置:我想在Xcode中使用自动设置,而不是指定一个特定的身份。 自动设置有2个select:iOS开发者和iOS发行版。 基于你使用哪一个,它应该切换到从你的钥匙串中select一个开发者或分发签名身份。 我有我的构build设置configuration如下,以便在构build上使用“iOS分配”身份: 当我归档我的应用程序(存档scheme正确设置为使用发行版本configuration)时,我看到Xcode没有使用正确的代码签名标识: 任何人都会知道这是为什么? 我正在寻找一个解释,而不是一个解决scheme解决scheme(我知道我可以解决这个问题,直接设置代码签名身份到我的iPhone发行:公司名称身份从钥匙串) 谢谢!
我想学习iOS开发,所以我安装了Xcode,并尝试在我的iPhone上运行我的第一个应用程序。 我正在使用xcode 8 beta 6,而我的iPhone正在运行IOS 10的最新testing版。 我有一个苹果ID作为开发者帐户,但我不是苹果开发者计划的一部分,你必须支付。 我已经select我的iPhone“设备”下,当我点击播放button,我得到“生成失败”,并出现以下错误信息: 签署“我的第一个项目”需要一个开发团队。 在项目编辑器中select一个开发团队。 SDK'iOS 10.0'中的产品types'Application'需要代码签名 我看了这个问题 ,但由于是关于其他版本,所以这个解决scheme并不适用于我。 我该如何解决这个问题?
我是iOS开发新手,今天我尝试在我的iPhone上检查我的应用程序,并尝试为设备构build它。 所以当我点击构build,它要求input我的密码,让密码来访问钥匙串。 但经过几次尝试,我不小心点击拒绝button。 然后再次尝试构build我的应用程序的设备,现在它说, Swift sodlib tool error, task failed with exit 1 signal 0 而当我检查它所说的错误时, unknown error -1=ffffffffffffffff error: Task failed with exit 1 signal 0 { /usr/bin/codesign '–force' '–sign' 'A6646CD79C82476C1C35598A10134D3171EE09CD' '–verbose' '/Users/samitha/Library/Developer/Xcode/DerivedData/TestFoodTracker-gdcqosdrvtooqocosgttmwyzvgtg/Build/Products/Debug-iphoneos/TestFoodTracker.app/Frameworks/libswiftContacts.dylib' 我做了什么 我试图让密码访问“钥匙串访问”,并检查login下的每个键,但在每个键的访问控制部分,“允许所有应用程序访问此项”已被选中。 我找不到更多的方法来纠正这个错误,让我的应用程序为我的设备而build造。 如果有谁知道如何纠正这个,请帮助我。 谢谢。
我无法理解关于代码签名的苹果教程。 我正在寻找一个更简单的解释。 http://developer.apple.com/mac/library/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html Thnx!
我昨天把Mac升级到了10.10.3和Xcode,升级到了6.3.1。 今天我不能使用git, codesign_allocate ….等等。 `sh: line 1: 18421 Abort trap: 6 /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk -find codesign_allocate 2> /dev/null codesign_allocate: error: unable to find utility "codesign_allocate", not a developer tool or in PATH /Users/ylx/Library/Developer/Xcode/DerivedData/test-ahpvhmtqeafuveekexklyxulvmfa/Build/Products/Debug-iphoneos/test.app/Frameworks/libswiftCore.dylib: the codesign_allocate helper tool cannot be found or used *** error: Couldn't codesign /Users/ylx/Library/Developer/Xcode/DerivedData/test-ahpvhmtqeafuveekexklyxulvmfa/Build/Products/Debug-iphoneos/test.app/Frameworks/libswiftCore.dylib: codesign failed with exit code 1 Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool […]
我用以下命令来签署我的应用程序 codesign –resource-rules=ResourceRules.plist -f -s "SIGNER_NAME" MYAPP.app 安装Yosemite和XCode 6.1后,它会发出以下警告: Warning: –resource-rules has been deprecated in Mac OS X >= 10.10! 所以我试图删除“ – 资源规则”,但现在它给出了以下(阻塞)错误: invalid resource specification rule(s) 有没有什么正确的方式来编码?
我想在Jenkins上运行一个自动化的xcodebuild,但是我遇到了错误 用户交互是不允许的。 命令/ usr / bin / codesign失败,退出代码为1 我已经引用了“用户交互不被允许”尝试使用codesign和其他类似的线程来签署OSX应用程序 ,但是没有一个解决scheme似乎正确地解决了错误。 这是我已经尝试过的: 我已经允许所有项目访问钥匙串,并且我已经特别添加了对“始终允许”列表的编码(正如https://stackoverflow.com/a/22637896所做的那样) 我已经设置钥匙串不会自动locking超时,无论是通过钥匙串访问的设置,并通过命令 security set-keychain-settings -t 3600 -l <KEYCHAIN> 我曾试过打电话 codesign –sign <CODE SIGN IDENTITY> –force … 在项目编译之前(更具体地说,这个解决schemehttps://stackoverflow.com/a/20208104 ),虽然这成功地build立了项目,我不认为编译之前的编码是正确的或可靠的。 (编辑:这从jenkins运行时也失败了) 这里是我正在执行的命令: security unlock-keychain -p <PASSWORD> <KEYCHAIN> xcodebuild -scheme <SCHEME> -workspace <WORKSPACE> -derivedDataPath <BUILD DIRECTORY> -configuration <CONFIGURATION> "CONFIGURATION_BUILD_DIR=<BUILD DIRECTORY>" "CODE_SIGN_IDENTITY=<CODE SIGN ID>" "PROVISIONING_PROFILE=<PROVISIONING PROFILE>" clean build […]