diff --git a/.gitignore b/.gitignore index e7e7fbaffef38057741d56ec413c839d3bfd7841..d06a3278a9fa11b7f62fdcab8e696e1fafcac67b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,9 @@ gstreamer-1.0-android* *.autosave .settings/ +# iOS Generated files +ios/iOSForAppStore-Info.plist + # Generated files moc_* ui_* diff --git a/build_ios.sh b/build_ios.sh new file mode 100755 index 0000000000000000000000000000000000000000..eb5220b099e25cdc6ff93795fd43d49ffc2e5b05 --- /dev/null +++ b/build_ios.sh @@ -0,0 +1,16 @@ +#!/bin/bash +if [ ! -d /Volumes/RAMDisk ] ; then + echo 'RAM Disk not found' + echo 'Only used for App Store builds. It will not work on your computer.' + exit 1 +fi +#-- Set to my local installation +QMAKE=/Applications/Qt/5.5/ios/bin/qmake +#-- Using Travis variables as this will eventually live there +SHADOW_BUILD_DIR=/Volumes/RAMDisk/build-qgroundcontrol-iOS-Release +TRAVIS_BUILD_DIR=/Users/gus/github/work/qgroundcontrol +#-- Build it +mkdir -p ${SHADOW_BUILD_DIR} && +cd ${SHADOW_BUILD_DIR} && +${QMAKE} -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release CONFIG+=ForAppStore && +xcodebuild -configuration Release -xcconfig ${TRAVIS_BUILD_DIR}/ios/qgroundcontrol_appstore.xcconfig diff --git a/ios/AppIcon83.5x83.5@2x~ipad.png b/ios/AppIcon83.5x83.5@2x~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..ba36ffede5124ffa0adbb40d1dfff032df874f3c Binary files /dev/null and b/ios/AppIcon83.5x83.5@2x~ipad.png differ diff --git a/ios/iOS-Info.plist b/ios/iOS-Info.plist index 82db8a4b994f85f6633ea07afdca46713df08c2f..bdb417a9eab5373f51b72a9eec8907cc861729c7 100644 --- a/ios/iOS-Info.plist +++ b/ios/iOS-Info.plist @@ -6,26 +6,24 @@ QGroundControl CFBundleExecutable qgroundcontrol - CFBundleGetInfoString - Created by Qt/QMake + NSHumanReadableCopyright + Open Source Flight Systems GmbH - Internal Build CFBundleIconFile CFBundleIdentifier - org.mavlink.qgroundcontrol + org.QGroundControl.qgc CFBundleName QGroundControl CFBundlePackageType APPL CFBundleShortVersionString - #.#.# + 0.0.0 CFBundleSignature ???? CFBundleVersion - ### + 1 LSRequiresIPhoneOS - NOTE - This file was generated by Qt/QMake. UILaunchStoryboardName QGCLaunchScreen UIRequiresFullScreen @@ -80,6 +78,7 @@ AppIcon72x72@2x~ipad.png AppIcon76x76~ipad.png AppIcon76x76@2x~ipad.png + AppIcon83.5x83.5@2x~ipad.png diff --git a/ios/iOSForAppStore-Info.plist b/ios/iOSForAppStore-Info-Source.plist similarity index 91% rename from ios/iOSForAppStore-Info.plist rename to ios/iOSForAppStore-Info-Source.plist index 0312e0bbf60b3933b1198586932674747df649a5..5a637b71f1dc98f10a301e2a9155e7feac6072be 100644 --- a/ios/iOSForAppStore-Info.plist +++ b/ios/iOSForAppStore-Info-Source.plist @@ -1,48 +1,15 @@ - + CFBundleDisplayName QGroundControl CFBundleExecutable qgroundcontrol - CFBundleGetInfoString - Created by Qt/QMake + NSHumanReadableCopyright + Open Source Flight Systems GmbH CFBundleIconFile - CFBundleIdentifier - com.grubba.qgroundcontrol - CFBundleName - QGroundControl - CFBundlePackageType - APPL - CFBundleShortVersionString - #.#.# - CFBundleSignature - ???? - CFBundleVersion - ### - LSRequiresIPhoneOS - - NOTE - This file was generated by Qt/QMake. - UILaunchStoryboardName - QGCLaunchScreen - UIRequiresFullScreen - - CFBundleInfoDictionaryVersion - 6.0 - ForAppStore - Yes - NSLocationUsageDescription - Ground Station Location - NSLocationWhenInUseUsageDescription - Ground Station Location - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - CFBundleIcons CFBundlePrimaryIcon @@ -80,8 +47,40 @@ AppIcon72x72@2x~ipad.png AppIcon76x76~ipad.png AppIcon76x76@2x~ipad.png + AppIcon83.5x83.5@2x~ipad.png + CFBundleIdentifier + org.QGroundControl.qgc + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + QGroundControl + CFBundlePackageType + APPL + CFBundleShortVersionString + ###VERSION### + CFBundleSignature + ???? + CFBundleVersion + ###BUILD### + ForAppStore + Yes + LSRequiresIPhoneOS + + NSLocationUsageDescription + Ground Station Location + NSLocationWhenInUseUsageDescription + Ground Station Location + UILaunchStoryboardName + QGCLaunchScreen + UIRequiresFullScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + diff --git a/ios/qgroundcontrol.xcconfig b/ios/qgroundcontrol.xcconfig new file mode 100644 index 0000000000000000000000000000000000000000..646c6ddd0b12f321763673538dd9d4aec6502ed6 --- /dev/null +++ b/ios/qgroundcontrol.xcconfig @@ -0,0 +1,17 @@ +CODE_SIGN_IDENTITY = ""; +CODE_SIGNING_REQUIRED = NO; +CLANG_WARN_BOOL_CONVERSION = YES; +CLANG_WARN_CONSTANT_CONVERSION = YES; +CLANG_WARN_EMPTY_BODY = YES; +CLANG_WARN_ENUM_CONVERSION = YES; +CLANG_WARN_INT_CONVERSION = YES; +CLANG_WARN_UNREACHABLE_CODE = YES; +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; +ENABLE_STRICT_OBJC_MSGSEND = YES; +GCC_NO_COMMON_BLOCKS = YES; +GCC_WARN_64_TO_32_BIT_CONVERSION = YES; +GCC_WARN_ABOUT_RETURN_TYPE = YES; +GCC_WARN_UNDECLARED_SELECTOR = YES; +GCC_WARN_UNINITIALIZED_AUTOS = YES; +GCC_WARN_UNUSED_FUNCTION = YES; +GCC_WARN_UNUSED_VARIABLE = YES; diff --git a/ios/qgroundcontrol_appstore.xcconfig b/ios/qgroundcontrol_appstore.xcconfig new file mode 100644 index 0000000000000000000000000000000000000000..621a2455c1053a706b0687b505f99256ceaa3cb4 --- /dev/null +++ b/ios/qgroundcontrol_appstore.xcconfig @@ -0,0 +1,17 @@ +CODE_SIGN_IDENTITY = "iPhone Distribution"; +PROVISIONING_PROFILE = f22bae36-10c2-4fd8-b6f1-c83e47765614; +CLANG_WARN_BOOL_CONVERSION = YES; +CLANG_WARN_CONSTANT_CONVERSION = YES; +CLANG_WARN_EMPTY_BODY = YES; +CLANG_WARN_ENUM_CONVERSION = YES; +CLANG_WARN_INT_CONVERSION = YES; +CLANG_WARN_UNREACHABLE_CODE = YES; +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; +ENABLE_STRICT_OBJC_MSGSEND = YES; +GCC_NO_COMMON_BLOCKS = YES; +GCC_WARN_64_TO_32_BIT_CONVERSION = YES; +GCC_WARN_ABOUT_RETURN_TYPE = YES; +GCC_WARN_UNDECLARED_SELECTOR = YES; +GCC_WARN_UNINITIALIZED_AUTOS = YES; +GCC_WARN_UNUSED_FUNCTION = YES; +GCC_WARN_UNUSED_VARIABLE = YES; diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index bb9a53c94416872254d4309d7e855a5585b6e415..fd8501cb9efecb43568262e6ed34727385d250fb 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -117,6 +117,12 @@ iOSBuild { #-- Info.plist (need an "official" one for the App Store) ForAppStore { message(App Store Build) + #-- Create official, versioned Info.plist + APP_STORE = $$system(cd $${BASEDIR} && $${BASEDIR}/tools/update_ios_version.sh $${BASEDIR}/ios/iOSForAppStore-Info-Source.plist $${BASEDIR}/ios/iOSForAppStore-Info.plist) + APP_ERROR = $$find(APP_STORE, "Error") + count(APP_ERROR, 1) { + error("Error building .plist file. 'ForAppStore' builds are only possible through the official build system.") + } QMAKE_INFO_PLIST = $${BASEDIR}/ios/iOSForAppStore-Info.plist OTHER_FILES += $${BASEDIR}/ios/iOSForAppStore-Info.plist } else { diff --git a/src/audio/QGCAudioWorker_iOS.mm b/src/audio/QGCAudioWorker_iOS.mm index b95092676fcd6744609d4f5ac541e198ea59b45d..1d7f7977dd9612e57cb658e15a63e1f90a955a7c 100644 --- a/src/audio/QGCAudioWorker_iOS.mm +++ b/src/audio/QGCAudioWorker_iOS.mm @@ -54,7 +54,7 @@ void SpeakIOS::speak(QString msg) AVSpeechUtterance *utterance = [[[AVSpeechUtterance alloc] initWithString: msg_ns] autorelease]; AVSpeechSynthesisVoice* currentVoice = [AVSpeechSynthesisVoice voiceWithLanguage:[AVSpeechSynthesisVoice currentLanguageCode]]; utterance.voice = currentVoice; - //utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; + utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; utterance.rate = 0.5; [_synth speakUtterance:utterance]; } diff --git a/src/ui/MainWindowInner.qml b/src/ui/MainWindowInner.qml index 0c3431c6e29362ae463af2e469bd462f8fece7b1..04e6d989739346350f9990274c3e278037c42666 100644 --- a/src/ui/MainWindowInner.qml +++ b/src/ui/MainWindowInner.qml @@ -267,7 +267,6 @@ Item { z: QGroundControl.zOrderTopMost + 100 active: visible onVisibleChanged: { - console.log("Visible: " + visible) if(!visible) { source = "" } diff --git a/tools/update_ios_version.sh b/tools/update_ios_version.sh new file mode 100755 index 0000000000000000000000000000000000000000..3d5b79a7e456bbdf96cc3828f435645460f1e529 --- /dev/null +++ b/tools/update_ios_version.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# this requires `master` in the git tree +# travis-ci branch builds are unable to set the version properly + +PLIST_FILE_SRC=$1 +PLIST_FILE_DST=$2 + +BUILD_CODE=`git rev-list master --first-parent --count` +VERSION_CODE=`git describe --always --tags | sed -e 's/[^0-9.]*\([0-9.]*\).*/\1/'` + +if [ -z "$BUILD_CODE" -o -z "$VERSION_CODE" ]; then + echo "Error: Version and/or build empty." + exit 1 # Cause the build to fail +else + echo "Version: ${VERSION_CODE}" + echo "Build: ${BUILD_CODE}" +fi + +sed -e "s/\###BUILD###/${BUILD_CODE}/" -e "s/\###VERSION###/${VERSION_CODE}/" $PLIST_FILE_SRC > $PLIST_FILE_DST