Компания Intel выпустила (https://plus.google.com/u/0/109385828142935151413/posts/K6mF...) системный образ с Android 4.0.4 для архитектуры x86, а также опубликовала (http://software.intel.com/en-us/articles/android-ice-cream-s.../) связанные с ним исходные тексты. Образ пока не нацелен на какое-либо конкретное устройство и позиционируется для тестирования в эмуляторе из состава Android SDK или для проведения адаптации кода под свои продукты. Загрузить образ системы можно через SDK Manager (http://software.intel.com/sites/landingpage/android/addon.xml), выбрав в списке Intel x86 Atom System Image, или загрузить вручную (http://software.intel.com/en-us/articles/android-ice-cream-s.../) (содержимое zip-архива нужно распаковать в директорию add-ons внутри Android SDK). Для работы дополнительно рекомендуется загрузить Android x86 Emulator, улучшенный вариант эмулятора, в который добавлена поддержка механизмов аппаратной виртуализации, которая позволит на порядок ускорить эмуляцию Android-устройств на базе архитектуры x86.
Опубликованный код включает несколько сотен изменений, направленных на улучшение поддержки архитектуры x86 и процессоров Atom в платформе Android 4.0. В Native Development Kit (NDK) добавлена поддержки нативного выполнения кода для архитектуры x86, задействованы оптимизации с использованием инструкций MMX/SSE/SSE2/SSE3, обеспечена возможность сборки универсальных исполняемых файлов, которые можно запускать на системах x86 и ARM.URL: http://www.androidcentral.com/intel-releases-x86-system-imag...
Новость: http://www.opennet.me/opennews/art.shtml?num=33934
> В Native Development Kit (NDK) обеспечена возможность сборки универсальных исполняемых файлов, которые можно запускать на системах x86 и ARM.КАК??? подробности в студию! неужели они услышали мои молитвы? :)
где-то полтора-два года назад новость была. причем, реинкарнация старой идеи
>КАК???FatELF?
Наивный код компилится в so библиотеки. apk файл это zip файл в котором есть папки /libs/armebi, /libs/armv7 и /libs/x86 куда кладутся версии so библиотек под каждую из соответствующих платформ. Android просто берет версию из папки для текущей платформы
Это хорошо если размер кода мал. А если у тебя например игровой движок на 20 мегабайт?
Если движок на 20 мегабайт, то текстур и прочей фигни еще на 400. Лишних 20 никто и не заметит.
В мобильном приложении? Еще как заметят.
”For example Keynote was previously only 115MB but its latest version is 327MB. Numbers is up from 109MB to 283MB, Pages moves from 95MB to 269MB, and iMovie from 70MB to 404MB.”
intomobile.com/2012/03/15/retinacapable-apps-five-times-larger-than-nonretina-counterparts/
> ”For example Keynote was previously only 115MB"only" 115Mb? Ява-булшита? На хилый армовский проц? OMG, теперь я понимаю почему у некоторых батарея садится за полдня и интерфейс дико клинит даже на 4-ядернике.
А 300 метров явы - даже десктоп заклинит на раз.
retina - это дисплей айфона с 4го поколения. т.е. там к картинкам обычного размера добавлены точно такие же картинки только с удвоенным разрешением
> Наивный кодЭто вы наивный папуас: не различаете naive и native :)
>возможность сборки универсальных исполняемых файлов, которые можно запускать на системах x86 и ARMпару лет назад читал про такое "новшество". причём, со второй попытки это тоже выглядело по отчетам идеально, а на самом деле - не выдерживало совсем никакой критики
да, но КАК именно? что там делается, как создаются такие универсальные? неужели два бинарника под две архитектуры - самое тупое и топорное что можно придумать?
да так и есть. отличие в хедерах, затем запуск разных бинарных сущностей
PowerPC + IntelApple делала такое, во время миграции на x86-64. Удобно в общем-то было.
> Apple делала такое, во время миграции на x86-64. Удобно в общем-то было.В условиях отсутствия интернета - может и удобней, а сейчас проще выкачать отдельно из репозитария, чем тащить некому не нужный код для другой платформы. (IMHO)
Зато пользователю не требуется выбирать что у него за архитектура. А никому не нужный код может занимать очень мало места в сравнении со всей программой
улыбнуло.
1. в маке используются так называемые бандлы. сейчас это выглядит так:
приложение — это каталога, в котором находятся файлы с кодом, файлы с ресурсами и тд.
так вот, программа — это только код. который состоит из одного или более файлов.
поэтому «не нужный код может занимать очень мало места в сравнении со всей программой» — это ложное утверждение.
при этом на данный момент осталась только одна архитектура во всех программах, поставляемых яблоком.
2. проблему фрагментации диска никто не отменял. а дополнительная архитектура в одном файле — это прямая фрагментация.
3. никто не запрещает поставлять ПО в пакетах(бандлах), где будет исполняемые файлы для всех поддерживаемых архитектур. к примеру — "прога_x86" "прога_armv5" "прога_x86_64"…
плюс батник "прога", который определяет архитектуру, устанавливает переменные итд и запускает нужный.
что кстати и встречается очень часто. особенно в коммерческом ПО.
ибо нет разницы компилить ли под все архитектуры в один файл или в несколько.
3. и когда это пользователю например убунту приходилось выбирать архитектуру?
всё ставится из реп. на нужную архитектуру — нужное ПО.
относительно недавно в огрызке появился апп-маркет. прямой аналог реп. разве что за деньки по карточке.
другими словами, выбирать пользователю архитектура — анахронизм.в общем и целом — если пользователь выбирает сам архитектуру, то это просто вопрос компетенции его вендора.
и содержание творчества этого вендора никак не зависит от формы. :D
> не нужный код может занимать очень мало места в сравнении со всей программойПонятия о очень мало - довольно разные. У объемистых программ кода бывает на десятки метров, а если еще и о библах подпирающих все это вспомнить...
Тащить бинарник из репозитария Apple??? Ну вы фантаст!!!Покупать, покупать и еще раз покупать!!!
>неужели два бинарника под две архитектуры - самое простое, надежное и производительное что можно придумать?очевидный фикс
Надежное? Стандартная ситуатция - в сборке под одну из архитектур найден баг, отсутствующий в других, а ля float * float - ваши действия? Разделяем кодовую базу?
>Стандартная ситуатция - в сборке под одну из архитектурстандартная ситуация для кросс-платформенных приложений — это строки вида
#ifdef X86 и #else
и даже не для кросс-платформенных — к примеру на винде до сих пор
#ifdef __WIN16 и тддругое дело, что все эти проверки глубоко в сдк/фрэмворках/...
если пользоваться рекомендуемыми типами данных аля size_t, то необходимость своих ифдефов сводится к минимуму, но не исключается полностью.
и это не разделение кодовой базы — это нормальная поддержка целевых платформ.
(часто даже встречаются комментарии возле таких ифдэфов. что-то типа
//баг такой-то для платформы такой-то чм. урл такой-то)кодовая база одна. а вот бинарников будет столько, сколько платформ эта база поддерживает. с багами, фичами и даже патентованными технологиями, если для платформы Н надо лицензировать, а такое тоже бывает.
> стандартная ситуация для кросс-платформенных приложений — это строки вида
> #ifdef X86 и #else
> и даже не для кросс-платформенных — к примеру на винде до сих
> пор
> #ifdef __WIN16 и тдЭто блевотные костыли. И их распространенность не делаем их лучше.
> другое дело, что все эти проверки глубоко в сдк/фрэмворках/...
> если пользоваться рекомендуемыми типами данных аля size_t, то необходимость своих ифдефов
> сводится к минимуму, но не исключается полностью.
> и это не разделение кодовой базы — это нормальная поддержка целевых платформ.Угу когда у тебя на 1000 строк кода 300 под #if и триста под #else это совсем не разделение, угу.
> (часто даже встречаются комментарии возле таких ифдэфов. что-то типа
> //баг такой-то для платформы такой-то чм. урл такой-то)Конечно. Комментарии все меняют.
/*Must always return FALSE!*/
bool_t need_check(){
return TRUE;
}
- пример из реальной жизни.
>Это блевотные костыли. И их распространенность не делаем их лучше.хм. с вами абщались, как с вменяемым человеком…
могу добавить только одно — в этом не совершенном мире архитектуры таки различаются друг от друга.>Угу когда у тебя на 1000 строк кода 300 под #if и триста под #else это совсем не разделение, угу.
можете оформить их в виде 300 различных файлов.
говорят жабистам это даже удобно, когда приходится писать платформо-зависимый код.
и ведь приходится. не видел ещё ни одной серьёзной проги на жабе, работающей без изменений на всех (3-х? 4-х? или сколько там можно jdk официально скачать?) платформах.
или пример хвалёного дотнета — мс выкидывает поддержку первой wp7 из своего маркета, оставляет только манго. офигенный аргумент платформонезависимости.>Конечно. Комментарии все меняют.
>/*Must always return FALSE!*/
>bool_t need_check(){
> return TRUE;
>}
>- пример из реальной жизни.и откуда вы их берёте? никак жабист писал.
хотя… если человек знает, что такое современный компилятор, и что такое инлайн-встраивание, то не писал бы подобную чушь.
>могу добавить только одно — в этом не совершенном мире архитектуры таки различаются друг от друга.Правда? А у меня есть портабельный ассемблер.
>можете оформить их в виде 300 различных файлов.Ну спасибо что разрешили. Я уж и не знал что делать.
>видел ещё ни одной серьёзной прогиОхотно верю, что вы не видели ни одной серьезной "проги" на "жабе".
>если человек знает, что такое современный компилятор, и что такое инлайн-встраивание, то не писал бы подобную чушь.Если человек знает что такое бизнес системы, "развивающиеся" (на самом деле гниющие) по 10 -15 лет того не удивишь и
#define THREE 3
> что такое современный компилятор, и что такое инлайн-встраиваниеВы, то я смотрю знаете и "инлайн-встраивание" и "современный компилятор", и еще много
умных слов.
белее полного слива я и не ожидал.
спасибо :Dзыж
>Правда? А у меня есть портабельный ассемблер.ха!!! жесть! :D
>>Правда? А у меня есть портабельный ассемблер.
> ха!!! жесть! :DСи можно использовать в таком режиме по сути. Чего тут такого жесткого?
Ассемблер — ни разу не си.
Ваш КО.
> Ассемблер — ни разу не си....зато си очень даже можно использовать в духе "кроссплатформенного ассемблера" :). При этом прога пишется в стиле как если бы был ассемблер, т.е. просто много простых инструкций чего сделать, грубо говоря.
Я кстати в порядке извращения разок оттранслировал просто влобовую кус х86 асма в си. Выглядит как г-но, но работает и компилится не только на 16-битном х86, которого у меня как бы давно уже нет.
я уже говорил, что белее полного слива я и не ожидал?
я ошибся.
жду продолжения. :D
> #ifdef __WIN16 и тдОх лол, MS 16-бит подсистему уже выбросил, а кто-то еще некрофилит.
никуда не выбросил.
посмотри заголовочные файлы последнего sdk.зыж
ну если сырцы сам не смотришь, то нафига комметировать только на основе маркетинговых презентаций, не понимаю…
> никуда не выбросил.Попробуй запустить 16-битную программу в 64-битной висте, семерке, win2008. А на сервера у них вообще только 64 бита и предлагаются в последнее время.
Что там будут делать эти любители некромансии MS в кои-то веки почему-то перестало волновать.
> только на основе маркетинговых презентаций, не понимаю…
Каких в ... презентаций? На половине их систем 16-битные программы уже не работают совсем.
Кстати что самое смешное: если вайн воткнуть на 64-битный пингвин, там 16-битные программы каким-то фигом все-таки умудряются запускать, невзирая на 64-битность системы. Так что в системе может быть одновременно 16, 32 и 64-битный код. MS такое ниасилил :)
> Попробуй запустить 16-битную программу в 64-битной висте, семерке, win2008.Речь об исходных кодах и не более.
Зыж
Где ифдеф и где кроссплатформенность.
Скажете тоже.
А ифдефы (как я говорил - даже) есть в виндовом сдк.
Помимо ифдефов также остались макросы типов данных — мс вообще любитель их плодить.
А что работает, что нет, почему софт от хп в виртуалке — вопрос не ко мне. Я за индусов не отвечаю.
Ее не запустить только потому что процессор не умеет. А умел бы, запускалось.
>>неужели два бинарника под две архитектуры - самое простое, надежное и производительное что можно придумать?
>очевидный фиксда.
Нет.
P.S. Заметьте, аргументация ничуть не хуже.
аргументация была чуть выше.зыж
заметьте, я нигде не аргументировал "эти блевоточные костыли".
На старую перделку, типа AMD Geode/MediaGX/VIA CLE266/... конечно не встанет?!
а я попробую поставить
> а я попробую поставитьВы там что, на себя чтоли андроид ставить собрались на пару?
А у кого есть сериал?Скачал, начал ставить, перезагрузилось и просит серийник.
Элементарно Ватсон. В apk есть папочка с либами под каждую архитектуру.Правда наф оно нужно. Поместят в официальный магазин? Сделают несовместимо? ЕМНИП батарею x86 разряжает быстрее. Для установки apk место надо умножать на четыре. Читай особенности Android
В общем я против, если будет один apk под две архитектуры ]:->
Оно не пошло на Asus 1015pn.... Уг.
Получается в теории этот образ в эмуляторе должен быстрее работать, чем arm версия?
Как показала практика - нифига подобного.
он работает быстрее, но только под windows где есть акселератор виртуалицации от intel
Значит абсолютно бесполезно
Вы бы, уважаемый, почитали что-ли. Достаточно установить KVM.