Skip to content
Snippets Groups Projects
Commit cb1f828f authored by Kateryna Kostiuk's avatar Kateryna Kostiuk Committed by Kateryna Kostiuk
Browse files

macOS: prepare for the App Store

- add necessary entitlements
- add a script for deployment

Change-Id: Ie9e33c78ab56ed44b9e553fb2dbeb14f7293731a
parent db5b8e09
No related branches found
No related tags found
No related merge requests found
...@@ -704,33 +704,35 @@ else() ...@@ -704,33 +704,35 @@ else()
qt_add_translation(QM_FILES ${TS_FILES}) qt_add_translation(QM_FILES ${TS_FILES})
target_sources(${PROJECT_NAME} PRIVATE ${QM_FILES}) target_sources(${PROJECT_NAME} PRIVATE ${QM_FILES})
endif() endif()
set_target_properties(
${PROJECT_NAME} set_target_properties(${PROJECT_NAME} PROPERTIES
PROPERTIES MACOSX_BUNDLE TRUE
MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist"
MACOSX_BUNDLE_INFO_PLIST MACOSX_BUNDLE_EXECUTABLE_NAME "${PROJ_NAME}"
"${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist" MACOSX_BUNDLE_ICON_FILE "jami.icns"
MACOSX_BUNDLE_EXECUTABLE_NAME "${PROJ_NAME}" MACOSX_BUNDLE_GUI_IDENTIFIER "${BUNDLE_ID}"
MACOSX_BUNDLE_ICON_FILE "jami.icns" MACOSX_BUNDLE_SHORT_VERSION_STRING "${JAMI_VERSION}"
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUNDLE_ID}" MACOSX_BUNDLE_BUNDLE_VERSION "${JAMI_BUILD}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${JAMI_VERSION}" MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}")
MACOSX_BUNDLE_BUNDLE_VERSION "${JAMI_BUILD}" if(APPSTORE)
MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}" message(STATUS "app store version")
SPARKLE_URL "${SPARKLE_URL}" set_target_properties(${PROJECT_NAME} PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/appstore/Jami.entitlements")
"${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/Jami.entitlements" else()
XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE) set_target_properties(${PROJECT_NAME} PROPERTIES
if(DEPLOY) SPARKLE_URL "${SPARKLE_URL}"
add_custom_command( XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/resources/entitlements/Jami.entitlements"
TARGET ${PROJECT_NAME} XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE)
POST_BUILD endif()
COMMAND ${CMAKE_COMMAND} -DQML_SRC_DIR=${APP_SRC_DIR} if(DEPLOY)
-DMAC_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
-DEXE_NAME="${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app" COMMAND ${CMAKE_COMMAND} -DQML_SRC_DIR=${SRC_DIR}
-DSPARKLE_PATH=${SPARKLE_FRAMEWORK} -DMAC_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin
-DENABLE_SPARKLE=${ENABLE_SPARKLE} -DEXE_NAME="${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app"
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos_qt_deploy.cmake) -DSPARKLE_PATH=${SPARKLE_FRAMEWORK}
endif() -DENABLE_SPARKLE=${ENABLE_SPARKLE}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos_qt_deploy.cmake)
endif()
endif() endif()
qt_import_qml_plugins(${PROJECT_NAME}) qt_import_qml_plugins(${PROJECT_NAME})
......
<?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/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.device.microphone</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
</dict>
</plist>
#!/bin/bash
echo ""
cd build-local
echo "cloning certificates"
git clone $CERTIFICATES_REPOSITORY
echo "prepare keychain"
security create-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_NAME > /dev/null 2>&1
security unlock-keychain -p $KEYCHAIN_PASSWORD $KEYCHAIN_NAME > /dev/null 2>&1
security list-keychains -s $KEYCHAIN_NAME > /dev/null 2>&1
security set-key-partition-list -S apple-tool:,apple:,productbuild: -s -k $KEYCHAIN_PASSWORD $KEYCHAIN_NAME > /dev/null 2>&1
echo "import certificates"
security import certificates/certificates/distribution/Certificates.p12 -k $KEYCHAIN_PATH -P $CERTIFICATES_PASSWORD -T /usr/bin/codesign -T /usr/bin/productbuild
DELIVER_PASSWORD=$APPLE_PASSWORD fastlane sigh --app_identifier $BUNDLE_ID --username $APPLE_ACCOUNT --readonly true --platform macos --team_id $TEAM_ID
security set-key-partition-list -S apple-tool:,apple:,productbuild: -s -k $KEYCHAIN_PASSWORD $KEYCHAIN_NAME > /dev/null 2>&1
echo "start signing"
$MACDEPLOYQT_PATH ./Jami.app -no-strip -appstore-compliant -codesign="${APP_CERTIFICATE}"
echo "remove web engine"
rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuickDelegatesQml.framework
rm -rf Jami.app/Contents/Frameworks/QtWebEngineQuick.framework
rm -rf Jami.app/Contents/Frameworks/QtWebEngineCore.framework
rm -rf Jami.app/Contents/Frameworks/QtWebChannel.framework
codesign --force --sign "${APP_CERTIFICATE}" --entitlements ../resources/entitlements/appstore/Jami.entitlements Jami.app
codesign --verify Jami.app
echo "create .pkg"
productbuild --component Jami.app/ /Applications --sign "${INSTALLER_CERTIFICATE}" --product Jami.app/Contents/Info.plist Jami.pkg
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --validate-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $ALTOOL_PASSWORD
echo "start deploying"
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool --upload-app --type osx -f Jami.pkg -u $APPLE_ACCOUNT --password $ALTOOL_PASSWORD
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment