github.com/c-darwin/mobile@v0.0.0-20160313183840-ff625c46f7c9/cmd/gomobile/binary_xml_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "bytes" 9 "flag" 10 "io/ioutil" 11 "log" 12 "testing" 13 ) 14 15 var dump = flag.Bool("dump", false, "dump junk.bin binary output") 16 17 var ( 18 origSortPool = sortPool 19 origSortAttr = sortAttr 20 ) 21 22 func TestBinaryXML(t *testing.T) { 23 sortPool, sortAttr = sortToMatchTest, sortAttrToMatchTest 24 defer func() { sortPool, sortAttr = origSortPool, origSortAttr }() 25 26 got, err := binaryXML(bytes.NewBufferString(input)) 27 if err != nil { 28 t.Fatal(err) 29 } 30 if *dump { 31 if err := ioutil.WriteFile("junk.bin", got, 0660); err != nil { 32 t.Fatal(err) 33 } 34 } 35 36 skipByte := map[int]bool{ 37 0x04ec: true, // line number of fake </uses-sdk> off by one 38 0x0610: true, // line number of fake </meta-data> off by one 39 0x064c: true, // line number of CData off by one 40 0x06a0: true, // line number of fake </action> off by one 41 0x06f0: true, // line number of fake </category> off by one 42 0x0768: true, // line number of fake *end namespace* off by one 43 } 44 45 for i, o := range output { 46 if skipByte[i] { 47 continue 48 } 49 if i >= len(got) || o != got[i] { 50 t.Errorf("mismatch at %04x", i) 51 break 52 } 53 } 54 } 55 56 // The output of the Android encoder seems to be arbitrary. So for testing, 57 // we sort the string pool order to match the output we have seen. 58 func sortToMatchTest(p *binStringPool) { 59 var names = []string{ 60 "versionCode", 61 "versionName", 62 "minSdkVersion", 63 "label", 64 "hasCode", 65 "debuggable", 66 "name", 67 "configChanges", 68 "value", 69 "android", 70 "http://schemas.android.com/apk/res/android", 71 "", 72 "package", 73 "manifest", 74 "com.zentus.balloon", 75 "1.0", 76 "uses-sdk", 77 "application", 78 "Balloon世界", 79 "activity", 80 "android.app.NativeActivity", 81 "Balloon", 82 "meta-data", 83 "android.app.lib_name", 84 "balloon", 85 "intent-filter", 86 "\there is some text\n", 87 "action", 88 "android.intent.action.MAIN", 89 "category", 90 "android.intent.category.LAUNCHER", 91 } 92 93 s := make([]*bstring, 0) 94 m := make(map[string]*bstring) 95 96 for _, str := range names { 97 bstr := p.m[str] 98 if bstr == nil { 99 log.Printf("missing %q", str) 100 continue 101 } 102 bstr.ind = uint32(len(s)) 103 s = append(s, bstr) 104 m[str] = bstr 105 delete(p.m, str) 106 } 107 // add unexpected strings 108 for str, bstr := range p.m { 109 log.Printf("unexpected %q", str) 110 bstr.ind = uint32(len(s)) 111 s = append(s, bstr) 112 } 113 p.s = s 114 p.m = m 115 } 116 117 func sortAttrToMatchTest(e *binStartElement, p *binStringPool) { 118 order := []string{ 119 "versionCode", 120 "versionName", 121 "versionPackage", 122 123 "label", 124 "name", 125 "configChanges", 126 } 127 ordered := make([]*binAttr, len(order)) 128 129 outer: 130 for i, n := range order { 131 for j, a := range e.attr { 132 if a != nil && a.name.str == n { 133 ordered[i] = a 134 e.attr[j] = nil 135 continue outer 136 } 137 } 138 } 139 var attr []*binAttr 140 for _, a := range ordered { 141 if a != nil { 142 attr = append(attr, a) 143 } 144 } 145 for _, a := range e.attr { 146 if a != nil { 147 attr = append(attr, a) 148 } 149 } 150 e.attr = attr 151 } 152 153 // Hexdump of output generated by the Android SDK's ant build system. 154 // Annotated after studying Android source code. 155 var output = []byte{ 156 /* 0000 */ 0x03, 0x00, 0x08, 0x00, // chunk header XML 157 /* 0004 */ 0x78, 0x07, 0x00, 0x00, // chunk size 1912 158 159 /* 0008 */ 0x01, 0x00, 0x1c, 0x00, // chunk header STRING_POOL 160 /* 000c */ 0x00, 0x04, 0x00, 0x00, // chunk size 1024 161 /* 0010 */ 0x1f, 0x00, 0x00, 0x00, // string count 31 162 /* 0014 */ 0x00, 0x00, 0x00, 0x00, // style count 0 163 /* 0018 */ 0x00, 0x00, 0x00, 0x00, // flags (none set means UTF-16) 164 /* 001c */ 0x98, 0x00, 0x00, 0x00, // strings_start 0x98+0x08 = 0xa0 165 /* 0020 */ 0x00, 0x00, 0x00, 0x00, // styles_start (none) 166 /* 0024 */ 0x00, 0x00, 0x00, 0x00, // string offset [0x00] (from strings_start) 167 /* 0028 */ 0x1a, 0x00, 0x00, 0x00, // string offset [0x01] 168 /* 002c */ 0x34, 0x00, 0x00, 0x00, // string offset [0x02] 169 /* 0030 */ 0x52, 0x00, 0x00, 0x00, // string offset [0x03] 170 /* 0034 */ 0x60, 0x00, 0x00, 0x00, // string offset [0x04] 171 /* 0038 */ 0x72, 0x00, 0x00, 0x00, // string offset [0x05] 172 /* 003c */ 0x8a, 0x00, 0x00, 0x00, // string offset [0x06] 173 /* 0040 */ 0x96, 0x00, 0x00, 0x00, // string offset [0x07] 174 /* 0044 */ 0xb4, 0x00, 0x00, 0x00, // string offset [0x08] 175 /* 0048 */ 0xc2, 0x00, 0x00, 0x00, // string offset [0x09] 176 /* 004c */ 0xd4, 0x00, 0x00, 0x00, // string offset [0x0a] 177 /* 0050 */ 0x2c, 0x01, 0x00, 0x00, // string offset [0x0b] 178 /* 0054 */ 0x30, 0x01, 0x00, 0x00, // string offset [0x0c] 179 /* 0058 */ 0x42, 0x01, 0x00, 0x00, // string offset [0x0d] 180 /* 005c */ 0x56, 0x01, 0x00, 0x00, // string offset [0x0e] 181 /* 0060 */ 0x7e, 0x01, 0x00, 0x00, // string offset [0x0f] 182 /* 0064 */ 0x88, 0x01, 0x00, 0x00, // string offset [0x10] 183 /* 0068 */ 0x9c, 0x01, 0x00, 0x00, // string offset [0x11] 184 /* 006c */ 0xb6, 0x01, 0x00, 0x00, // string offset [0x12] 185 /* 0070 */ 0xcc, 0x01, 0x00, 0x00, // string offset [0x13] 186 /* 0074 */ 0xe0, 0x01, 0x00, 0x00, // string offset [0x14] 187 /* 0078 */ 0x18, 0x02, 0x00, 0x00, // string offset [0x15] 188 /* 007c */ 0x2a, 0x02, 0x00, 0x00, // string offset [0x16] 189 /* 0080 */ 0x40, 0x02, 0x00, 0x00, // string offset [0x17] 190 /* 0084 */ 0x6c, 0x02, 0x00, 0x00, // string offset [0x18] 191 /* 0088 */ 0x7e, 0x02, 0x00, 0x00, // string offset [0x19] 192 /* 008c */ 0x9c, 0x02, 0x00, 0x00, // string offset [0x1a] 193 /* 0090 */ 0xc6, 0x02, 0x00, 0x00, // string offset [0x1b] 194 /* 0094 */ 0xd6, 0x02, 0x00, 0x00, // string offset [0x1c] 195 /* 0098 */ 0x0e, 0x03, 0x00, 0x00, // string offset [0x1d] 196 /* 009c */ 0x22, 0x03, 0x00, 0x00, // string offset [0x1e] 197 /* 00a0 */ 0x0b, 0x00, 0x76, 0x00, // [0x00] len=11 value="versionCode" 198 /* 00a4 */ 0x65, 0x00, 0x72, 0x00, 199 /* 00a8 */ 0x73, 0x00, 0x69, 0x00, 200 /* 00ac */ 0x6f, 0x00, 0x6e, 0x00, 201 /* 00b0 */ 0x43, 0x00, 0x6f, 0x00, 202 /* 00b4 */ 0x64, 0x00, 0x65, 0x00, 203 /* 00b8 */ 0x00, 0x00, 204 /* 00ba */ 0x0b, 0x00, // [0x01] len=11 value="versionName" 205 /* 00bc */ 0x76, 0x00, 0x65, 0x00, 206 /* 00c0 */ 0x72, 0x00, 0x73, 0x00, 207 /* 00c4 */ 0x69, 0x00, 0x6f, 0x00, 208 /* 00c8 */ 0x6e, 0x00, 0x4e, 0x00, 209 /* 00cc */ 0x61, 0x00, 0x6d, 0x00, 210 /* 00d0 */ 0x65, 0x00, 0x00, 0x00, 211 /* 00d4 */ 0x0d, 0x00, 0x6d, 0x00, // [0x02] len=13 value="minSdkVersion" 212 /* 00d8 */ 0x69, 0x00, 0x6e, 0x00, 213 /* 00dc */ 0x53, 0x00, 0x64, 0x00, 214 /* 00e0 */ 0x6b, 0x00, 0x56, 0x00, 215 /* 00e4 */ 0x65, 0x00, 0x72, 0x00, 216 /* 00e8 */ 0x73, 0x00, 0x69, 0x00, 217 /* 00ec */ 0x6f, 0x00, 0x6e, 0x00, 218 /* 00f0 */ 0x00, 0x00, 219 /* 00f2 */ 0x05, 0x00, // [0x03] len=5 value="label" 220 /* 00f4 */ 0x6c, 0x00, 0x61, 0x00, 221 /* 00f8 */ 0x62, 0x00, 0x65, 0x00, 222 /* 00fc */ 0x6c, 0x00, 0x00, 0x00, 223 /* 0100 */ 0x07, 0x00, 0x68, 0x00, // [0x04] len=7 value="hasCode" 224 /* 0104 */ 0x61, 0x00, 0x73, 0x00, 225 /* 0108 */ 0x43, 0x00, 0x6f, 0x00, 226 /* 010c */ 0x64, 0x00, 0x65, 0x00, 227 /* 0110 */ 0x00, 0x00, 228 /* 0112 */ 0x0a, 0x00, // [0x05] len=10 value="debuggable" 229 /* 0114 */ 0x64, 0x00, 0x65, 0x00, 230 /* 0118 */ 0x62, 0x00, 0x75, 0x00, 231 /* 011c */ 0x67, 0x00, 0x67, 0x00, 232 /* 0120 */ 0x61, 0x00, 0x62, 0x00, 233 /* 0124 */ 0x6c, 0x00, 0x65, 0x00, 234 /* 0128 */ 0x00, 0x00, 235 /* 012a */ 0x04, 0x00, // [0x06] len=4 value="name" 236 /* 012c */ 0x6e, 0x00, 0x61, 0x00, 237 /* 0130 */ 0x6d, 0x00, 0x65, 0x00, 238 /* 0134 */ 0x00, 0x00, 239 /* 0136 */ 0x0d, 0x00, // [0x07] len=13 value="configChanges" 240 /* 0138 */ 0x63, 0x00, 0x6f, 0x00, 241 /* 013c */ 0x6e, 0x00, 0x66, 0x00, 242 /* 0140 */ 0x69, 0x00, 0x67, 0x00, 243 /* 0144 */ 0x43, 0x00, 0x68, 0x00, 244 /* 0148 */ 0x61, 0x00, 0x6e, 0x00, 245 /* 014c */ 0x67, 0x00, 0x65, 0x00, 246 /* 0150 */ 0x73, 0x00, 0x00, 0x00, 247 /* 0154 */ 0x05, 0x00, 0x76, 0x00, // [0x08] len=5 value="value" 248 /* 0158 */ 0x61, 0x00, 0x6c, 0x00, 249 /* 015c */ 0x75, 0x00, 0x65, 0x00, 250 /* 0160 */ 0x00, 0x00, 251 /* 0162 */ 0x07, 0x00, // [0x09] len=7 value="android" 252 /* 0164 */ 0x61, 0x00, 0x6e, 0x00, 253 /* 0168 */ 0x64, 0x00, 0x72, 0x00, 254 /* 016c */ 0x6f, 0x00, 0x69, 0x00, 255 /* 0170 */ 0x64, 0x00, 0x00, 0x00, 256 /* 0174 */ 0x2a, 0x00, 0x68, 0x00, // [0x0a] len=42 value="http://schemas.android.com/apk/res/android" 257 /* 0178 */ 0x74, 0x00, 0x74, 0x00, 258 /* 017c */ 0x70, 0x00, 0x3a, 0x00, 259 /* 0180 */ 0x2f, 0x00, 0x2f, 0x00, 260 /* 0184 */ 0x73, 0x00, 0x63, 0x00, 261 /* 0188 */ 0x68, 0x00, 0x65, 0x00, 262 /* 018c */ 0x6d, 0x00, 0x61, 0x00, 263 /* 0190 */ 0x73, 0x00, 0x2e, 0x00, 264 /* 0194 */ 0x61, 0x00, 0x6e, 0x00, 265 /* 0198 */ 0x64, 0x00, 0x72, 0x00, 266 /* 019c */ 0x6f, 0x00, 0x69, 0x00, 267 /* 01a0 */ 0x64, 0x00, 0x2e, 0x00, 268 /* 01a4 */ 0x63, 0x00, 0x6f, 0x00, 269 /* 01a8 */ 0x6d, 0x00, 0x2f, 0x00, 270 /* 01ac */ 0x61, 0x00, 0x70, 0x00, 271 /* 01b0 */ 0x6b, 0x00, 0x2f, 0x00, 272 /* 01b4 */ 0x72, 0x00, 0x65, 0x00, 273 /* 01b8 */ 0x73, 0x00, 0x2f, 0x00, 274 /* 01bc */ 0x61, 0x00, 0x6e, 0x00, 275 /* 01c0 */ 0x64, 0x00, 0x72, 0x00, 276 /* 01c4 */ 0x6f, 0x00, 0x69, 0x00, 277 /* 01c8 */ 0x64, 0x00, 0x00, 0x00, 278 /* 01cc */ 0x00, 0x00, 0x00, 0x00, // [0x0b] len=0 (sigh) 279 /* 01d0 */ 0x07, 0x00, 0x70, 0x00, // [0x0c] len=7 value="package" 280 /* 01d4 */ 0x61, 0x00, 0x63, 0x00, 281 /* 01d8 */ 0x6b, 0x00, 0x61, 0x00, 282 /* 01dc */ 0x67, 0x00, 0x65, 0x00, 283 /* 01e0 */ 0x00, 0x00, 284 /* 01e2 */ 0x08, 0x00, // [0x0d] len=8 value="manifest" 285 /* 01e4 */ 0x6d, 0x00, 0x61, 0x00, 286 /* 01e8 */ 0x6e, 0x00, 0x69, 0x00, 287 /* 01ec */ 0x66, 0x00, 0x65, 0x00, 288 /* 01f0 */ 0x73, 0x00, 0x74, 0x00, 289 /* 01f4 */ 0x00, 0x00, 290 /* 01f6 */ 0x12, 0x00, // [0x0e] len=12 value="com.zentus.balloon" 291 /* 01f8 */ 0x63, 0x00, 0x6f, 0x00, 292 /* 01fc */ 0x6d, 0x00, 0x2e, 0x00, 293 /* 0200 */ 0x7a, 0x00, 0x65, 0x00, 294 /* 0204 */ 0x6e, 0x00, 0x74, 0x00, 295 /* 0208 */ 0x75, 0x00, 0x73, 0x00, 296 /* 020c */ 0x2e, 0x00, 0x62, 0x00, 297 /* 0210 */ 0x61, 0x00, 0x6c, 0x00, 298 /* 0214 */ 0x6c, 0x00, 0x6f, 0x00, 299 /* 0218 */ 0x6f, 0x00, 0x6e, 0x00, 300 /* 021c */ 0x00, 0x00, 301 /* 021e */ 0x03, 0x00, // [0x0f] len=3 value="1.0" 302 /* 0220 */ 0x31, 0x00, 0x2e, 0x00, 303 /* 0224 */ 0x30, 0x00, 0x00, 0x00, 304 /* 0228 */ 0x08, 0x00, 0x75, 0x00, // [0x10] len=8 value="uses-sdk" 305 /* 022c */ 0x73, 0x00, 0x65, 0x00, 306 /* 0230 */ 0x73, 0x00, 0x2d, 0x00, 307 /* 0234 */ 0x73, 0x00, 0x64, 0x00, 308 /* 0238 */ 0x6b, 0x00, 0x00, 0x00, 309 /* 023c */ 0x0b, 0x00, 0x61, 0x00, // [0x11] len=11 value="application" 310 /* 0240 */ 0x70, 0x00, 0x70, 0x00, 311 /* 0244 */ 0x6c, 0x00, 0x69, 0x00, 312 /* 0248 */ 0x63, 0x00, 0x61, 0x00, 313 /* 024c */ 0x74, 0x00, 0x69, 0x00, 314 /* 0250 */ 0x6f, 0x00, 0x6e, 0x00, 315 /* 0254 */ 0x00, 0x00, 316 /* 0256 */ 0x09, 0x00, // [0x12] len=9 value="Balloon世界" (UTF16-LE, 0x4e16 is "16 4e", etc) 317 /* 0258 */ 0x42, 0x00, 0x61, 0x00, 318 /* 025c */ 0x6c, 0x00, 0x6c, 0x00, 319 /* 0260 */ 0x6f, 0x00, 0x6f, 0x00, 320 /* 0264 */ 0x6e, 0x00, 0x16, 0x4e, 321 /* 0268 */ 0x4c, 0x75, 0x00, 0x00, 322 /* 026c */ 0x08, 0x00, 0x61, 0x00, // [0x13] len=8 value="activity" 323 /* 0270 */ 0x63, 0x00, 0x74, 0x00, 324 /* 0274 */ 0x69, 0x00, 0x76, 0x00, 325 /* 0278 */ 0x69, 0x00, 0x74, 0x00, 326 /* 027c */ 0x79, 0x00, 0x00, 0x00, 327 /* 0280 */ 0x1a, 0x00, 0x61, 0x00, // [0x14] len=26 value="android.app.NativeActivity" 328 /* 0284 */ 0x6e, 0x00, 0x64, 0x00, 329 /* 0288 */ 0x72, 0x00, 0x6f, 0x00, 330 /* 028c */ 0x69, 0x00, 0x64, 0x00, 331 /* 0290 */ 0x2e, 0x00, 0x61, 0x00, 332 /* 0294 */ 0x70, 0x00, 0x70, 0x00, 333 /* 0298 */ 0x2e, 0x00, 0x4e, 0x00, 334 /* 029c */ 0x61, 0x00, 0x74, 0x00, 335 /* 02a0 */ 0x69, 0x00, 0x76, 0x00, 336 /* 02a4 */ 0x65, 0x00, 0x41, 0x00, 337 /* 02a8 */ 0x63, 0x00, 0x74, 0x00, 338 /* 02ac */ 0x69, 0x00, 0x76, 0x00, 339 /* 02b0 */ 0x69, 0x00, 0x74, 0x00, 340 /* 02b4 */ 0x79, 0x00, 0x00, 0x00, 341 /* 02b8 */ 0x07, 0x00, 0x42, 0x00, // [0x15] len=7 value="Balloon" 342 /* 02bc */ 0x61, 0x00, 0x6c, 0x00, 343 /* 02c0 */ 0x6c, 0x00, 0x6f, 0x00, 344 /* 02c4 */ 0x6f, 0x00, 0x6e, 0x00, 345 /* 02c8 */ 0x00, 0x00, 346 /* 02ca */ 0x09, 0x00, // [0x16] len=9 value="meta-data" 347 /* 02cc */ 0x6d, 0x00, 0x65, 0x00, 348 /* 02d0 */ 0x74, 0x00, 0x61, 0x00, 349 /* 02d4 */ 0x2d, 0x00, 0x64, 0x00, 350 /* 02d8 */ 0x61, 0x00, 0x74, 0x00, 351 /* 02dc */ 0x61, 0x00, 0x00, 0x00, 352 /* 02e0 */ 0x14, 0x00, 0x61, 0x00, // [0x17] len=20 value="android.app.lib_name" 353 /* 02e4 */ 0x6e, 0x00, 0x64, 0x00, 354 /* 02e8 */ 0x72, 0x00, 0x6f, 0x00, 355 /* 02ec */ 0x69, 0x00, 0x64, 0x00, 356 /* 02f0 */ 0x2e, 0x00, 0x61, 0x00, 357 /* 02f4 */ 0x70, 0x00, 0x70, 0x00, 358 /* 02f8 */ 0x2e, 0x00, 0x6c, 0x00, 359 /* 02fc */ 0x69, 0x00, 0x62, 0x00, 360 /* 0300 */ 0x5f, 0x00, 0x6e, 0x00, 361 /* 0304 */ 0x61, 0x00, 0x6d, 0x00, 362 /* 0308 */ 0x65, 0x00, 0x00, 0x00, 363 /* 030c */ 0x07, 0x00, 0x62, 0x00, // [0x18] len=7 value="balloon" 364 /* 0310 */ 0x61, 0x00, 0x6c, 0x00, 365 /* 0314 */ 0x6c, 0x00, 0x6f, 0x00, 366 /* 0318 */ 0x6f, 0x00, 0x6e, 0x00, 367 /* 031c */ 0x00, 0x00, 368 /* 031e */ 0x0d, 0x00, // [0x19] len=13 value="intent-filter" 369 /* 0320 */ 0x69, 0x00, 0x6e, 0x00, 370 /* 0324 */ 0x74, 0x00, 0x65, 0x00, 371 /* 0328 */ 0x6e, 0x00, 0x74, 0x00, 372 /* 032c */ 0x2d, 0x00, 0x66, 0x00, 373 /* 0330 */ 0x69, 0x00, 0x6c, 0x00, 374 /* 0334 */ 0x74, 0x00, 0x65, 0x00, 375 /* 0338 */ 0x72, 0x00, 0x00, 0x00, 376 /* 033c */ 0x13, 0x00, 0x09, 0x00, // [0x1a] len=19 value="\there is some text\n" 377 /* 0340 */ 0x68, 0x00, 0x65, 0x00, 378 /* 0344 */ 0x72, 0x00, 0x65, 0x00, 379 /* 0348 */ 0x20, 0x00, 0x69, 0x00, 380 /* 034c */ 0x73, 0x00, 0x20, 0x00, 381 /* 0350 */ 0x73, 0x00, 0x6f, 0x00, 382 /* 0354 */ 0x6d, 0x00, 0x65, 0x00, 383 /* 0358 */ 0x20, 0x00, 0x74, 0x00, 384 /* 035c */ 0x65, 0x00, 0x78, 0x00, 385 /* 0360 */ 0x74, 0x00, 0x0a, 0x00, 386 /* 0364 */ 0x00, 0x00, 387 /* 0366 */ 0x06, 0x00, // [0x1b] len=6 value="action" 388 /* 0368 */ 0x61, 0x00, 0x63, 0x00, 389 /* 036c */ 0x74, 0x00, 0x69, 0x00, 390 /* 0370 */ 0x6f, 0x00, 0x6e, 0x00, 391 /* 0374 */ 0x00, 0x00, 392 /* 0376 */ 0x1a, 0x00, // [0x1c] len=26 value="android.intent.action.MAIN" 393 /* 0378 */ 0x61, 0x00, 0x6e, 0x00, 394 /* 037c */ 0x64, 0x00, 0x72, 0x00, 395 /* 0380 */ 0x6f, 0x00, 0x69, 0x00, 396 /* 0384 */ 0x64, 0x00, 0x2e, 0x00, 397 /* 0388 */ 0x69, 0x00, 0x6e, 0x00, 398 /* 038c */ 0x74, 0x00, 0x65, 0x00, 399 /* 0390 */ 0x6e, 0x00, 0x74, 0x00, 400 /* 0394 */ 0x2e, 0x00, 0x61, 0x00, 401 /* 0398 */ 0x63, 0x00, 0x74, 0x00, 402 /* 039c */ 0x69, 0x00, 0x6f, 0x00, 403 /* 03a0 */ 0x6e, 0x00, 0x2e, 0x00, 404 /* 03a4 */ 0x4d, 0x00, 0x41, 0x00, 405 /* 03a8 */ 0x49, 0x00, 0x4e, 0x00, 406 /* 03ac */ 0x00, 0x00, 407 /* 03ae */ 0x08, 0x00, // [0x1d] len=8 value="category" 408 /* 03b0 */ 0x63, 0x00, 0x61, 0x00, 409 /* 03b4 */ 0x74, 0x00, 0x65, 0x00, 410 /* 03b8 */ 0x67, 0x00, 0x6f, 0x00, 411 /* 03bc */ 0x72, 0x00, 0x79, 0x00, 412 /* 03c0 */ 0x00, 0x00, 413 /* 03c2 */ 0x20, 0x00, // [0x1e] len=32 value="android.intent.category.LAUNCHER" 414 /* 03c4 */ 0x61, 0x00, 0x6e, 0x00, 415 /* 03c8 */ 0x64, 0x00, 0x72, 0x00, 416 /* 03cc */ 0x6f, 0x00, 0x69, 0x00, 417 /* 03d0 */ 0x64, 0x00, 0x2e, 0x00, 418 /* 03d4 */ 0x69, 0x00, 0x6e, 0x00, 419 /* 03d8 */ 0x74, 0x00, 0x65, 0x00, 420 /* 03dc */ 0x6e, 0x00, 0x74, 0x00, 421 /* 03e0 */ 0x2e, 0x00, 0x63, 0x00, 422 /* 03e4 */ 0x61, 0x00, 0x74, 0x00, 423 /* 03e8 */ 0x65, 0x00, 0x67, 0x00, 424 /* 03ec */ 0x6f, 0x00, 0x72, 0x00, 425 /* 03f0 */ 0x79, 0x00, 0x2e, 0x00, 426 /* 03f4 */ 0x4c, 0x00, 0x41, 0x00, 427 /* 03f8 */ 0x55, 0x00, 0x4e, 0x00, 428 /* 03fc */ 0x43, 0x00, 0x48, 0x00, 429 /* 0400 */ 0x45, 0x00, 0x52, 0x00, 430 /* 0404 */ 0x00, 0x00, 431 /* 0406 */ 0x00, 0x00, 432 // End of STRING_POOL. 433 434 /* 0408 */ 0x80, 0x01, 0x08, 0x00, // chunk header XML_RESOURCE_MAP 435 /* 040c */ 0x2c, 0x00, 0x00, 0x00, // chunk size 44 436 /* 0410 */ 0x1b, 0x02, 0x01, 0x01, // 0x0101021b = versionCode 437 /* 0414 */ 0x1c, 0x02, 0x01, 0x01, // 0x0101021c = versionName 438 /* 0418 */ 0x0c, 0x02, 0x01, 0x01, // 0x0101020c = minSdkVersion 439 /* 041c */ 0x01, 0x00, 0x01, 0x01, // 0x01010001 = label 440 /* 0420 */ 0x0c, 0x00, 0x01, 0x01, // 0x0101000c = hasCode 441 /* 0424 */ 0x0f, 0x00, 0x01, 0x01, // 0x0101000f = debuggable 442 /* 0428 */ 0x03, 0x00, 0x01, 0x01, // 0x01010003 = name 443 /* 042c */ 0x1f, 0x00, 0x01, 0x01, // 0x0101001f = configChanges 444 /* 0430 */ 0x24, 0x00, 0x01, 0x01, // 0x01010024 = value 445 446 /* 0434 */ 0x00, 0x01, 0x10, 0x00, // chunk header XML_START_NAMESPACE 447 /* 0438 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24 448 /* 043c */ 0x07, 0x00, 0x00, 0x00, // line number 449 /* 0440 */ 0xff, 0xff, 0xff, 0xff, // comment string reference 450 /* 0444 */ 0x09, 0x00, 0x00, 0x00, // prefix [0x09]="android" 451 /* 0448 */ 0x0a, 0x00, 0x00, 0x00, // url [0x0a]="http://schemas..." 452 453 // Start XML_START_ELEMENT 454 /* 044c */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 455 /* 0450 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96 456 /* 0454 */ 0x07, 0x00, 0x00, 0x00, // line number 457 /* 0458 */ 0xff, 0xff, 0xff, 0xff, // comment ref 458 /* 045c */ 0xff, 0xff, 0xff, 0xff, // ns (start ResXMLTree_attrExt) 459 /* 0460 */ 0x0d, 0x00, 0x00, 0x00, // name [0x0d]="manifest" 460 /* 0464 */ 0x14, 0x00, // attribute start 461 /* 0466 */ 0x14, 0x00, // attribute size 462 /* 0468 */ 0x03, 0x00, // attribute count 463 /* 046a */ 0x00, 0x00, // ID index (1-based, 0 means none) 464 /* 046c */ 0x00, 0x00, // class index (1-based, 0 means none) 465 /* 046e */ 0x00, 0x00, // style index (1-based, 0 means none) 466 // ResXMLTree_attribute[0] 467 /* 0470 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 468 /* 0474 */ 0x00, 0x00, 0x00, 0x00, // name [0x00]=="versionCode" 469 /* 0478 */ 0xff, 0xff, 0xff, 0xff, // rawValue 470 /* 047c */ 0x08, 0x00, // Res_value size 471 /* 047e */ 0x00, // Res_value padding 472 /* 047f */ 0x10, // Res_value dataType (INT_DEC) 473 /* 0480 */ 0x01, 0x00, 0x00, 0x00, // Res_value data 474 // ResXMLTree_attribute[1] 475 /* 0484 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 476 /* 0488 */ 0x01, 0x00, 0x00, 0x00, // name [0x01]="versionName" 477 /* 048c */ 0x0f, 0x00, 0x00, 0x00, // rawValue 478 /* 0490 */ 0x08, 0x00, // Res_value size 479 /* 0492 */ 0x00, // Res_value padding 480 /* 0493 */ 0x03, // Res_value dataType (STRING) 481 /* 0494 */ 0x0f, 0x00, 0x00, 0x00, // Res_value data [0x0f]="1.0" 482 // ResXMLTree_attribute[2] 483 /* 0498 */ 0xff, 0xff, 0xff, 0xff, // ns none 484 /* 049c */ 0x0c, 0x00, 0x00, 0x00, // name [0x0c]="package" 485 /* 04a0 */ 0x0e, 0x00, 0x00, 0x00, // rawValue 486 /* 04a4 */ 0x08, 0x00, // Res_value size 487 /* 04a6 */ 0x00, // Res_value padding 488 /* 04a7 */ 0x03, // Res_value dataType (STRING) 489 /* 04a8 */ 0x0e, 0x00, 0x00, 0x00, // Res_value data [0x0e]="com.zentus..." 490 // End XML_START_ELEMENT 491 492 // Start XML_START_ELEMENT 493 /* 04ac */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 494 /* 04b0 */ 0x38, 0x00, 0x00, 0x00, // chunk size 56 495 /* 04b4 */ 0x0d, 0x00, 0x00, 0x00, // line number 496 /* 04b8 */ 0xff, 0xff, 0xff, 0xff, // comment 497 /* 04bc */ 0xff, 0xff, 0xff, 0xff, // ns 498 /* 04c0 */ 0x10, 0x00, 0x00, 0x00, // name [0x10]="uses-sdk" 499 /* 04c4 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size 500 /* 04c8 */ 0x01, 0x00, // atrribute count 501 /* 04ca */ 0x00, 0x00, // ID index 502 /* 04cc */ 0x00, 0x00, 0x00, 0x00, // class index + style index 503 // ResXMLTree_attribute[0] 504 /* 04d0 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 505 /* 04d4 */ 0x02, 0x00, 0x00, 0x00, // name [0x02]="minSdkVersion" 506 /* 04d8 */ 0xff, 0xff, 0xff, 0xff, // rawValue 507 /* 04dc */ 0x08, 0x00, 0x00, 0x10, // size+padding+type (INT_DEC) 508 /* 04e0 */ 0x09, 0x00, 0x00, 0x00, 509 // End XML_START_ELEMENT 510 511 // Start XML_END_ELEMENT 512 /* 04e4 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT 513 /* 04e8 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24 514 /* 04ec */ 0x0d, 0x00, 0x00, 0x00, // line number 515 /* 04f0 */ 0xff, 0xff, 0xff, 0xff, // comment 516 /* 04f4 */ 0xff, 0xff, 0xff, 0xff, // ns 517 /* 04f8 */ 0x10, 0x00, 0x00, 0x00, // name [0x10]="uses-sdk" 518 // End XML_END_ELEMENT 519 520 // Start XML_START_ELEMENT 521 /* 04fc */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 522 /* 0500 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96 523 /* 0504 */ 0x0e, 0x00, 0x00, 0x00, // line number 524 /* 0508 */ 0xff, 0xff, 0xff, 0xff, // comment 525 /* 050c */ 0xff, 0xff, 0xff, 0xff, // ns 526 /* 0510 */ 0x11, 0x00, 0x00, 0x00, // name [0x11]="application" 527 /* 0514 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size 528 /* 0518 */ 0x03, 0x00, 0x00, 0x00, // attribute count + ID index 529 /* 051c */ 0x00, 0x00, 0x00, 0x00, // class index + style index 530 // ResXMLTree_attribute[0] 531 /* 0520 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 532 /* 0524 */ 0x03, 0x00, 0x00, 0x00, // name [0x03]="label" 533 /* 0528 */ 0x12, 0x00, 0x00, 0x00, // rawValue 534 /* 052c */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING) 535 /* 0530 */ 0x12, 0x00, 0x00, 0x00, // [0x12]="Balloon世界" 536 // ResXMLTree_attribute[1] 537 /* 0534 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 538 /* 0538 */ 0x04, 0x00, 0x00, 0x00, // name [0x04]="hasCode" 539 /* 053c */ 0xff, 0xff, 0xff, 0xff, // rawValue 540 /* 0540 */ 0x08, 0x00, 0x00, 0x12, // size+padding+type (BOOLEAN) 541 /* 0544 */ 0x00, 0x00, 0x00, 0x00, // false 542 // ResXMLTree_attribute[2] 543 /* 0548 */ 0x0a, 0x00, 0x00, 0x00, 544 /* 054c */ 0x05, 0x00, 0x00, 0x00, // name=[0x05]="debuggable" 545 /* 0550 */ 0xff, 0xff, 0xff, 0xff, // rawValue 546 /* 0554 */ 0x08, 0x00, 0x00, 0x12, // size+padding+type (BOOLEAN) 547 /* 0558 */ 0xff, 0xff, 0xff, 0xff, // true 548 // End XML_START_ELEMENT 549 550 // Start XML_START_ELEMENT 551 /* 055c */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 552 /* 0560 */ 0x60, 0x00, 0x00, 0x00, // chunk size 96 553 /* 0564 */ 0x0f, 0x00, 0x00, 0x00, // line number 554 /* 0568 */ 0xff, 0xff, 0xff, 0xff, // comment ref 555 /* 056c */ 0xff, 0xff, 0xff, 0xff, // ns 556 /* 0570 */ 0x13, 0x00, 0x00, 0x00, // name [0x13]="activity" 557 /* 0574 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size 558 /* 0578 */ 0x03, 0x00, 0x00, 0x00, // atrribute count + ID index 559 /* 057c */ 0x00, 0x00, 0x00, 0x00, // class index + style index 560 // ResXMLTree_attribute[0] 561 /* 0580 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 562 /* 0584 */ 0x03, 0x00, 0x00, 0x00, // name [0x03]="label" 563 /* 0588 */ 0x15, 0x00, 0x00, 0x00, // rawValue 564 /* 058c */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING) 565 /* 0590 */ 0x15, 0x00, 0x00, 0x00, // [0x15]="Balloon" 566 // ResXMLTree_attribute[1] 567 /* 0594 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 568 /* 0598 */ 0x06, 0x00, 0x00, 0x00, // name [0x06]="name" 569 /* 059c */ 0x14, 0x00, 0x00, 0x00, // rawValue 570 /* 05a0 */ 0x08, 0x00, 0x00, 0x03, // size+padding+type (STRING) 571 /* 05a4 */ 0x14, 0x00, 0x00, 0x00, // [0x14]="android.app.NativeActivity" 572 // ResXMLTree_attribute[2] 573 /* 05a8 */ 0x0a, 0x00, 0x00, 0x00, 574 /* 05ac */ 0x07, 0x00, 0x00, 0x00, // name [0x07]="configChanges" 575 /* 05b0 */ 0xff, 0xff, 0xff, 0xff, // rawValue 576 /* 05b4 */ 0x08, 0x00, 0x00, 0x11, // size+padding+type (INT_HEX) 577 /* 05b8 */ 0xa0, 0x00, 0x00, 0x00, // orientation|keyboardHidden (0x80|0x0020=0xa0) 578 // End XML_START_ELEMENT 579 580 // Start XML_START_ELEMENT 581 /* 05bc */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 582 /* 05c0 */ 0x4c, 0x00, 0x00, 0x00, // chunk size 76 583 /* 05c4 */ 0x12, 0x00, 0x00, 0x00, // line number 584 /* 05c8 */ 0xff, 0xff, 0xff, 0xff, // comment ref 585 /* 05cc */ 0xff, 0xff, 0xff, 0xff, // ns 586 /* 05d0 */ 0x16, 0x00, 0x00, 0x00, // name [0x16]="meta-data" 587 /* 05d4 */ 0x14, 0x00, 0x14, 0x00, // atrribute start + size 588 /* 05d8 */ 0x02, 0x00, 0x00, 0x00, // attribute count + ID index 589 /* 05dc */ 0x00, 0x00, 0x00, 0x00, // class+style index 590 // ResXMLTree_attribute[0] 591 /* 05e0 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 592 /* 05e4 */ 0x06, 0x00, 0x00, 0x00, // name [0x06]="name" 593 /* 05e8 */ 0x17, 0x00, 0x00, 0x00, // rawValue 594 /* 05ec */ 0x08, 0x00, 0x00, 0x03, // size + padding + type (STRING) 595 /* 05f0 */ 0x17, 0x00, 0x00, 0x00, // [0x17]="android.app.lib_name" 596 // ResXMLTree_attribute[1] 597 /* 05f4 */ 0x0a, 0x00, 0x00, 0x00, // ns [0x0a]="http://schemas..." 598 /* 05f8 */ 0x08, 0x00, 0x00, 0x00, 599 /* 05fc */ 0x18, 0x00, 0x00, 0x00, 600 /* 0600 */ 0x08, 0x00, 0x00, 0x03, // size + padding + type (STRING) 601 /* 0604 */ 0x18, 0x00, 0x00, 0x00, // [0x18]="balloon" 602 // End XML_START_ELEMENT 603 604 // Start XML_END_ELEMENT 605 /* 0608 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT 606 /* 060c */ 0x18, 0x00, 0x00, 0x00, // chunk size 24 607 /* 0610 */ 0x12, 0x00, 0x00, 0x00, // line-number 608 /* 0614 */ 0xff, 0xff, 0xff, 0xff, 609 /* 0618 */ 0xff, 0xff, 0xff, 0xff, 610 /* 061c */ 0x16, 0x00, 0x00, 0x00, // name [0x16]="meta-data" 611 // End XML_END_ELEMENT 612 613 // Start XML_START_ELEMENT 614 /* 0620 */ 0x02, 0x01, 0x10, 0x00, // chunk header XML_START_ELEMENT 615 /* 0624 */ 0x24, 0x00, 0x00, 0x00, // chunk size 36 616 /* 0628 */ 0x13, 0x00, 0x00, 0x00, // line number 617 /* 062c */ 0xff, 0xff, 0xff, 0xff, // comment 618 /* 0630 */ 0xff, 0xff, 0xff, 0xff, // ns 619 /* 0634 */ 0x19, 0x00, 0x00, 0x00, // name [0x19]="intent-filter" 620 /* 0638 */ 0x14, 0x00, 0x14, 0x00, // attribute start + size 621 /* 063c */ 0x00, 0x00, 0x00, 0x00, // attribute count + ID index 622 /* 0640 */ 0x00, 0x00, 0x00, 0x00, // class index + style index 623 // End XML_START_ELEMENT 624 625 // Start XML_CDATA 626 /* 0644 */ 0x04, 0x01, 0x10, 0x00, // chunk header XML_CDATA 627 /* 0648 */ 0x1c, 0x00, 0x00, 0x00, // chunk size 28 628 /* 064c */ 0x13, 0x00, 0x00, 0x00, // line number 629 /* 0650 */ 0xff, 0xff, 0xff, 0xff, // comment 630 /* 0654 */ 0x1a, 0x00, 0x00, 0x00, // data [0x1a]="\there is some text\n" 631 /* 0658 */ 0x08, 0x00, 0x00, 0x00, 632 /* 065c */ 0x00, 0x00, 0x00, 0x00, 633 // End XML_CDATA 634 635 // Start XML_START_ELEMENT 636 /* 0660 */ 0x02, 0x01, 0x10, 0x00, 637 /* 0664 */ 0x38, 0x00, 0x00, 0x00, 638 /* 0668 */ 0x15, 0x00, 0x00, 0x00, 639 /* 066c */ 0xff, 0xff, 0xff, 0xff, 640 /* 0670 */ 0xff, 0xff, 0xff, 0xff, 641 /* 0674 */ 0x1b, 0x00, 0x00, 0x00, 642 /* 0678 */ 0x14, 0x00, 0x14, 0x00, 643 /* 067c */ 0x01, 0x00, 0x00, 0x00, 644 /* 0680 */ 0x00, 0x00, 0x00, 0x00, 645 /* 0684 */ 0x0a, 0x00, 0x00, 0x00, 646 /* 0688 */ 0x06, 0x00, 0x00, 0x00, 647 /* 068c */ 0x1c, 0x00, 0x00, 0x00, 648 /* 0690 */ 0x08, 0x00, 0x00, 0x03, 649 /* 0694 */ 0x1c, 0x00, 0x00, 0x00, 650 // End XML_START_ELEMENT 651 652 // Start XML_END_ELEMENT 653 /* 0698 */ 0x03, 0x01, 0x10, 0x00, 654 /* 069c */ 0x18, 0x00, 0x00, 0x00, 655 /* 06a0 */ 0x15, 0x00, 0x00, 0x00, // line number 656 /* 06a4 */ 0xff, 0xff, 0xff, 0xff, 657 /* 06a8 */ 0xff, 0xff, 0xff, 0xff, 658 /* 06ac */ 0x1b, 0x00, 0x00, 0x00, // [0x1b]="action" 659 // End XML_END_ELEMENT 660 661 // Start XML_START_ELEMENT 662 /* 06b0 */ 0x02, 0x01, 0x10, 0x00, 663 /* 06b4 */ 0x38, 0x00, 0x00, 0x00, 664 /* 06b8 */ 0x16, 0x00, 0x00, 0x00, 665 /* 06bc */ 0xff, 0xff, 0xff, 0xff, 666 /* 06c0 */ 0xff, 0xff, 0xff, 0xff, 667 /* 06c4 */ 0x1d, 0x00, 0x00, 0x00, 668 /* 06c8 */ 0x14, 0x00, 0x14, 0x00, 669 /* 06cc */ 0x01, 0x00, 0x00, 0x00, 670 /* 06d0 */ 0x00, 0x00, 0x00, 0x00, 671 /* 06d4 */ 0x0a, 0x00, 0x00, 0x00, 672 /* 06d8 */ 0x06, 0x00, 0x00, 0x00, 673 /* 06dc */ 0x1e, 0x00, 0x00, 0x00, 674 /* 06e0 */ 0x08, 0x00, 0x00, 0x03, 675 /* 06e4 */ 0x1e, 0x00, 0x00, 0x00, 676 // End XML_START_ELEMENT 677 678 // Start XML_END_ELEMENT 679 /* 06e8 */ 0x03, 0x01, 0x10, 0x00, 680 /* 06ec */ 0x18, 0x00, 0x00, 0x00, 681 /* 06f0 */ 0x16, 0x00, 0x00, 0x00, // line number 682 /* 06f4 */ 0xff, 0xff, 0xff, 0xff, 683 /* 06f8 */ 0xff, 0xff, 0xff, 0xff, 684 /* 06fc */ 0x1d, 0x00, 0x00, 0x00, // name [0x1d]="category" 685 // End XML_END_ELEMENT 686 687 // Start XML_END_ELEMENT 688 /* 0700 */ 0x03, 0x01, 0x10, 0x00, // chunk header XML_END_ELEMENT 689 /* 0704 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24 690 /* 0708 */ 0x17, 0x00, 0x00, 0x00, // line number 691 /* 070c */ 0xff, 0xff, 0xff, 0xff, // comment 692 /* 0710 */ 0xff, 0xff, 0xff, 0xff, // ns 693 /* 0714 */ 0x19, 0x00, 0x00, 0x00, // name [0x19]="intent-filter" 694 // End XML_END_ELEMENT 695 696 // Start XML_END_ELEMENT 697 /* 0718 */ 0x03, 0x01, 0x10, 0x00, 698 /* 071c */ 0x18, 0x00, 0x00, 0x00, 699 /* 0720 */ 0x18, 0x00, 0x00, 0x00, // line number 700 /* 0724 */ 0xff, 0xff, 0xff, 0xff, 701 /* 0728 */ 0xff, 0xff, 0xff, 0xff, 702 /* 072c */ 0x13, 0x00, 0x00, 0x00, // name [0x13]="activity" 703 // End XML_END_ELEMENT 704 705 // Start XML_END_ELEMENT 706 /* 0730 */ 0x03, 0x01, 0x10, 0x00, 707 /* 0734 */ 0x18, 0x00, 0x00, 0x00, 708 /* 0738 */ 0x19, 0x00, 0x00, 0x00, 709 /* 073c */ 0xff, 0xff, 0xff, 0xff, 710 /* 0740 */ 0xff, 0xff, 0xff, 0xff, 711 /* 0744 */ 0x11, 0x00, 0x00, 0x00, // name [0x11]="application" 712 // End XML_END_ELEMENT 713 714 // Start XML_END_ELEMENT 715 /* 0748 */ 0x03, 0x01, 0x10, 0x00, 716 /* 074c */ 0x18, 0x00, 0x00, 0x00, 717 /* 0750 */ 0x1a, 0x00, 0x00, 0x00, // line number 718 /* 0754 */ 0xff, 0xff, 0xff, 0xff, 719 /* 0758 */ 0xff, 0xff, 0xff, 0xff, 720 /* 075c */ 0x0d, 0x00, 0x00, 0x00, // name [0x0d]="manifest" 721 // End XML_END_ELEMENT 722 723 /* 0760 */ 0x01, 0x01, 0x10, 0x00, // chunk header XML_END_NAMESPACE 724 /* 0764 */ 0x18, 0x00, 0x00, 0x00, // chunk size 24 725 /* 0768 */ 0x1a, 0x00, 0x00, 0x00, // line number 726 /* 076c */ 0xff, 0xff, 0xff, 0xff, // comment 727 /* 0770 */ 0x09, 0x00, 0x00, 0x00, // prefix [0x09]="android" 728 /* 0774 */ 0x0a, 0x00, 0x00, 0x00, // url 729 } 730 731 const input = `<?xml version="1.0" encoding="utf-8"?> 732 <!-- 733 Copyright 2014 The Go Authors. All rights reserved. 734 Use of this source code is governed by a BSD-style 735 license that can be found in the LICENSE file. 736 --> 737 <manifest 738 xmlns:android="http://schemas.android.com/apk/res/android" 739 package="com.zentus.balloon" 740 android:versionCode="1" 741 android:versionName="1.0"> 742 743 <uses-sdk android:minSdkVersion="9" /> 744 <application android:label="Balloon世界" android:hasCode="false" android:debuggable="true"> 745 <activity android:name="android.app.NativeActivity" 746 android:label="Balloon" 747 android:configChanges="orientation|keyboardHidden"> 748 <meta-data android:name="android.app.lib_name" android:value="balloon" /> 749 <intent-filter> 750 here is some text 751 <action android:name="android.intent.action.MAIN" /> 752 <category android:name="android.intent.category.LAUNCHER" /> 753 </intent-filter> 754 </activity> 755 </application> 756 </manifest>`