Skip to content

Commit bfa37c6

Browse files
authored
doc: update 12.x 2025.01 snapshot (#1447)
1 parent 7e844cd commit bfa37c6

File tree

13 files changed

+1187
-905
lines changed

13 files changed

+1187
-905
lines changed

www/docs/en/12.x-2025.01/config_ref/images.md

Lines changed: 49 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,11 @@ width | *Optional* <br/> Icon width in pixels
4545
height | *Optional* <br/> Icon height in pixels
4646
target | *Optional* <br/> {% cdv_platform electron %} <br/> Set target to supply unique icons for `app` and `installer`
4747

48-
The following configuration can be used to define a single default icon
49-
which will be used for all platforms.
50-
```xml
51-
<icon src="res/icon.png" />
52-
```
53-
For each platform, you can also define a pixel-perfect icon set to fit
54-
different screen resolutions.
55-
5648
## Android
5749

58-
Instead of using a single image for an icon, you can use two images (background and foreground) to create an **Adaptive Icon**. To use Adaptive Icons in Cordova, at minimum **Cordova CLI** 9.0.0 and **Cordova-Android** 8.0.0 is required.
50+
Android's **Adaptive Icons** feature enables you to create separate foreground and background layers for your App Icons. To use Adaptive Icons in Cordova, you need at least **Cordova CLI** 9.0.0 and **Cordova-Android** 8.0.0.
5951

60-
Android 13 has introduced themed icons which are monochrome images appended to the existing **Adaptive Icons**. To use Themed Icon in Cordova, at minimum **Cordova CLI** 12.0.0 and **Cordova-Android** 12.0.0 is required.
52+
With Android 13, Google introduced **Themed Icons**, which are monochrome variations of **Adaptive Icons** that integrate seamlessly with the system's color scheme. To use **Themed Icons** in Cordova, you'll need at least **Cordova CLI** 12.0.0 and **Cordova-Android** 12.0.0.
6153

6254
Attributes | Description
6355
--------------|--------------------------------------------------------------------------------
@@ -71,6 +63,7 @@ density | *Required* <br/> Specified icon density
7163
To use the adaptive icons the `background`, `foreground` and optionally `monochrome` attributes must be defined in place of the `src` attribute. The `src` attribute is not used for adaptive icons.
7264

7365
#### Adaptive Icon with Images:
66+
7467
```xml
7568
<platform name="android">
7669
<icon monochrome="res/icon/android/ldpi-monochrome.png" background="res/icon/android/ldpi-background.png" density="ldpi" foreground="res/icon/android/ldpi-foreground.png" />
@@ -85,6 +78,7 @@ To use the adaptive icons the `background`, `foreground` and optionally `monochr
8578
**Note:** In this example, the foreground image will also be used as the fallback icon for Android devices that do not support the adaptive icons. The fallback icon can be overridden by setting the src attribute.
8679

8780
#### Adaptive Icon with Vectors:
81+
8882
```xml
8983
<platform name="android">
9084
<icon monochrome="res/icon/android/ldpi-monochrome.png" background="res/icon/android/ldpi-background.xml" density="ldpi" foreground="res/icon/android/ldpi-foreground.xml" src="res/android/ldpi.png" />
@@ -99,6 +93,7 @@ To use the adaptive icons the `background`, `foreground` and optionally `monochr
9993
**Note:** In this example, the src attribute must be defined when then foreground attribute is defined with a vector or color.
10094

10195
#### Adaptive Icon with Colors:
96+
10297
Create a `res/values/colors.xml` resource file in your project directory to store the app's color definitions.
10398
```xml
10499
<?xml version="1.0" encoding="utf-8"?>
@@ -143,7 +138,8 @@ In the `config.xml`, we will add `resource-file` to copy the `colors.xml` into t
143138
</platform>
144139
```
145140

146-
### See Also
141+
**See Also:**
142+
147143
- [Android icon guide](https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive)
148144
- [Android Adaptive icons - User theming](https://developer.android.com/develop/ui/views/launch/icon_design_adaptive#user-theming)
149145
- [Android - Supporting multiple screens](https://developer.android.com/guide/practices/screens_support.html)
@@ -152,43 +148,54 @@ In the `config.xml`, we will add `resource-file` to copy the `colors.xml` into t
152148
Icons are not applicable to the Browser platform.
153149

154150
## iOS
151+
155152
```xml
156153
<platform name="ios">
157-
<!-- iOS 8.0+ -->
158-
<!-- iPhone 6 Plus -->
159-
<icon src="res/ios/icon-60@3x.png" width="180" height="180" />
160-
<!-- iOS 7.0+ -->
161-
<!-- iPhone / iPod Touch -->
162-
<icon src="res/ios/icon-60.png" width="60" height="60" />
163-
<icon src="res/ios/icon-60@2x.png" width="120" height="120" />
164-
<!-- iPad -->
165-
<icon src="res/ios/icon-76.png" width="76" height="76" />
166-
<icon src="res/ios/icon-76@2x.png" width="152" height="152" />
167-
<!-- Spotlight Icon -->
168-
<icon src="res/ios/icon-40.png" width="40" height="40" />
154+
<!-- Notifications on iPhone, iPad Pro, iPad, iPad mini -->
155+
<icon src="res/ios/icon-38@2x.png" width="76" height="76" />
156+
<icon src="res/ios/icon-38@3x.png" width="114" height="114" />
157+
158+
<!-- Settings on iPhone, iPad Pro, iPad, iPad mini -->
159+
<icon src="res/ios/icon-29@1x.png" width="29" height="29" />
160+
<icon src="res/ios/icon-29@2x.png" width="58" height="58" />
161+
<icon src="res/ios/icon-29@3x.png" width="87" height="87" />
162+
163+
<!-- Spotlight on iPhone, iPad Pro, iPad, iPad mini -->
164+
<icon src="res/ios/icon-40@1x.png" width="40" height="40" />
169165
<icon src="res/ios/icon-40@2x.png" width="80" height="80" />
170-
<!-- iOS 6.1 -->
171-
<!-- iPhone / iPod Touch -->
172-
<icon src="res/ios/icon.png" width="57" height="57" />
173-
<icon src="res/ios/icon@2x.png" width="114" height="114" />
174-
<!-- iPad -->
175-
<icon src="res/ios/icon-72.png" width="72" height="72" />
176-
<icon src="res/ios/icon-72@2x.png" width="144" height="144" />
177-
<!-- iPad Pro -->
178-
<icon src="res/ios/icon-167.png" width="167" height="167" />
179-
<!-- iPhone Spotlight and Settings Icon -->
180-
<icon src="res/ios/icon-small.png" width="29" height="29" />
181-
<icon src="res/ios/icon-small@2x.png" width="58" height="58" />
182-
<icon src="res/ios/icon-small@3x.png" width="87" height="87" />
183-
<!-- iPad Spotlight and Settings Icon -->
184-
<icon src="res/ios/icon-50.png" width="50" height="50" />
185-
<icon src="res/ios/icon-50@2x.png" width="100" height="100" />
186-
<!-- iTunes Marketing Image -->
166+
167+
<!-- Home Screen on iPad, iPad mini -->
168+
<icon src="res/ios/icon-76@2x.png" width="152" height="152" />
169+
170+
<!-- Home Screen on iPad Pro -->
171+
<icon src="res/ios/icon-83.5@2x.png" width="167" height="167" />
172+
173+
<!-- Home Screen on iPhone -->
174+
<icon src="res/ios/icon-60@1x.png" width="60" height="60" />
175+
<icon src="res/ios/icon-60@2x.png" width="120" height="120" />
176+
<icon src="res/ios/icon-60@3x.png" width="180" height="180" />
177+
178+
<!-- macOS app icons -->
179+
<icon src="res/ios/icon-16.png" width="16" height="16" />
180+
<icon src="res/ios/icon-32.png" width="32" height="32" />
181+
<icon src="res/ios/icon-64.png" width="64" height="64" />
182+
<icon src="res/ios/icon-128.png" width="128" height="128" />
183+
<icon src="res/ios/icon-256.png" width="256" height="256" />
184+
<icon src="res/ios/icon-512.png" width="512" height="512" />
185+
186+
<!-- App Store Icon and another macOS app icons -->
187187
<icon src="res/ios/icon-1024.png" width="1024" height="1024" />
188188
</platform>
189189
```
190-
### See Also
191-
- [App Icons on iPad and iPhone](https://developer.apple.com/library/content/qa/qa1686/_index.html)
190+
191+
**Notes:**
192+
193+
- Alpha channel is not supported for any iOS icons.
194+
195+
**References:**
196+
197+
- [Apple Developer - Configuring your app icon](https://developer.apple.com/documentation/xcode/configuring-your-app-icon/)
198+
- [Apple Developer - Human Interface Guidelines > App icons](https://developer.apple.com/design/human-interface-guidelines/app-icons)
192199

193200
[splashscreen_plugin]: ../reference/cordova-plugin-splashscreen/
194201

www/docs/en/12.x-2025.01/config_ref/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,12 +325,14 @@ android-compileSdkVersion<br/>{% cdv_vartype number %} {% cdv_platform android %
325325
android-buildToolsVersion<br/>{% cdv_vartype semver %} {% cdv_platform android %} | *Default: [Dependent on cordova-android Version][android-api-level-support]* <br/> Expects a full version string eg. "32.0.0". Changing this may also requires changing the PATH environment variable to find the proper build tools.<br/><br/>This preference is primarily for cordova development, for testing upcoming versions of the Android SDK. Changing this has a high risk of breaking builds as newer build tools frequently introduce breaking changes.
326326
GradleVersion<br/>{% cdv_vartype string %} {% cdv_platform android %} | *Default: [Dependent on cordova-android Version][android-api-level-support]* <br/> Sets the gradle wrapper version to use.<br/> <br/>This preference is primarily for cordova development, for testing upcoming versions of the Android SDK. Changing this has a high risk of breaking builds as newer build tools frequently introduce breaking changes.
327327
AndroidGradlePluginVersion<br/>{% cdv_vartype semver %} {% cdv_platform android %} | *Default: [Dependent on cordova-android Version][android-api-level-support]* <br/> Sets the Android Gradle Plugin version to use.<br/> <br/>This preference is primarily for cordova development, for testing upcoming versions of the Android SDK. Changing this has a high risk of breaking builds as newer build tools frequently introduce breaking changes.
328+
AndroidShowDeprecations<br />{% cdv_vartype boolean %} {% cdv_platform android %} | *Default: false* <br />Prints deprecation warnings for the android platform in the build output.<br /><br />This preference is primarily intended for cordova core and plugin development.
328329
AndroidXAppCompatVersion<br/>{% cdv_vartype semver %} {% cdv_platform android %} | *Default: [Dependent on cordova-android Version][android-api-level-support]* <br/> Overrides Android App Compat library version.
329330
AndroidXWebKitVersion<br/>{% cdv_vartype semver %} {% cdv_platform android %} | *Default: [Dependent on cordova-android Version][android-api-level-support]* <br/>Overrides Android WebKit library version.
330331
AppendUserAgent<br/>{% cdv_vartype string %} {% cdv_platform android %} {% cdv_platform ios %} | If set, the value will append to the end of old UserAgent of webview. When using with OverrideUserAgent, this value will be ignored.
331332
AutoHideSplashScreen<br/> {% cdv_vartype boolean %} {% cdv_platform android %} {% cdv_platform ios %} | *Default: true* <br/> Indicates whether to hide splash screen automatically or not. The splash screen is hidden after the amount of time specified in the `SplashScreenDelay` preference.
332333
BackgroundColor<br/>{% cdv_vartype string %} {% cdv_platform android %} {% cdv_platform ios %} | Sets the app's background color. Supports a four-byte hex value, with the first byte representing the alpha channel, and standard RGB values for the following three bytes.
333334
CordovaWebViewEngine<br/>{% cdv_vartype string %} {% cdv_platform ios %} | *Default: CDVWebViewEngine* <br/> This sets the WebView engine plugin to be used to render the host app. The plugin must conform to the CDVWebViewEngineProtocol protocol. The 'value' here should match the 'feature' name of the WebView engine plugin that is installed. This preference usually would be set by the WebView engine plugin that is installed, automatically.
335+
CrashRecoveryBehavior<br/>{% cdv_vartype string %} {% cdv_platform ios %} | *Default: refresh* <br/> Allowed values: refresh, reload <br/> Specifies the crash recovery behavior for the iOS web view. The `reload` option will cause the web view to reload the starting URL for the app, whereas `refresh` will attempt to restore the current URL state.
334336
DefaultVolumeStream<br/>{% cdv_vartype string %} {% cdv_platform android %} | *Default: default* <br/> Added in cordova-android 3.7.0, This preference sets which volume the hardware volume buttons link to. By default this is "call" for phones and "media" for tablets. Set this to "media" to have your app's volume buttons always change the media volume. Note that when using Cordova's media plugin, the volume buttons will dynamically change to controlling the media volume when any Media objects are active.
335337
DisallowOverscroll<br/>{% cdv_vartype boolean %} {% cdv_platform ios %} {% cdv_platform android %} | *Default: false* <br/> Set to **true** if you don't want the interface to display any feedback when users scroll past the beginning or end of content. On iOS, overscroll gestures cause content to bounce back to its original position. on Android, they produce a more subtle glowing effect along the top or bottom edge of the content. <br/>
336338
EnableViewportScale<br/>{% cdv_vartype boolean %} {% cdv_platform ios %} | *Default: false* <br/> Set to true to allow a viewport meta tag to either disable or restrict the range of user scaling, which is enabled by default. Place a viewport such as the following in the HTML to disable scaling and fit content flexibly within the rendering WebView: <br/> ```<meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no' />```

www/docs/en/12.x-2025.01/guide/appdev/allowlist/index.md

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ By default navigations are only allowed to `file://` URLs. To allow others URLs,
8585
to the host, or as a suffix to the path -->
8686
<allow-navigation href="*://*.example.com/*" />
8787

88-
<!--
88+
<!--
8989
A wildcard can be used to allow the entire network, over HTTP and HTTPS.
9090
This is *NOT RECOMMENDED*
9191
-->
@@ -141,10 +141,54 @@ Note: `allow-navigation` takes precedence over `allow-intent`. Allowing navigati
141141

142142
## Content Security Policy (CSP)
143143

144-
Controls which network requests (images, XHRs, etc) are allowed to be made (via webview directly).
144+
The [**Content Security Policy (CSP)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) `<meta>` tag is a very powerful mechanism that allows you to control trusted sources of content. You can restrict various content types and domains from which content can be loaded from. Unsafe and risky HTML and JavaScript can also be disabled to further increase the security of your app.
145+
146+
The CSP `<meta>` tag should be placed in your app's index.html file.
145147

146148
On Android and iOS, the network request allow list (see above) is not able to filter all types of requests (e.g. `<video>` & WebSockets are not blocked). So, in addition to the allow list, you should use a [Content Security Policy](http://content-security-policy.com/) `<meta>` tag on all of your pages.
147149

150+
> **Note**: If your app has multiple HTML files and navigates between them using the browser's navigation features, you should include the CSP in each file. If your app is a single-page application, you only need to include the CSP on `index.html`.
151+
152+
### Cordova's Default Template Content Security Policy
153+
154+
The CSP that Cordova's default template uses looks like this (indented for clarity):
155+
156+
```html
157+
<meta http-equiv="Content-Security-Policy"
158+
content="default-src 'self' data: https://ssl.gstatic.com 'unsafe-eval';
159+
style-src 'self' 'unsafe-inline';
160+
media-src *;
161+
img-src 'self' data: content:;">
162+
```
163+
164+
The above snippet enforces the following:
165+
166+
**Default Source (`default-src`):**
167+
168+
As a fallback, all other network requests are restricted to:
169+
170+
* The same origin as the app itself (`'self'`).
171+
* Resources loaded via `data:` URIs.
172+
* Resources from the specified external domain `https://ssl.gstatic.com`.
173+
* JavaScript methods such as `eval()` (and similar) are permitted with `'unsafe-eval'`.
174+
175+
**Style Source (`style-src`):**
176+
177+
* Styles can only be loaded from the same origin (`'self'`).
178+
* Inline styles (`'unsafe-inline'`) are also allowed, meaning styles can be directly applied using the `style` attribute on elements or within `<style>` tags.
179+
180+
**Media Source (`media-src`):**
181+
182+
* Media can be loaded from any source.
183+
184+
**Image Source (`img-src`):**
185+
186+
* Images can only be loaded from the same origin (`'self'`).
187+
* Allows loading images from `data:` URIs.
188+
* Allows loading images from `content:` URIs, typically used within the Android ecosystem.
189+
190+
### Example Content Security Policy Declarations
191+
148192
Here are some example CSP declarations for your `.html` pages:
149193

150194
```html
@@ -159,7 +203,7 @@ Here are some example CSP declarations for your `.html` pages:
159203
<!-- Allow everything but only from the same origin and foo.com -->
160204
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">
161205

162-
<!-- This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that
206+
<!-- This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that
163207
* CSS only from the same origin and inline styles,
164208
* scripts only from the same origin and inline styles, and eval()
165209
-->
@@ -172,6 +216,14 @@ Here are some example CSP declarations for your `.html` pages:
172216
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">
173217
```
174218

219+
You should fully understand the CSP tag and the various directives that can be specified. More documentation is available at [Content Security Policy](https://web.dev/articles/csp) (via Google Developers) and Mozilla's [Content Security Policy (CSP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) article.
220+
221+
> **Tip**: If you're using web sockets, include `ws:` (`wss:` if using SSL) in the `connect-src` directive.
222+
223+
### Debugging Content Security Policy
224+
225+
When adding a CSP to your app, it's likely you'll encounter some issues. Fortunately, both Google Chrome's Developer Tools and Safari's Web Inspector make it very clear when a CSP violation occurs. Watch the console for any violation messages, which are typically quite detailed, specifying exactly which resource was blocked and why. Address each violation as they appear to ensure your CSP is properly configured.
226+
175227
## Other Notes
176228

177229
[Application Transport Security (ATS)](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33) is new in iOS 9 (Xcode 7). This new feature acts as an allow list for your app. Cordova CLI will automatically convert the `<access>` and `<allow-navigation>` tags to the appropriate ATS directives.

0 commit comments

Comments
 (0)