Как класс R обрабатывается в формате aab (android комплект приложений)? - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть нативное приложение (я имею в виду, скомпилированное в 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 это не удалось?

1 Ответ

1 голос
/ 08 февраля 2020

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

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

...