2

Я создал приложение на osx 10.9, используя python 2.7, поэтому не использую xcode. Я код подписал его с сертификатом, но при проверке с команда spctl показывает, что отклонено.Как скопировать код приложения mac на osx

Команды являются:

codesign -s "3rd Party Mac Developer Application: Cloud Inc" -v -f /Applications/Cloud/logout.app/Contents/Frameworks/Python.framework/Versions/2.7 
codesign -s "3rd Party Mac Developer Application: Cloud Inc" -v -f --entitlements /Users/Cloud/Desktop/app.entitlements /Applications/Cloud/logout.app/Contents/MacOS/python 
codesign -s "3rd Party Mac Developer Application: Cloud Inc" -v -f --entitlements /Users/Cloud/Desktop/app.entitlements /Applications/Cloud/logout.app/Contents/MacOS/logout 
codesign -s "3rd Party Mac Developer Application: Cloud Inc" -v -f --entitlements /Users/Cloud/Desktop/app.entitlements /Applications/Cloud/logout.app 
spctl --assess --type execute /Applications/Cloud/logout.app 
/Applications/Cloud/logout.app: rejected 

Мой файл info.plist является:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleDisplayName</key> 
    <string>logout</string> 
    <key>CFBundleExecutable</key> 
    <string>logout</string> 
    <key>CFBundleIconFile</key> 
    <string>cc.icns</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.cloud.macapp.logout</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>logout</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>4.4</string> 
    <key>CFBundleSignature</key> 
    <string>CC4B</string> 
    <key>LSApplicationCategoryType</key> 
    <string>public.app-category.reference</string> 
    <key>CFBundleVersion</key> 
    <string>4.4</string> 
    <key>LSHasLocalizedDisplayName</key> 
    <false/> 
    <key>NSAppleScriptEnabled</key> 
    <false/> 
    <key>NSHumanReadableCopyright</key> 
    <string>Copyright © 2014 Cloud, Inc.</string> 
    <key>NSMainNibFile</key> 
    <string>MainMenu</string> 
    <key>NSPrincipalClass</key> 
    <string>NSApplication</string> 
    <key>PyMainFileNames</key> 
    <array> 
     <string>__boot__</string> 
    </array> 
    <key>PyOptions</key> 
    <dict> 
     <key>alias</key> 
     <false/> 
     <key>argv_emulation</key> 
     <false/> 
     <key>emulate_shell_environment</key> 
     <false/> 
     <key>no_chdir</key> 
     <false/> 
     <key>prefer_ppc</key> 
     <false/> 
     <key>site_packages</key> 
     <false/> 
     <key>use_faulthandler</key> 
     <false/> 
     <key>use_pythonpath</key> 
     <false/> 
     <key>verbose</key> 
     <false/> 
    </dict> 
    <key>PyResourcePackages</key> 
    <array> 
    </array> 
    <key>PyRuntimeLocations</key> 
    <array> 
     <string>@executable_path/../Frameworks/Python.framework/Versions/2.7/Python</string> 
    </array> 
    <key>PythonInfoDict</key> 
    <dict> 
     <key>PythonExecutable</key> 
     <string>/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python</string> 
     <key>PythonLongVersion</key> 
     <string>2.7.8 (default, Jul 7 2014, 20:30:57) 
[GCC 4.2.1 (Apple Inc. build 5664)]</string> 
     <key>PythonShortVersion</key> 
     <string>2.7</string> 
     <key>py2app</key> 
     <dict> 
      <key>alias</key> 
      <false/> 
      <key>template</key> 
      <string>app</string> 
      <key>version</key> 
      <string>0.8</string> 
     </dict> 
    </dict> 
</dict> 
</plist> 

И app.entitlements файл является:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>com.apple.security.app-sandbox</key> 
    <true/> 
</dict> 
</plist> 

Пожалуйста, проверьте информацию и команду info.plist и app.entitlements и команду, предложите некоторые средства для устранения этой отклоненной вещи, которая проверяет с помощью spctl.

ответ

1

Я думаю, что документации Apple немного недостает в этой области.

Из того, что я понимаю, в документах Apple упоминается сертификат стороннего разработчика приложений для Mac, который разрешает доступ к определенным службам, хотя они не указывают конкретно, что эти услуги находятся в этом документе, но ожидают, что это - iCloud Storage, In-App Purchase, Game Center, Push-уведомления.

Сертификаты «3rd Party ...» предназначены для подачи заявок и инсталляторов в App Store от Apple, где Apple добавит свой собственный сертификат после его принятия.

В отличие от этого, сертификаты «Developer ID ...» предназначены для развертывания за пределами магазина приложений.

Инструмент spctl - это инструмент командной строки для управления подсистемой политики оценки безопасности и связей с Gatekeeper.

Подписание с сертификатом «3rd Party ...» предназначено для отправки в Apple для Магазина, и они будут лишать сертификат и повторно подписывать со своими собственными, я пришел к выводу из моего исследования, что spctl будет только возврат принимается либо в Apple Store, либо в сертификате удостоверения разработчика.

Чтение this сообщение, похоже, подтверждает это тоже.

Обратите внимание, что сертификат удостоверения разработчика может быть получен только агентом группы.

+0

Спасибо за ваш ответ. «Стороннее приложение для разработчиков Mac» Я использую для подписания, так как хочу загрузить его в Mac Appstore. Поскольку отклонение приходит, так что мне нужно продолжить, чтобы отправить его в appstore или нет (поскольку я подозреваю, что яблоко отклонит) – imp

+0

Вам нужно подписать с сертификатом «3rd Party ..», чтобы отправить его в Apple для Магазин приложений. – TheDarkKnight

+0

Да, я пою с «Третьей стороной ..». засвидетельствовано Но spctl говорит, что отклонено. Итак, я должен отправить это отклоненное приложение в appstore или сделать что-то еще. – imp