Какие существуют ограничения на количество ресурсов Android?

В одном из наших приложений есть несколько тысяч небольших файлов данных, которые мы сейчас упаковываем как активы. Это поможет нашему коду, если мы сможем упаковать их в качестве исходных ресурсов. Я попытался выяснить, какие ограничения для количества ресурсов, которые может иметь приложение для каждого типа, но я не нашел никакой документации по этому вопросу. Кто-нибудь знает, какие ограничения на количество ресурсов Android?

Ответ 1

После большого количества экспериментов кажется, что у вас может быть до 16 бит ресурсов (65 536 ресурсов) для каждого типа ресурсов. (Могут быть дополнительные бит, зарезервированные для будущего использования, что уменьшит максимальное количество ресурсов, но я не мог найти никаких доказательств этого.) Было бы хорошо, если бы кто-то мог дать авторитетный ответ, но через год я, м отказаться.

EDIT (см. комментарий ниже @BT): на основе этого ответа hackbod в другом thread. Кажется, что имеется 16 бит, поэтому можно иметь до 65535 ресурсов любого типа (не 65 536, потому что нуль недоступен). Также обратите внимание, что этот предел применяется только к количеству ресурсов для одной конфигурации (локаль, плотность пикселей и т.д.). Вариации ресурса для разных конфигураций используют один и тот же идентификатор ресурса и не вносят вклад в счет. Таким образом, на самом деле у вас может быть намного больше 65 535 ресурсов любого типа (например, макет или строка), просто не для какой-либо одной конфигурации.

Ответ 2

Там нет явной документации по этому вопросу, о которой я знаю, однако можно сделать разумные предположения, что разработчики Android разработали Android соответствующим образом с учетом своих рекомендаций. Они рекомендуют помещать строки и чертежи в ресурсы, которые могут поставлять разные для разных локалей, размеры экрана, плотность экрана и ориентацию. Огромное количество этих возможностей подсказывает мне, что они ожидают, что приложения будут включать в себя тысячи ресурсов, и вы будете просто прекрасно поставлять несколько тысяч небольших ресурсов.

Ответ 3

Принимая во внимание автоматически класс R и значение ресурса, используемого в api, я бы предположил, что где-то рядом с Integer.MAX_INTEGER для каждого строкового, drawable и layout id.