Class: Android::AXMLParser

Inherits:
Object
  • Object
show all
Defined in:
lib/android/axml_parser.rb

Overview

Note:

refer to Android OS framework code:

/frameworks/base/include/androidfw/ResourceTypes.h,

/frameworks/base/libs/androidfw/ResourceTypes.cpp

binary AXML parser

Defined Under Namespace

Classes: ReadError

Constant Summary collapse

TAG_START_DOC =
0x00100100
TAG_END_DOC =
0x00100101
TAG_START =
0x00100102
TAG_END =
0x00100103
TAG_TEXT =
0x00100104
TAG_CDSECT =
0x00100105
TAG_ENTITY_REF =
0x00100106
VAL_TYPE_NULL =
0
VAL_TYPE_REFERENCE =
1
VAL_TYPE_ATTRIBUTE =
2
VAL_TYPE_STRING =
3
VAL_TYPE_FLOAT =
4
VAL_TYPE_DIMENSION =
5
VAL_TYPE_FRACTION =
6
VAL_TYPE_INT_DEC =
16
VAL_TYPE_INT_HEX =
17
VAL_TYPE_INT_BOOLEAN =
18
VAL_TYPE_INT_COLOR_ARGB8 =
28
VAL_TYPE_INT_COLOR_RGB8 =
29
VAL_TYPE_INT_COLOR_ARGB4 =
30
VAL_TYPE_INT_COLOR_RGB4 =
31

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(axml) ⇒ AXMLParser

Returns a new instance of AXMLParser.

Parameters:

  • axml (String)

    binary xml data



45
46
47
48
# File 'lib/android/axml_parser.rb', line 45

def initialize(axml)
  @io = StringIO.new(axml, "rb")
  @strings = []
end

Instance Attribute Details

#stringsArray<String> (readonly)

Returns strings defined in axml.

Returns:

  • (Array<String>)

    strings defined in axml



42
43
44
# File 'lib/android/axml_parser.rb', line 42

def strings
  @strings
end

Instance Method Details

#parseREXML::Document

parse binary xml

Returns:

  • (REXML::Document)


52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/android/axml_parser.rb', line 52

def parse
  @doc = REXML::Document.new
  @doc << REXML::XMLDecl.new

  @num_str = word(4*4)
  @xml_offset = word(3*4)

  @parents = [@doc]
  @ns = []
  parse_strings
  parse_tags
  @doc
end