From 46e6b271f720a67fa72dc0f460ca69fb7601443e Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Sun, 18 Sep 2022 22:19:40 +0300 Subject: [PATCH] Update macOS export page to reflect rcodesign support. --- tutorials/export/exporting_for_macos.rst | 141 ++++++++++++++--------- 1 file changed, 87 insertions(+), 54 deletions(-) diff --git a/tutorials/export/exporting_for_macos.rst b/tutorials/export/exporting_for_macos.rst index 13f0c7cdb..e8394689d 100644 --- a/tutorials/export/exporting_for_macos.rst +++ b/tutorials/export/exporting_for_macos.rst @@ -15,8 +15,6 @@ This bundle can be exported as is, packed in a ZIP archive or DMG disk image (on Requirements ------------ -- To enable code signing with Apple Developer ID and notarization, you must export from a computer running macOS with Xcode command line tools installed. -- Ad-hoc code signing is supported on all platforms, without additional tools. - Download the Godot export templates. Use the Godot menu: ``Editor > Manage Export Templates``. - A valid and unique ``Bundle identifier`` should be set in the ``Application`` section of the export options. @@ -31,14 +29,23 @@ By default, macOS will run only applications that are signed and notarized. If y To notarize an app, you **must** have a valid `Apple Developer ID Certificate `__. -If you have an Apple Developer ID Certificate -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +If you have an Apple Developer ID Certificate and exporting from macOS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Export your project from a computer running macOS with Xcode command line tools installed. -- Enable ``Code Signing``, ``Notarization``, ``Hardened Runtime`` and ``Timestamp`` and disable the ``Debug`` entitlement. -- Provide valid Apple ID credentials and certificate identity. +Install `Xcode `__ command line tools and open Xcode at least once or run the ``sudo xcodebuild -license accept`` command to accept license agreement. -If ``Notarization`` is enabled, Godot will automatically upload the exported project for notarization. +To sign exported app +^^^^^^^^^^^^^^^^^^^^ + +- Select ``Xcode codesign`` in the ``Code Signing > Codesign`` option. +- Set valid Apple ID certificate identity (certificate "Common Name") in the ``Code Signing > Identity`` section. + +To notarize exported app +^^^^^^^^^^^^^^^^^^^^^^^^ + +- Select ``Xcode altool`` in the ``Notarization > Notarization`` option. +- Disable the ``Debugging`` entitlement. +- Set valid Apple ID login / app. specific password or `App Store Connect `__ API UUID / Key in the ``Notarization`` section. You can use the ``xcrun notarytool history`` command to check notarization status and use the ``xcrun notarytool log {ID}`` command to download the notarization log. @@ -46,10 +53,34 @@ If you encounter notarization issues, see `Resolving common notarization issues After notarization is completed, `staple the ticket `__ to the exported project. +If you have an Apple Developer ID Certificate and exporting from Linux or Windows +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Install `PyOxidizer rcodesign `__, and configure the path to ``rcodesign`` in the ``Editor Settings > Export > macOS > rcodesign``. + +To sign exported app +^^^^^^^^^^^^^^^^^^^^ + +- Select ``PyOxidizer rcodesign`` in the ``Code Signing > Codesign`` option. +- Set valid Apple ID PKCS #12 certificate file and password in the ``Code Signing`` section. + +To notarize exported app +^^^^^^^^^^^^^^^^^^^^^^^^ + +- Select ``PyOxidizer rcodesign`` in the ``Notarization > Notarization`` option. +- Disable the ``Debugging`` entitlement. +- Set valid `App Store Connect `__ API UUID / Key in the ``Notarization`` section. + +You can use the ``rcodesign notary-log`` command to check notarization status. + +After notarization is completed, use the ``rcodesign staple`` command to staple the ticket to the exported project. + If you do not have an Apple Developer ID Certificate ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Keep ``Code Signing`` enabled and leave the ``Identity`` option empty (when exporting from a computer running macOS, on other platforms this option is hidden). +- Select ``Built-in (ad-hoc only)`` in the ``Code Signing > Codesign`` option. +- Select ``Disabled`` in the ``Notarization > Notarization`` option. + In this case Godot will use a ad-hoc signature, which will make running an exported app easier for the end users, see the :ref:`Running Godot apps on macOS ` page for more information. Signing Options @@ -58,46 +89,46 @@ Signing Options +------------------------------+---------------------------------------------------------------------------------------------------+ | Option | Description | +==============================+===================================================================================================+ -| Enable | Enables code signing. | +| Codesign | Tool to use for code signing. | +------------------------------+---------------------------------------------------------------------------------------------------+ -| Identity | The "Full Name" or "Common Name" of the signing identity, store in the macOS keychain. [1]_ [2]_ | +| Identity | The "Full Name" or "Common Name" of the signing identity, store in the macOS keychain. [1]_ | +------------------------------+---------------------------------------------------------------------------------------------------+ -| Timestamp | Requests a timestamp server to authenticate the time of signing. Required for notarization. [2]_ | +| Certificate File | The PKCS #12 certificate file. [2]_ | +------------------------------+---------------------------------------------------------------------------------------------------+ -| Hardened Runtime | Enables "Hardened Runtime". Required for notarization. [2]_ | +| Certificate Password | Password for the certificate file. [2]_ | +------------------------------+---------------------------------------------------------------------------------------------------+ -| Replace Existing Signature | Replaces existing signatures of the GDNative libraries and embedded helper executables. | +| Custom Options | Array of command line arguments passed to the code signing tool. | +------------------------------+---------------------------------------------------------------------------------------------------+ -.. note:: - - To notarize an app, you must enable the ``Hardened Runtime`` and ``Timestamp``. - - The ``Hardened Runtime`` and ``Timestamp`` options are incompatible with ad-hoc signing and will be ignored. - -.. [1] Leave ``Identity`` option empty to use ad-hoc signature. -.. [2] This option is visible only when exporting from a computer running macOS. +.. [1] This option is visible only when signing with Xcode codesign. +.. [2] These options are visible only when signing with PyOxidizer rcodesign. Notarization Options ~~~~~~~~~~~~~~~~~~~~ -+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Option | Description | -+====================+==============================================================================================================================================================================+ -| Enable | Enables automatic upload for notarization. | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Apple ID Name | Apple ID account name (email address) | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Apple ID Password | Apple ID app-specific password. See `Using app-specific passwords `__ to enable two-factor authentication and create app password. | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Apple Team ID | Team ID, if your Apple ID belongs to multiple teams | -+--------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -See `Notarizing macOS Software Before Distribution `__ for more info. ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Option | Description | ++====================+===================================================================================================================================================================================+ +| Notarization | Tool to use for notarization. | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Apple ID Name | Apple ID account name (email address). [3]_ | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Apple ID Password | Apple ID app-specific password. See `Using app-specific passwords `__ to enable two-factor authentication and create app password. [3]_ | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Apple Team ID | Team ID ("Organization Unit"), if your Apple ID belongs to multiple teams (optional). [3]_ | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| API UUID | Apple `App Store Connect `__ API issuer UUID. | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| API Key | Apple `App Store Connect `__ API key. | ++--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. note:: - Notarization is supported when exporting from a computer running macOS, these options are hidden on other platforms. + You should set either Apple ID Name/Password or App Store Connect API UUID/Key. + +.. [3] These options are visible only when notarizing with Xcode altool. + +See `Notarizing macOS Software Before Distribution `__ for more info. Entitlements ------------ @@ -111,11 +142,11 @@ See `Hardened Runtime