相关疑难解决方法(0)

尝试使用协同设计签署OSX应用程序时"不允许用户交互"

我们的自动构建在Jenkins上运行.构建本身在从属服务器上运行,从服务器通过SSH执行.

我收到一个错误:

00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了迄今为止我在其他帖子中看到的所有建议:

  • 在签名之前立即使用安全解锁密钥链来解锁钥匙串.
  • 将签名密钥移到自己的密钥链中.
  • 将签名密钥移动到登录密钥链中.
  • 将签名密钥移动到系统密钥链中.
  • 手动将list-keychains设置为仅包含密钥的keychain.

在所有情况下,我都会得到同样的错误.

为了诊断问题,我尝试在我的本地终端上运行"security unlock-keychain"命令,发现它实际上并没有解锁钥匙串 - 如果我查看Keychain Access,锁定符号仍然存在.无论我是在命令行上传递密码还是让它提示我,都是这种情况.使用GUI解锁相同的钥匙串将提示我输入密码然后解锁.另外,如果我运行"security lock-keychain",我在运行命令后立即看到键锁.这让我觉得解锁钥匙串实际上并不起作用.我在Lion(我们用于构建奴隶)和Mavericks(我正在开发)上遇到相同的行为.

接下来,我尝试将-v添加到所有安全命令:

list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
        "/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.
Run Code Online (Sandbox Code Playgroud)

从这看起来,列表 - 钥匙链似乎是不起作用的.也许都不行.:/

这里有一个类似的问题.解决方案很有趣 - 在launchctl中将"SessionCreate"设置为true.但我不是在master上构建 - 我的构建过程是从一个slave构建机器上的SSH启动的.也许有一种命令行方式可以在运行"SessionCreate"时执行launchctl正在执行的操作?

macos ssh code-signing jenkins

140
推荐指数
7
解决办法
8万
查看次数

命令行更新供应配置文件

我在这方面找不到任何东西(也许我只是使用了错误的搜索条件......):
我们正在努力为我们的应用程序构建合理的持续集成设置.为了实现真正合理的实现,构建服务器应该能够从apple自动刷新使用的配置文件.与X-Code组织器的功能类似,但通过命令行自动完成.
任何线索,如果可能的话?

iphone xcode provisioning

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

xcodebuild不从.app复制文件

我使用xcodebuild命令创建了一个签名的.xcarchive文件.

.xcarchive里面是一个.app文件..app内部是一个名为archived-expanded-entitlements.xcent的文件.这个文件是我的问题的关键.

我运行一个不同的xcodebuild命令,从.xcarchive创建一个.IPA文件.

创建IPA失败,因为缺少archived-expanded-entitlements.xcent文件.问题是,xcodebuild正在创建一个临时目录,它通过我的.app文件进行复制,而在THAT .app文件中,没有archived-expanded-entitlements.xcent文件.

除了这个之外,所有其他文件都在那里.

我运行的命令如下:

这会创建xcarchive:

xcodebuild -project diplomat.xcodeproj -scheme schemeName archive -archivePath /Path/To/Archive/name.xcarchive -configuration AppStore CODE_SIGN_IDENTITY="identity" PROVISIONING_PROFILE=provProfile
Run Code Online (Sandbox Code Playgroud)

这创造了IPA:

xcodebuild -exportArchive -exportFormat IPA -archivePath /Path/To/Archive/name.xcarchive -exportPath /Path/To/Archive/name.ipa
Run Code Online (Sandbox Code Playgroud)

尽管指定了.xcarchive的位置,但它会创建一个临时目录,但不包含重要文件.请注意,archived-expanded-entitlements.xcent文件是在.xcarchive进程(第一个运行的命令)期间创建的,并且在第二个命令运行期间无法复制到临时目录中.

这是确切的错误.谷歌和StackOverflow已经产生了类似的错误,但没有解决这个实际问题.

Checking original app

     + /usr/bin/codesign --verify -vvvv    /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-  42128-00007ED35037747A/name.app

Program /usr/bin/codesign returned 1 : 

     [/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing: 

     /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent
]

