Skip to content

Commit 0e6f197

Browse files
ajwfrostmarchbold
authored andcommitted
Updates to the AIR App Descriptor format for AIR SDK 51.3
1 parent 8368aee commit 0e6f197

File tree

4 files changed

+109
-0
lines changed

4 files changed

+109
-0
lines changed

docs/building/application-descriptor-files/elements/android.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,3 +349,26 @@ For example:
349349
</manifestPlaceholder>
350350
</android>
351351
```
352+
353+
354+
### `asyncStartup`
355+
356+
Available: 51.3.1.1
357+
358+
An asynchronous startup mechanism for the Android AIR runtime was introduced in version 51.2.2.4 to address a slow start-up metric from the "Android Vitals" dashboard. However,
359+
this appears to have had a side-effect for some applications that need the bootstrap mechanism to be completed within the "onCreate" Android activity call. This setting has
360+
been added so that the default behaviour (`true`) can be overridden to turn off the asynchronous elements of the Android bootstrapping.
361+
362+
As well as removing the deliberate delay intended to improve the start-up metric, this also means that the application does not wait in case the Adobe Scout settings have not
363+
yet been retrieved from the helper service (when configured by the Adobe Scout mobile helper application). This could mean that Scout connectivity is not consistent; a mechanism
364+
to address this should be added into a later 51.3 release.
365+
366+
367+
### `useCamera2`
368+
369+
Available: 51.3.1.1
370+
371+
An update was made in the Android runtime classes to use the `android.hardware.camera2` package when an AIR application requests a `flash.media.Camera` object. This has been
372+
introduced in 51.3 but has been made optional, because an issue in the supported formats provided by Android means that the frame retrieval may not be efficient, resulting in
373+
performance issues or a low frame rate. To enable the use of `camera2`, this setting will need to be set to `true`.
374+

docs/building/application-descriptor-files/elements/application.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ The `application` element can also contain other elements that are described fur
469469
- [`android`](android.md)
470470
- [`macOS`](macOS.md)
471471
- [`windows`](windows.md)
472+
- [`systemConfig`](systemConfig.md)
472473

473474

474475
## Localisation
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: systemConfig
3+
sidebar_position: 9
4+
---
5+
6+
The `systemConfig` element provides access to a number of generic settings that can adjust the underlying behaviour of the ActionScript virtual machine within the AIR runtime.
7+
The VM is based upon the open source `avmplus` component, available at https://github.com/adobe/avmplus/tree/master, and the below descriptions might refer to this and to code
8+
or documentation associated with it such as the [GC Policy](https://github.com/adobe/avmplus/blob/master/doc/mmgc/policy.txt).
9+
10+
All of the elements are optional with the default values mentioned in the descriptions.
11+
12+
13+
## Elements
14+
15+
### `stackOverflowChecks`
16+
17+
Available: 51.3.1.1
18+
19+
Determines whether or not the JIT compiler generates checks for stack overflows when entering an AS3 function. Normally/historically these checks are made to ensure that
20+
the application does not use too much stack space and allows an application to receive and handle a `StackOverflowError` to avoid the application aborting. However, this can
21+
come at a cost for JIT-compiled methods and is not generally such an issue for a lot of AIR applications, so it is now possible to avoid these checks from being injected.
22+
23+
Possible values for this setting are:
24+
- `always` (default behaviour) where the checks are always injected, to match previous behaviour.
25+
- `never` where the JIT will not inject any checks which may improve performance and reduce code memory usage
26+
- `debugOnly` where checks will be injected only for a SWF that has debug information within it (i.e. compiled with the `-debug` mxmlc flag)
27+
28+
29+
### `gcCollectionThreshold`
30+
31+
Available: 51.3.1.1
32+
33+
This parameter can be used to adjust the Garbage Collection mechanism within the AIR runtime. The collection threshold is the amount of memory that the runtime aims to
34+
use up before it then collects some via the internal GC mark-and-sweep method. A higher value uses more memory but can reduce the time spent in GC.
35+
36+
The value is given as a number of 4kb blocks, with the internal default now set at 5120 blocks which is equivalent to 20MB (5120x4x1024).
37+
38+
Adding a value here will result in a call to [`GCPolicyManager::setLowerLimitCollectionThreshold()`](https://github.com/adobe/avmplus/blob/858d034a3bd3a54d9b70909386435cf4aec81d21/MMgc/GCPolicyManager.cpp#L384).
39+
40+
41+
### `gcEfficiency`
42+
43+
Available: 51.3.1.1
44+
45+
The efficiency coefficient is the intended ratio of GC work to program work, referenced as `G` in the [GC Policy document](https://github.com/adobe/avmplus/blob/858d034a3bd3a54d9b70909386435cf4aec81d21/doc/mmgc/policy.txt#L35). This value must be at least 0.01 and less than 1, with a default value of 0.25. Adjusting this value may limit the number/length of pauses that happen
46+
due to GC activity but this may result in other side-effects such as an increase in the amount of memory consumed by the application.
47+
48+
Adding a value here will result in a change of the [`GCPolicyManager::G`](https://github.com/adobe/avmplus/blob/858d034a3bd3a54d9b70909386435cf4aec81d21/MMgc/GCPolicyManager.h#L573) variable.
49+
50+
51+
### `gcMarkingTime`
52+
53+
Available: 51.3.1.1
54+
55+
This value is the intended maximum time slice spent doing incremental marking i.e. where activity is paused but for only a small period.
56+
This is different from the collection time which is the more noticeable delay when the GC has finished marking and has a “stop-the-world” period to free
57+
up the unused objects. In the [GC Policy document](https://github.com/adobe/avmplus/blob/858d034a3bd3a54d9b70909386435cf4aec81d21/doc/mmgc/policy.txt#L32)
58+
this value is referred to as `P`. It is given here in milliseconds, with a default of 5.
59+
60+
Adding a value here will result in a change of the [`GCPolicyManager::P`](https://github.com/adobe/avmplus/blob/858d034a3bd3a54d9b70909386435cf4aec81d21/MMgc/GCPolicyManager.h#L555) variable.
61+

docs/building/application-descriptor-files/elements/windows.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,28 @@ This setting can be used to retrieve the full Windows clipboard entry for HTML s
3939
To ensure the full clipboard contents are retrieved for HTML strings, set the value to `true`.
4040

4141

42+
### `localAppData`
43+
44+
(optional)
45+
46+
Available: 51.3.1.1
47+
48+
This setting determines where the application's local storage folder is located (i.e. `File.applicationStorageDirectory`). Normally this is under the standard "AppData" folder
49+
on Windows, as determined by the `%APPDATA%` environment variable, which is under a "Roaming" folder. If this setting is configured as `true` then the "Local" folder will be used
50+
instead, i.e. the application storage directory will be a subfolder of the path given by the `%LOCALAPPDATA%` environment variable.
51+
52+
53+
### `useDirectDrawFonts`
54+
55+
(optional)
56+
57+
Available: 51.3.1.1
58+
59+
Font rendering for FTE-based text lines was updated in AIR SDK 51.2 to use DirectDraw/DirectWrite, which allowed for colored emoji characters to be suported. However, some
60+
computer systems display some poor behaviour (memory leaks and system hangs) when this is used, so this setting has been introduced as a mechanism by which developers can turn
61+
off the use of the DirectX graphics system for font rendering (switching back to the earlier GDI-based font support). The default value is `true` so that existing behaviour will
62+
not change if the value is omitted.
63+
64+
Note that the DirectDraw font rendering is carried out in a different library (DDrawFontSupport.dll) due to dependencies on Windows versions/APIs, and if the setting here had
65+
been set to `false`, this library will not be packaged up when creating an application bundle on Windows.
4266

0 commit comments

Comments
 (0)