Ответ 1
Вам нужно добавить имя пользователя OS X в группу _developer
. См. Сообщения в этот поток для получения дополнительной информации. Следующая команда должна выполнить трюк:
sudo dscl . append /Groups/_developer GroupMembership <username>
Я использую стандартную учетную запись пользователя для своих ежедневных задач в Mac OS. Начиная с обновления до Snow Leopard, я прошу сделать следующее, когда программа запускается из Xcode:
"Введите имя и пароль пользователя в группе" Инструменты разработчика ", чтобы разрешить доступ к средствам разработчика для изменений"
Пока я знаю имя пользователя/пароль администратора, это раздражает (хотя требуется только один раз для входа в систему).
Доступ к инструментам разработчика запрашивает права на "system.privilege.taskport.debug" из приложения gdb-i386-apple-darwin.
Как лучше всего это сделать?
Вам нужно добавить имя пользователя OS X в группу _developer
. См. Сообщения в этот поток для получения дополнительной информации. Следующая команда должна выполнить трюк:
sudo dscl . append /Groups/_developer GroupMembership <username>
Наконец, я смог избавиться от него, используя DevToolsSecurity -enable
в терминале.
Благодаря @joar_at_work!
FYI: я нахожусь на Xcode 4.3 и нажал кнопку отключить при первом запуске, не спрашивайте, почему, просто предположите, что моя собака сделана я делаю это:)
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
Вы должны добавить себя в группу Developer Tools. Общий синтаксис добавления пользователя в группу в OS X выглядит следующим образом:
sudo dscl . append /Groups/<group> GroupMembership <username>
Я считаю, что имя группы DevTools - _developer
.
Решение Ned Deily отлично работает, если вашему пользователю разрешено sudo
.
Если нет, вы можете su
в учетной записи администратора, а затем использовать его dscl . append /Groups/_developer GroupMembership $user
, где $user является именем пользователя.
Однако я ошибочно считал, что это не так, потому что я ошибочно набрал имя пользователя в команде, и он тихо провалился.
Поэтому после ввода этой команды вы должны проверить ее. Это проверит, есть ли $user в $group, где переменные представляют соответственно имя пользователя и имя группы.
dsmemberutil checkmembership -U $user -G $group
Эта команда либо выведет сообщение user is not a member of the group
, либо user is a member of the group
.
Ответ, предложенный @Stacy Simpson:
Мы боремся с проблемой, описанной в этих потоках, и ни одна из резолюций не работает:
Поскольку я новичок в SO, я не могу опубликовать ни в одном из них. (Первый на самом деле закрыт, и я не согласен с аргументацией локализации...)
Во всяком случае, мы создали обход, используя AppleScript, который может заинтересовать вас. script ниже должен выполняться асинхронно до запуска автоматического теста:
osascript <script name> <password> &
Вот script:
on run argv
# Delay for 10 seconds as this script runs asynchronously to the automation process and is kicked off first.
delay 10
# Inspect all running processes
tell application "System Events"
set ProcessList to name of every process
# Determine if authentication is being requested
if "SecurityAgent" is in ProcessList then
# Bring this dialogue to the front
tell application "SecurityAgent" to activate
# Enter provided password
keystroke item 1 of argv
keystroke return
end if
end tell
end run
Вероятно, это не очень безопасно, но это лучшая работа, с которой мы столкнулись, чтобы тесты могли работать без вмешательства пользователя.
Надеюсь, я смогу получить достаточно баллов, чтобы опубликовать ответ; или кто-то может снять защиту с этого вопроса. С наилучшими пожеланиями.
Я на Snow Leopard, и это не сработало для меня. Но работала следующая процедура:
Вот лучшее решение от
Mac OS X хочет использовать системный брелок при компиляции проекта
- Открыть доступ к Keychain.
- В верхнем левом углу разблокируйте брелок (если он заблокирован).
- Выберите системную цепочку ключей в левом верхнем углу.
- Найдите свой сертификат распространения и нажмите треугольник раскрытия.
- Дважды нажмите "Закрытый ключ" в вашем сертификате распространения.
- Во всплывающем меню перейдите на вкладку Контроль доступа.
- Выберите "Разрешить всем приложениям доступ к этому элементу.
- Сохраните изменения.
- Закройте все окна.
- Запустите приложение.
После запуска:
sudo dscl . append /Groups/_developer GroupMembership <username>
за ответ выше, вы можете еще получить запрос на ввод своего пароля:
Нам нужна авторизация от пользователя-администратора для запуска отладчика. Это произойдет только один раз за сеанс входа в систему.
То, что это на самом деле означает, является любым пользователем группы разработчиков _developer, поэтому здесь будет работать только ваш пользователь/пароль для не-администратора, но чтобы полностью избавиться от него (без подсказок после перезагрузки), вам также нужно будет запустить:
sudo DevToolsSecurity -enable
(запустив его с помощью sudo в качестве пользователя admin/, поскольку root сделает это, чтобы вы могли сделать это удаленно без приглашения пароля gui)
Для меня я нашел предложение в следующем разделе:
В приложении Terminal предлагается выполнить следующую команду:
sudo /usr/sbin/DevToolsSecurity --enable