Как R-класс обрабатывается в формате aab (пакет приложений для Android)?

У меня есть собственное приложение (я имею в виду скомпилированное в ARM), сделанное в Delphi. Это приложение отлично работало в Android32 с пакетом apk. Но теперь я хочу перейти на android 64, а затем использовать вместо него формат aab, но когда я это делаю и запускаю приложение, я получаю сообщение об ошибке: android.content.res.Resources$NotFoundException: Resource ID #0x7f04001d type #0x1c недействительно. так как это собственное приложение, я должен сгенерировать вручную R class, я делаю это так

  1. я использую aapt.exe для создания R.java
  2. затем с помощью javac я компилирую R.java в классы R $
  3. и, наконец, я создаю classes.dex, который включает классы R $

Я делаю этот процесс 2 раза, один раз для создания библиотеки android32 dex и SO, а другой раз для создания библиотеки android64 dex и SO.

В конце я создаю файл aab с помощью bundletool-all-0.10.3.jar

Что я пропустил? почему с apk мой процесс работает нормально, а с aab это не удалось?


person zeus    schedule 08.02.2020    source источник


Ответы (1)


Файл Dex должен быть одинаковым для 32-битных и 64-битных файлов, поэтому для создания у вас должен быть один файл classes.dex и одна таблица ресурсов (resources.arsc).

Также AAB использует таблицу ресурсов в другом формате, который должен быть сгенерирован с помощью aapt2, а не aapt. См. https://developer.android.com/studio/build/building-cmdline#bundletool-build для получения всех подробностей.

person Pierre    schedule 08.02.2020