Codesign check fails :

      /var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app: a sealed resource is missing or invalid

file missing: 

      /private/var/folders/sl/_wdkd56d5pb05snr559cmcww0000gn/T/D2133E2C-DC66-427C-A3C5-903A88DD0541-42128-00007ED35037747A/name.app/archived-expanded-entitlements.xcent

Done checking the original app
Run Code Online (Sandbox Code Playgroud)

terminal xcode xcodebuild ios

26
推荐指数
2
解决办法
7336
查看次数

xcodebuild - codesign -vvvv说"资源包络已经过时"

我刚刚更新了我的xcode安装以使用xcode 6.0.1,以便开始为ios8设备编译我的应用程序.出于某种原因,我无法正确签署使用以下内容生成的应用程序文件:

xcodebuild -project GrantM/GrantM.xcodeproj -configuration Release
Run Code Online (Sandbox Code Playgroud)

它编译代码,看起来很好,但运行:

/usr/bin/codesign --verify -vvvv GrantM/GrantM.app
Run Code Online (Sandbox Code Playgroud)

给我吗:

Program /usr/bin/codesign returned 1 : [GrantM/GrantM.app: resource envelope is obsolete]
Codesign check fails : GrantM/GrantM.app: resource envelope is obsolete
Run Code Online (Sandbox Code Playgroud)

使用以下命令检查代码是否已签名:/ usr/bin/codesign -dv GrantM/GrantM.app

收益:

Executable=Documents/GrantM/GrantM/GrantM.app/GrantM
Identifier=com.grantapps.GrantM
Format=bundle with Mach-O universal (armv7 (16777228:0))
CodeDirectory v=20200 size=647 flags=0x0(none) hashes=23+5 location=embedded
Signature size=4336
Signed Time=24 Sep 2014 12:54:53 pm
Info.plist entries=34
TeamIdentifier=N3KKU46JLY
Sealed Resources version=2 rules=5 files=55
Internal requirements count=1 size=180
Run Code Online (Sandbox Code Playgroud)

有没有其他人在OSX 10.9.5和xcode 6.0.1上遇到类似的问题?或者我只是有点愚蠢并做一些明显错误的事情?

另外,我能够找到在xcode中生成的应用程序的调试版本,并且可以成功签名,但它是一个调试版本,它不适用于distrobution.我甚至无法手动签署xcodebuild生成的应用程序文件.

感谢您提前提供的任何帮助或建议.

xcode xcodebuild codesign xcode6 ios8

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

将codeign添加到没有Keychain的私钥ACL

我正在尝试为稳定的iPhone应用程序设置持续构建/集成.

我有:

  • 专用的Mac Mini.
  • 名为"build"的用户帐户
  • 通过在/ Users/build/Library/LaunchAgent中删除一个plist,Hudson设置为LaunchAgent用于构建
    • 尝试作为hudson运行的系统范围的LaunchDaemon,但后来无法访问构建用户的登录密钥链.漫长的故事,充满了心痛.
  • 系统设置为在启动时自动登录"build",以便Hudson开始运行.

最大的问题是代码签名和钥匙串.

我们代表客户的开发者身份创建代码,因此我们有几个开发人员身份,我们将添加更多.

我想将Mini放在一个黑暗的房间里,从不看它,但是第一次使用开发者身份构建时,会弹出一个GUI对话框,询问您是否要始终允许codesign访问开发者身份.

假设您这样做,该对话框修改了钥匙串访问控制列表(ACL),以便允许使用代码签名.

您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择"获取信息",然后切换到"访问控制"选项卡来查看此信息."处女"密钥只在其"始终允许"应用程序列表中具有Keychain Access.您在对话框中使用和确认的一个也将具有编码.

这个框提供了一种添加应用程序的方法,除了你得到标准的Finder文件选择器,它隐藏了Unix文件夹.没有办法导航到/ usr/bin/codesign.所以手动添加是不可能的!

有没有人知道这方面的方法?

我知道有一种方法使用"安全导入"的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入.不是很好.

iphone continuous-integration keychain codesign ios

14
推荐指数
2
解决办法
5253
查看次数