Является ли Android 32-разрядной или 64-разрядной ОС?

Название в значительной степени самоочевидно: есть Android 32- или 64-разрядная ОС? Я предполагаю, что он тот или иной, а не оба, поскольку это заставило бы обе 32- и 64-разрядные двоичные файлы размещаться в Google Play. Я знаю, что это простой вопрос, и что другие люди спрашивают об этом, но для жизни меня я не смог найти ответ в Интернете, и, безусловно, на этом SE не было.

42 голоса | спросил fouric 28 FriEurope/Moscow2012-12-28T09:12:21+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 09:12:21 +0400 2012, 09:12:21

5 ответов


44

В области чипсетов ARM, который является общим фактором, весь Android-стек из почти идентичного ядра на базе Linux фактически 32-битный, скомпилированный, как правило, из 32-битной /64-битной среды хоста, среда-хост обычно является одним из дистрибутивов Linux. Рекомендуемое распространение Google для создания и кросс-компиляции Android - это Ubuntu .

Библиотека времени выполнения Android (медиа, графика, файловая система, чтобы назвать лишь несколько) также 32 бит, но по мере того, как мы достигаем уровня dalvikvm, тогда количество бит становится неактуальным, как и в данный момент, apks, входящие в Google Play Store, являются родным байт-кодом («побочный продукт» сгенерированного кода Java, скомпилированным в портативный байт-код), который нацелен на DalvikVM (виртуальная машина), который, в свою очередь, интерпретирует и переводит байт-код, предназначенный для набора необработанных команд ARM .

Froyo был последним Android, который включил компиляцию под 32-разрядную размещенную среду, в которой он был скомбинирован для набора микросхем ARM.

Gingerbread стал первым из «будущих» Android, три года назад, который представил требование использовать 64-битную размещенную среду, в которой он был построен. Было много хаков, чтобы получить пряничную прядь под 32-битной средой.

ICS и JB, и теперь в настоящее время определенно требуется 64-битная среда для ускорения компиляции и сокращения времени поворота в здании.

Итак, что вы видите в Play Маркете, не имеет никакого отношения к использованию 32bit или 64bit и, следовательно, не имеет значения.

Примечание: типичный 16-гигабайтный RAM /Quad core /64-битный дистрибутив Linux, время, затрачиваемое на сборку ICS с нуля, занимает максимум 30 минут, если это будет 32-разрядный дистрибутив Linux, на самом деле это займет больше времени , может привести к расплавлению CPU, поскольку есть просто, недостаточно вычислительной мощности для извлечения и извлечения кросс-скомпилированного кода, который является очень требовательным и налоговым процессом!

Доказательство этого.

Потяните в любой родной бинарник ARM, который находится в /system/bin или /system/xbin, например, /system/bin/dalvikvm, это двоичный файл Dalvik VM, который отвечает за верхние уровни Java и APK.

Теперь рассмотрим двоичный файл, выполнив следующую команду: file dalvikvm, который дает краткое описание типа файла, ожидаемым результатом будет следующее:

  

dalvikvm: ELF 32-разрядный исполняемый файл LSB, ARM, версия 1 (SYSV),   динамически связанный (использует общие библиотеки), разделил

Обратите внимание на ссылку на 32-разрядный ELF и скомпилирован в ARM и является двоичным исполняемым файлом.

Вправо, перейдем к рассмотрению собственной разделяемой библиотеки, найденной в /system/lib, например, /system/lib/libandroid_runtime.so, теперь выпустите file libandroid_runtime.so, ожидаемый результат будет следующим:

  

libandroid_runtime.so: ELF 32-разрядный общий объект LSB, ARM, версия 1   (SYSV), динамически связанный, разделенный

Опять заметьте, его 32-разрядный ELF, скомпилированный в ARM и являющийся общей библиотекой.

Ключ к кросс-компиляции хоста можно найти в источнике AOSP, т. е. изначально для создания Gingerbread требовалось построить на 64-битной хост-системе, вот группа групп новостей linky , ссылаясь на , как исправлять скрипты, чтобы заставить его строить на 32-битном хосте , который имеет два патчи, найденные здесь, для file libandroid_runtime.so и build/core.mk ( в сочетании ) в обзоре Gerrit AOSP.

В качестве последующего результата этот патч пробился к скриптам сборки ICS, в которых у меня была привилегия компиляции ICS на 32-битной платформе, которая занимала 3 дня для сборки ( это был порт ICS для Zte Blade ). Теперь требования растут, вам do определенно нужен 64-битный хост, чтобы включить кросс-компиляцию здания AOSP из ICS вверх:)

