| Android Emulator Config File Formats: |
| ==================================== |
| |
| Introduction: |
| ------------- |
| |
| The Android emulator supports several file formats for its configuration |
| files, depending on specific usage. This file documents them. |
| |
| |
| I. Android .ini configuration files: |
| ------------------------------------ |
| |
| The code in android/utils/ini.[hc] is used to support a simple .ini file |
| format for some configuration files. Here's the BNF for it: |
| |
| file := <line>* |
| line := <comment> | <LF> | <assignment> |
| comment := (';'|'#') <noLF>* <LF> |
| assignment := <space>* <keyName> <space>* '=' <space>* <valueString> <space>* <LF> |
| keyName := <keyNameStartChar> <keyNameChar>* |
| keyNameStartChar := [A-Za-z_] |
| keyNameChar := [A-Za-z0-9_.-] |
| valueString := <noLF>* |
| space := ' ' | '\t' |
| LF := '\r\n' | '\n' | '\r' |
| noLF := [^<LF>] |
| |
| Or, in plain English: |
| |
| - No support for sections |
| - Empty lines are ignored, as well as lines beginning with ';' or '#' |
| - Lines must be of the form: "<keyName> = <value>" |
| - Key names must start with a letter or an underscore |
| - Other key name characters can be letters, digits, underscores, dots or |
| dashes |
| |
| - Leading and trailing space are allowed and ignored before/after the key |
| name and before/after the value |
| |
| - There is no restriction on the value, except that it can't contain |
| leading/trailing space/tab characters or newline/charfeed characters |
| |
| - Empty values are possible, and will be stored as an empty string. |
| - Any badly formatted line is discarded (and will print a warning) |
| |
| |
| II. Android 'aconfig' configuration files: |
| ------------------------------------------ |
| |
| Alternatively, another configuration file format is supported by the code |
| in android/config.[hc]. Its purpose is to support each config file as a |
| tree of key/value pairs. More specifically: |
| |
| - Each key or value is a string |
| - Each key can be associated either to a value, or a sub-tree |
| - A (key,value) pair is written in the config file as: |
| |
| <keyname> <value> |
| |
| which means the key name, some spaces, then the value. |
| |
| - Dots can be used to separate keys in a tree path, as in: |
| |
| some.other.name value |
| |
| corresponding to a top-level key named 'some' with a single |
| sub-key 'other' which itself has a sub-key 'name' associated to |
| value 'value'. |
| |
| - As a consequence, key names *cannot* contain a dot. |
| |
| - Alternatively, braces can be used to group sub-keys, as in: |
| |
| some { |
| other { |
| name value |
| name2 other-value |
| } |
| } |
| |
| which defines a top-level 'some' key with two sub-keys 'name' and |
| 'name2' |
| |
| - Brace and dot notations are equivalent, so the above config file |
| can also be written as: |
| |
| some.other.name value |
| some.other.name2 other-value |
| |
| - If a key appears twice in the config file, it replaces any |
| assigned value, hence: |
| |
| some-key foo |
| some-key bar |
| |
| defines 'some-key' to 'bar' |
| |
| - If a sharp (#) appears whenever a key name is expected by the parser, |
| then it is considered a comment and will be ignored along anything that |
| follows on the current line. |
| |
| |