Этот инструмент предназначен для извлечения строки ресурсы из файла resources.arsc, но, похоже, он неправильно анализирует заголовки ResStringPool и получает слишком большие значения StringCount и StyleCount, в результате чего чтение выходит за пределы границы. Все остальные приложения, которые я тестировал, работали нормально. И я подтвердил, что приложение отлично устанавливается на нескольких устройствах.
Я также заметил, что при использовании разных версий инструмента Google AAPT результаты различаются.
Для справки: вот сравнение вывода для двух приложений:
Код: Выделить всё
$ aapt dump strings CompanyPortal.apk | head
# Outputs: String pool of 41756 unique UTF-8 non-sorted strings, 41756 entries and 41743 styles using 3531384 bytes: (incorrect)
$ aapt2 dump strings CompanyPortal.apk | head
# Outputs: String pool of 41801 unique UTF-8 non-sorted strings, 41801 entries and 529 styles using 3203980 bytes: (correct)
$ aapt dump strings NormalApp.apk | head
# Outputs: String pool of 12217 unique UTF-8 non-sorted strings, 12217 entries and 13 styles using 589388 bytes:
$ aapt2 dump strings NormalApp.apk | head
# Outputs: String pool of 12217 unique UTF-8 non-sorted strings, 12217 entries and 13 styles using 589388 bytes:
Код: Выделить всё
$ od -x CompanyPortalresources.arsc | head
0000000 0002 000c a0b8 0054 0001 0000 0001 001c
0000020 (e278 0035) (a31c 0000) (a30f 0000) 0100 0000 # (3531384, 41756, 41743)
0000040 18c8 0005 3f78 0033 0000 0000 0003 0000
0000060 009a 0000 0133 0000 01cc 0000 025b 0000
$ od -x NormalAppresources.arsc | head
0000000 0002 000c e5a8 000e 0001 0000 0001 001c
0000020 (fe4c 0008) (2fb9 0000) (000d 0000) 0100 0000 # (589388,12217,13)
0000040 bf34 0000 fd74 0008 0000 0000 0036 0000
0000060 005c 0000 0074 0000 0096 0000 00ba 0000
- 3531384 => 0x0035e278, 41756 => < strong>0x0000A31C, 41743 => 0x0000A30F
- 3203980 => 0x0030e38c, 41801 => 0x0000a349, 529 => 0x00000211
- 589388 => 0x0008fe4c, 12217 => 0x00002fb9, 13 => 0x0000000d
Ниже приведены другие ссылки, которые я использовал для справки, но, насколько я могу судить, все они предлагают читать Int32 в одном и том же месте, чтобы получить подсчеты, но я не очень хорош. при чтении C/C++, так что, возможно, я что-то упускаю. Будем очень признательны за любые советы/помощь, спасибо за уделенное время. - Общее описание resources.arsc
- Apk инструмент синтаксического анализа jadx (написан на Java)
- Инструменты платформы AOSP
- Компилятор AOSP aapt
Android studio AAPT2< /li>
Подробнее здесь: https://stackoverflow.com/questions/787 ... -are-givin
Мобильная версия