ответил t0mm13b 28 FriEurope/Moscow2012-12-28T09:43:25+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 09:43:25 +0400 2012, 09:43:25
6

Первоначально Android был написан только для 32-битных процессоров: и, в частности, 32-разрядных процессоров ARM. Позже Intel и MIPS вложили много средств в создание Android для поддержки своих архитектур: но все же только 32-разрядные процессоры. Они смогли сделать это без (многих) проблем совместимости, поскольку большинство приложений не отправляются как двоичные файлы. Написанные на Java, они вместо этого отправляются как bytecode , которые виртуальная машина на телефоне компилируется в архитектуру телефона при запуске приложения. Некоторые приложения включают компоненты native , которые отправляются как двоичные. Это делается для ускорения некоторых видов приложений (в частности, игр) или для доступа к приложениям C-библиотек, недоступных на Java. Эти приложения могут включать более одного двоичного кода для собственных частей кода, чтобы позволить им работать на разных архитектурах. Тем не менее, большинство приложений являются Java-only, поэтому они просто работают с любой архитектурой.

Выше было все верно в то время, когда этот вопрос (и большинство других ответов) был написан, но больше не был. Lollipop представил поддержку для новых 64-битных процессоров ARM ( ARMv8 ), а также для процессоров Intel и AMD x86_64, что означает, что Android теперь поддерживает как 32-разрядные, так и 64-разрядные процессоры. Nexus 9 был первым флагманским 64-битным Android-устройством. Как и предоставление доступа к новым расширениям набора инструкций, 64-разрядная поддержка означает, что приложения могут использовать более 4 ГБ ОЗУ. В большинстве приложений это не так уж и много, но, конечно же, могут использовать высококачественные игры и программное обеспечение для создания видео /видео: подталкивание Android к платформе для игр с консольным качеством (включая игры VR) и для создания контента. Приложения Java не нуждаются в обновлении, чтобы воспользоваться этим, потому что виртуальная машина всегда компилирует их в архитектуру телефона, но приложения с собственным кодом будут.

Поскольку ARMv8 совместим с предыдущими версиями с 32-битным кодом (так же, как x86_64 все еще может работать с кодом x86), даже приложения, которые содержат собственный код для 32-разрядных процессоров, все еще могут работать на 64-битном Android. Таким образом, приложение нужно компилировать только для 64-битного, если оно содержит собственный код и , который хочет использовать преимущество более высокого предела RAM или новых функций архитектуры.

ответил Dan Hulme 13 J0000006Europe/Moscow 2016, 22:40:47
5

Все чипы ARM в настоящее время 32-битные. Из-за этого Android в настоящее время выполняет весь код в 32-битной среде.

64-разрядные процессоры готовы к запуску в 2014 году.

ответил free3dom 4 Jpm1000000pmFri, 04 Jan 2013 12:03:19 +040013 2013, 12:03:19
2
  

Является ли Android 32- или 64-разрядной ОС? Я предполагаю, что он тот или иной, а не оба, поскольку это заставило бы обе 32- и 64-разрядные двоичные файлы размещаться в Google Play.

Ни на самом деле. Android - это автономная система на базе Dalvik VM, а приложения Google Dalvik для Google Play. Сам Dalvik VM, как и Java VM, всегда 32-битный независимо от битности физической машины.

Как вы подозревали, приложения, поставляемые с исходными двоичными файлами и приложениями NDK, должны поставляться с двоичными файлами, скомпилированными для каждой архитектуры, на которой она предназначена. Самая распространенная архитектура, на которой работает Android, - 32-битный ARM; однако есть также устройства, которые работают на x86 и MIPS.

ответил Lie Ryan 26 Jpm1000000pmSat, 26 Jan 2013 20:02:32 +040013 2013, 20:02:32
0

Я просто догадываюсь, но я думаю, что это также объясняет это просто. Это зависит от того, какое устройство вы используете, theres четыре типа os, которые являются ARM, ARM 64, X84 и X84_64. ARM - популярная 32-битная платформа, ARM 64 также популярная, но 64-битная платформа, X84 - необычная платформа и используется на Zenfones, так же как и X84_64, ее необычная и используемая на Android Emulators. Я получил эту os информацию о Open Gapps

ответил NeonzYT 28 Jam1000000amSat, 28 Jan 2017 02:40:14 +030017 2017, 02:40:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132