Вопрос по adb, ash, android, ksh – Android adb shell - аш или кш?

10

Android документация онлайнAndroid Debug Bridge говорит "Adb обеспечивает пепельную оболочку". Конечно же, если яadb shell в эмулятор AVD я получаю пепел, который в основном представляет собой урезанную оболочку Борна.

Однако, если я подключусь к паре удаленных устройств, одного телефона HTC, а другого планшета ASUS Transformer Prime, у них обоих будет версия оболочки Korn, которая дает:KSH_VERSION='@(#)MIRBSD KSH R39 2010/08/24', Хотя MIRBSD KSH не является полноценной оболочкой AT & T Korn, она все же намного мощнее пепла.

Эмулятор работает под управлением Jelly Bean, и оба устройства используют ICS. Делая немного больше копания, похоже, что пепел был в Gingerbread, но mirbsd ksh в Honeycomb.

Итак, кто-то может подтвердить, что онлайн-документация по Android неверна, и что эмулятор использует устаревшую оболочку? Или поставщики реализуют свои собственные?

Нет, это был не я. Эмулятор AVD от Google. Я ожидаю иметь совместимую оболочку на той же версии ОС, если только они не вернутся назад на Jelly Bean ... cdarke
Если это не вы спрашивали об этом несколько дней назад в #! / Bin / mksh на freenode, то, по крайней мере, еще один человек столкнулся с mksh на Android. Но вы находитесь в каком-то эмуляторе, подключающемся к другому устройству, и эта документация конкретно относится к некоторой среде отладки в эмуляторе? Я не уверен, почему вы ожидаете, что у него будет такая же оболочка по умолчанию. Во всяком случае, рад слышать, что они выбрали вменяемый снаряд. Ничто, приближающееся к размеру mksh, близко не подходит. ormaaj

Ваш Ответ

1   ответ
25

чения в Android примерно в 1.6 раза после того, как уже были проведены экспериментальные сборки mksh для Android 1.5.

Потребовалось много времени, чтобы это было принято, хотя Android-x86 использовал его очень рано. Сначала у нас был настраиваемый коммутатор, в котором конфигурация платы определяла, были ли использованы ash или mksh; Google согласился, что только один должен быть отправлен на устройство. Примерно в то время, когда был подготовлен 2.4 (который так и не был выпущен), в конфигурациях аппаратной платы использовался mksh, в то время как в конфигурации эмулятора использовался ash, чтобы не вводить mksh-специфику на тот случай, если они захотят или должны вернуться к зола. 2.4 так и не выпустили, и я не знаю, что использовалось в серии 3.0, но начиная с Android 4.0 mksh является стандартной системной оболочкой.

mksh даже получил обзор безопасности от Джереми Кондры, и мы (как сотрудники AOSP / Google, так и я) регулярно выпускаем обновления кода. Забавный факт: они изначально не собирались поставлять оболочку на телефоныat all но согласились отправить mksh, потому что к тому времени они уже поставляли устройства с оболочкой, и это стало частью опубликованного API. Функция # 1, которую разработчики Android, как в mksh, over ash, - это завершение табуляции.

Глядя на онлайн-документы сейчас, кажется, что они удалили ссылку пепла. Теперь они просто не указывают, какая оболочка доступна. (Они согласились дать ссылку на домашнюю страницу mksh в онлайн-документах; я отправил патч для этого & # x2013; чтобы пользователи могли RTFM и предоставляли отчеты об ошибках и другие отзывы.)

Большое, большое спасибо за то, что нашли время ответить на вопрос. cdarke
Добро пожаловать ;-)

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