What platform are you building for?
iOS
What framework are you building with?
Cordova
What is your build ID?
5e8834ca-d48e-4506-b508-3ce14712b9cd
What is your error message?
Deployment target too low. Your app targets iOS 11.0. Starting in April 2027, iOS apps must target 15.0 or later to be uploaded to App Store Connect or submitted for distribution. (90068)
Invalid deployment target. Your app targets iOS 11.0. iOS apps must target iOS version from 13 to 27.2 to be uploaded to App Store Connect or submitted for distribution. (90068)
n/a (ID: OPQP32QXWSDEMBEDKSMVU4K42E)
Please describe the issue:
My config.xml contains the line:
<engine name="ios" spec="7.1.1" />
This is the only line that seems to imply an iOS version. I can’t find any documentation that relates the iOS spec to iOS version. Or is there another line I need in config.xml to specify the minimum iOS version?
You should probably be targetting a more modern iOS engine - for example:
<engine name="ios" spec="8.1.1" />
If that doesn’t resolve the issue, then you may need to start looking at some of your plugins. They can often cause these sort of errors. Let me know.
P.S. This forum uses markdown, so if you include things that look like HTML tags (or really any code), you should wrap it in backticks, like so:
`<engine name="ios" spec="8.1.1" />`
Thanks. I’m not intentionally targetting older iOS engines. I just couldn’t find any documentation that relates the “engine” parameter to the target iOS version. I’ll try this and see if it resolves the issue
Much appreciated
Unfortunately my build has failed with the only change being the engine specification from 7.1.1 to 8.1.1. I con’t figure out from the log what the problem is. My build ID is d65d88e4-5036-418e-82ed-7bf7f5db8f36
Looking at your log, it appears that cordova-plugin-document-viewer is the problem. It’s using old deprecated APIs (deprecated since iOS 12). Is there an update or a replacement?
Thanks, I’ll look into that. How you find anything in that tangle of mumbo-jumbo is amazing!
That’s fixed the issue. It turns out that I wasn’t even using that plugin, I’d already replaced it with the recommended alternative. However, I’m still getting a message that the iOS version that I’m targeting id too low, although only a warning this time, but apparently it can’t be distributed. Here’s the warning:
Deployment target too low. Your app targets iOS 13.0. Starting in April 2027, iOS apps must target 15.0 or later to be uploaded to App Store Connect or submitted for distribution. (90068)
So what engine spec parameter do I need to target iOS 15 and above? And is this documented anywhere?
That’s the latest engine. Can you share a copy of your config.xml? I suspect it’s either another outdated plug-in or a setting there.
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.lionridge.LRSat" ios-CFBundleVersion="3.11" version="3.11"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0"
xmlns:gap="http://phonegap.com/ns/1.0"
android-packageName="com.lionridge.lrsat">
<name>LR-Sat</name>
<description>
Simplified version of LionRidge for small format devices - this version deals with Satisfaction solutions only
</description>
<author email="brian.preece@lion-ridge.com" href="">
Brian Preece, LionRidge Ltd
</author>
<engine name="ios" spec="8.1.1" />
<content src="index.html" />
<access origin="https://lion-ridge.net" />
<allow-intent href="https://lion-ridge.net/*" />
<access origin="http://www.lion-ridge.info/*" />
<allow-intent href="http://www.lion-ridge.info/*" />
<!-- <allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" /> -->
<icon src="icon.png" />
<splash src="splashscreen.png" />
<preference name="Orientation" value="portrait" />
<config-file target="AndroidManifest.xml" parent="/*" mode="merge">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<!--<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />-->
</config-file>
<platform name="android">
<engine name="android" spec="15.1.0" />
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
<preference name="AndroidXEnabled" value="true" />
<preference name="android-targetSdkVersion" value="36" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="android-build-tool" value="gradle" />
<allow-intent href="market:*" />
<preference name="splashScreenDelay" value="1000" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="resources/splashTemplate.png" />
<preference name="AndroidWindowSplashScreenBackground" value="#000000" />
</platform>
<platform name="ios">
<!--<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />-->
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
<preference name="target-device" value="handset" />
<icon height="20" src="www/icons/Icon20x20.png" width="20" />
<icon height="40" src="www/icons/Icon40x40.png" width="40" />
<icon height="180" src="www/icons/Icon180x180.png" width="180" />
<icon height="80" src="www/icons/Logo_80x80.png" width="80" />
<icon height="120" src="www/icons/Icon120x120.png" width="120" />
<icon height="1024" src="www/icons/Logo_1024x1024.png" width="1024" />
<splash height="2436" src="www/icons/SplashScreen1125x2436.png" width="1125" />
<splash height="1136" src="www/icons/SplashScreen640x1136.png" width="640" />
<splash height="1334" src="www/icons/SplashScreen750x1334.png" width="750" />
<splash height="2208" src="www/icons/SplashScreen1242x2208.png" width="1242" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<!-- <edit-config target="NSLocationAlwaysUsageDescription" file="*-Info.plist" mode="overwrite">
<string>Location not used by LionRidge</string>
</edit-config>
<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="overwrite">
<string>Location not used by LionRidge</string>
</edit-config>-->
<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="overwrite">
<string>Camera only used for bar code reading when selecting an alternate server</string>
</edit-config>
<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="overwrite">
<string>Photo library not used by LionRidge</string>
</edit-config>
</platform>
<!--<plugin name="cordova-plugin-camera">
<variable name="CAMERA_USAGE_DESCRIPTION" value="Used for bar code scanning only" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="Not used" />
</plugin>-->
<plugin name="cordova-plugin-dialogs">
<variable name="CAMERA_USAGE_DESCRIPTION" value="Used for bar code scanning only" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="Not used" />
</plugin>
<plugin name="cordova-plugin-file">
</plugin>
<!-- <plugin name="cordova-plugin-geolocation">
<variable name="GEOLOCATION_USAGE_DESCRIPTION" value="Not used" />
</plugin>-->
<plugin name="phonegap-plugin-barcodescanner-android12" />
<plugin name="cordova-plugin-globalization">
</plugin>
<plugin name="cordova-plugin-inappbrowser">
</plugin>
<plugin name="cordova-plugin-splashscreen">
</plugin>
<plugin name="cordova-plugin-statusbar">
</plugin>
<plugin name="cordova-plugin-device">
</plugin>
<plugin name="cordova-plugin-vibration">
</plugin>
<!-- <plugin name="cordova-plugin-file-opener2">
</plugin>-->
<!-- <plugin name="cordova-plugin-document-viewer">
</plugin>-->
<plugin name="cordova-android-support-gradle-release">
<!--<variable name="ANDROID_SUPPORT_VERSION" value="6.5" />-->
</plugin>
<plugin name="cordova-plugin-androidx-adapter" />
<access origin="*" />
<access origin="content:///*"/>
<allow-intent href="*" />
<allow-navigation href="*" />
<allow-navigation href="file:*" />
</widget>
Please try setting a preference for your deployment target:
<preference name="deployment-target" value="15.0" />
This is documented here: Config.xml API - Apache Cordova
This may cause another error - it’s possible another plug-in is setting this lower and will fail to compile if you set it yourself. Let me know what you find.
Thanks, that seems to have sorted it - uploaded to App Store Connect fine this time.
Your help is much appreciated