diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 6f6cf5fee5..7f07a56945 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -4451,6 +4451,7 @@ CODE_SIGN_ENTITLEMENTS = "OMaps-Debug.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 9Z6432XD7L; "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = MetalContextFactory.mm; @@ -4460,6 +4461,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 2021.06.20; OTHER_SWIFT_FLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = app.organicmaps.debug; PROVISIONING_PROFILE_SPECIFIER = "CarPlay Debug"; @@ -4472,6 +4474,7 @@ CODE_SIGN_ENTITLEMENTS = "OMaps-Release.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 0; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 9Z6432XD7L; "EXCLUDED_SOURCE_FILE_NAMES[sdk=iphonesimulator*]" = MetalContextFactory.mm; @@ -4481,6 +4484,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 2021.06.20; OTHER_SWIFT_FLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = app.organicmaps; PROVISIONING_PROFILE_SPECIFIER = "CarPlay Release"; diff --git a/iphone/Maps/OMaps.plist b/iphone/Maps/OMaps.plist index 394fb2fd18..1b7dc88141 100644 --- a/iphone/Maps/OMaps.plist +++ b/iphone/Maps/OMaps.plist @@ -2,8 +2,6 @@ - ITSAppUsesNonExemptEncryption - CFBundleDevelopmentRegion en CFBundleDisplayName @@ -56,7 +54,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - ${CURRENT_PROJECT_VERSION} + $(MARKETING_VERSION) CFBundleSignature ???? CFBundleURLTypes @@ -76,7 +74,9 @@ CFBundleVersion - 0 + $(CURRENT_PROJECT_VERSION) + ITSAppUsesNonExemptEncryption + LSRequiresIPhoneOS LSSupportsOpeningDocumentsInPlace diff --git a/iphone/upload_to_appstore.sh b/iphone/upload_to_appstore.sh new file mode 100755 index 0000000000..4ff22be59b --- /dev/null +++ b/iphone/upload_to_appstore.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +# Archives and uploads the release into the AppStore. +# Assumes that all certificates and CarPlay provisioning profiles are properly set up in XCode. + +set -euxo pipefail + +SCRIPT_DIR="$( cd "$(dirname "$0")" && pwd -P )" +cd "$SCRIPT_DIR/.." +./configure.sh git@github.com:organicmaps/organicmaps-keys +cd "$SCRIPT_DIR" + +# Generate version numbers. +DATE_OF_LAST_COMMIT=$(git log -1 --date=format:%Y-%m-%d --pretty=format:%cd) +NUMBER_OF_COMMITS_ON_THAT_DAY=$(git rev-list --count --after="${DATE_OF_LAST_COMMIT}T00:00:00" HEAD) +# Replace '-' with '.' +IOS_VERSION="${DATE_OF_LAST_COMMIT//-/.}" + +BUILD_DIR="$SCRIPT_DIR/build" +mkdir -p "$BUILD_DIR" +ARCHIVE_PATH="$BUILD_DIR/OM-$IOS_VERSION-$NUMBER_OF_COMMITS_ON_THAT_DAY.xcarchive" +IPA_PATH="$BUILD_DIR" +rm -rf "$ARCHIVE_PATH" + + +# Build release archive. +xcodebuild archive \ + -workspace "$SCRIPT_DIR/../xcode/omim.xcworkspace" \ + -configuration Release \ + -scheme OMaps \ + -archivePath "$ARCHIVE_PATH" \ + MARKETING_VERSION="$IOS_VERSION" \ + CURRENT_PROJECT_VERSION="$NUMBER_OF_COMMITS_ON_THAT_DAY" + + +# Create a plist with upload options. +PLIST="$BUILD_DIR/export.plist" +cat > "$PLIST" < + + + + destination + upload + method + app-store + teamID + 9Z6432XD7L + provisioningProfiles + + app.organicmaps + CarPlay AppStore + + + +EOM + +# Upload build to the AppStore. +xcodebuild -exportArchive \ + -archivePath "$ARCHIVE_PATH" \ + -exportOptionsPlist "$PLIST" + + +# Tag and push on successful upload. +# Note0: Requires write access to the repo. +# Note1: Remote 'origin' should be organicmaps git repo. +TAG="$IOS_VERSION-$NUMBER_OF_COMMITS_ON_THAT_DAY" +git tag "$TAG" +git push origin "$TAG" diff --git a/xcode/common.xcconfig b/xcode/common.xcconfig index b27c859479..f6592c1338 100644 --- a/xcode/common.xcconfig +++ b/xcode/common.xcconfig @@ -1,5 +1,3 @@ -CURRENT_PROJECT_VERSION = 2021.06.20 - // Paths OMIM_ROOT = $(PROJECT_DIR)/../.. QT_PATH = /usr/local/opt/qt5