現在、bashスクリプトを介してInstrumentsを使用して、オートメーションプラグインの実行を開始するコマンドラインインターフェイスを開始しています。
4.2では十分に機能しましたが、Xcode 4.3にアップグレードすると、許可されたユーザーに「他のプロセスを分析」するように求められます。正しい資格情報が付与されていても、ユーザーが実際に認証されることはありません。次のエラーが発生します。
Failed to authorize rights (0x20) with status: -60007.
2012-02-27 19:30:37.232 instruments[54151:1c03] Failed to connect to local pid watcher service: (os/kern) failure
認証が失敗した場合でも、オートメーションプラグインは実行されますが、実際のベビーシッターが資格情報を入力するようにスクリプトを設定する必要があります。これにより、多くの点で、これらのコマンドライン実行の目的が無効になります。ユーザーの詳細を引数として追加することはできますか?または、キーに人を必要とせずにこのプロンプトをスキップする他の方法はありますか?
-編集-
この認証ダイアログは、GUIから初めてUIAutomationテストを実行しようとしたときに表示されます。
radar rdar:// 10945962 を提出しました。
-編集-
GUIで認証ダイアログに応答すると、プロンプトがコマンドラインに表示されなくなります。ただし、この種の回避策は「回答」としては有効ではないようです。
ここにあなたのために働くかもしれない素晴らしいコマンドがあります:
security unlock-keychain -p [password] "${HOME}/Library/Keychains/login.keychain"
これは、Macのキーチェーンにアクセスするためのコマンドラインの方法です。私はそれをオートメーションでテストしていませんが、iOSビルドをJenkinsと統合した方法です。
([password]をパスワードに置き換えます)
わかりました。うまくいきました。
xcodeコマンドライン認証プロンプト を削除する方法の詳細を次に示します。
私がしたことは次のとおりです:
allow-rootの値をtrueに変更します
<key>system.privilege.taskport</key>
<dict>
<key>allow-root</key>
<false/> // change to -> <true>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Used by task_for_pid(...).
...
</dict>
これで、jenkinsを使用して、コマンドラインスクリプトを介してUIAutomation-Testsを実行できます
Alexanderの回答 に追加すると、承認が処理される方法( source )のために、Mavericksでは次のようにする必要があることがわかりました。
Sudo security authorizationdb write system.privilege.taskport allow
VMWare VMでJenkinsジョブを介してzucchini機能テストを実行しています。スレーブがシミュレータを正しく起動できず、おそらく不正な認証のためにスプラッシュスクリーンでハングアップしました。これは私がこの問題を解決するのに役立ちました、それが他の人を助けることを願っています。
スクリプトを実行するユーザーは、開発者ツールの使用を許可されている必要があります。これには次の2つの方法があります。
ユーザーを_developer
グループに追加します:Sudo dscl . append /Groups/_developer GroupMembership scriptusername
DevToolsSecurityコマンドラインツールを使用する
UIAutomation計測器が正しく機能するためには、計測器を呼び出すユーザーも、ウィンドウサーバーを起動できる(つまり、UIを実行できる)ユーザーである必要があり、ウィンドウサーバーにログインしている必要があります。 UIAutomationの実行時。
これら2つは、JenkinsでUIAutomationを使用する4つまたは5つの秘密のうちの2つです。
この問題を部分的に解決しました。コマンドラインから計測器を実行し、GUIで認証プロンプト(セッションごとに1回)+コンソールでこれを実行(計測器を実行するたびに):
Instruments: Instruments wants permission to analyze other processes.
Type your password to allow this.
Name ([my-username]):
Password:
Failed to authorize rights (0x20) with status: -60007.
2012-02-28 10:04:19.607 instruments[60398:1203] Failed to connect to
local pid watcher service: (os/kern) failure
XCode 4.3にアップグレードする前と後で/ etc/authorizationファイルを比較しました。 Apple 2つのキーを置き換えました:
<key>com.Apple.dt.instruments.process.analysis</key>
<key>com.Apple.dt.instruments.process.kill</key>
と
<key>com.Apple.instruments.process.analysis</key>
/ etc/authorizationを編集し、不足しているキーを新しいキーの下に追加し、コンソールからの問題を解決しました。残念ながらGUIプロンプトはまだ残っています。
不足しているキー:
<key>com.Apple.dt.instruments.process.analysis</key>
<dict>
<key>allow-root</key>
<true/>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Rights for Instruments</string>
<key>group</key>
<string>admin</string>
<key>shared</key>
<true/>
<key>timeout</key>
<integer>36000</integer>
</dict>
<key>com.Apple.dt.instruments.process.kill</key>
<dict>
<key>allow-root</key>
<true/>
<key>class</key>
<string>user</string>
<key>comment</key>
<string>Rights for Instruments</string>
<key>group</key>
<string>admin</string>
<key>shared</key>
<true/>
<key>timeout</key>
<integer>5</integer>
</dict>
これが問題全体を解決するようにあなたに指示することを願っています
El Capitanでもこの問題に直面しました。この記事はとても役に立ちました https://www.dssw.co.uk/reference/authorization-rights/ 。これに基づいて、私はこの問題を克服するために以下の権利を変更しました:
system.privilege.taskport
system.privilege.taskport.debug
system.privilege.taskport.safe
com.Apple.dt.instruments.process.analysis
com.Apple.dt.instruments.process.kill
Sudo security authorize -u [username]
私のために働いた。
これは私のために働いた解決策です:
<key>system.privilege.taskport</key>
<dict>
<key>allow-root</key>
<false/>
<key>class</key>
<string>user</string> // change to -> allow
<key>comment</key>
<string>Used by task_for_pid(...).
...
</dict>
また、セキュリティロック解除キーチェーンを試して/ etc/authorizationファイルを変更し、DevToolsSecurityを有効にしましたが、Instruments GUIアプリを起動してスクリプトを実行するまで機能しませんでした。パスワード、その後計器スクリプトを再度実行すると、パスワードは不要になります!
Xcode-オーガナイザーをロードした場合(Xcode-> Window-> Organizer)
次に、デバイス->「開発者モードを有効にする」でマシンを選択します
これにより、インストゥルメントでプロンプトを表示する必要がなくなります。