LINUX.ORG.RU
решено ФорумTalks

plasma^W opera не падает

 , , , ,


0

3

http://img6.imageshack.us/img6/6051/201306011733261366x768s.png
http://img211.imageshack.us/img211/659/1lk3.png
(Тут должна быть картинка нормально отрисованной Opera Mini. Но на неё смотреть скучно)

Суть: берётся пример bitmap-plasma из android-ndk, собирается под arm Opera Mini 7.5. Из готовой apk вытаскивается .so, в полуавтоматическом режиме разбирается на инструкции, из них генерируется набор «исходников» на C. Дальше это подсовывается компилятору из NDK, который собирает .so-шку для x86. so-шка вставляется в apk. Собранное приложение запускается в эмуляторе android'а, в котором крутится штатный образ для x86. Приложение (Plasma Opera Mini) работает и не падает. Но немного глючит подлагивает в mips-устройстве.

Радость.

★★★★★

Ответ на: комментарий от Pakostnik

А она свободная?

Нет. Она есть только в скомпилированном виде. Иначе зачем эти извращения со статическим рекомпилятором?

i-rinat ★★★★★ ()
Ответ на: комментарий от Pakostnik

И сервер её портируешь?

Нет, сервер я трогать не буду :-D

i-rinat ★★★★★ ()
Ответ на: комментарий от bender

попробуй еще на мипс портировать.

Так уже. Из .so получается набор файлов на C. Собирается и под mips, и под x86, и под arm. Просто на x86 эмулятор андроида может использовать kvm и потому не тормозит, как с arm и mips.

i-rinat ★★★★★ ()
Ответ на: комментарий от CYB3R

автоматизируй компиляцию.

Было бы круто иметь такую большую кнопку «сделать зашибись». Но это нереально. Там очень много ручной работы, которую не автоматизировать. А собственно компиляция выполняется одной строкой.

i-rinat ★★★★★ ()

заводы стоят, а он рукоблудством занимается. годно извращаешься! если получится таким образом портнуть что-то сложнее хелловорда, то будет няшная годнота.

der_looser ★★ ()
Ответ на: комментарий от com

Какой такой полуавтоматический режим? Можно поподробнее?

Запускается ./rec libplasma.so, который восстанавливает исходники, если можно так выразиться, но до этого мне приходится дописать много подобного кода вручную:

if (!strcmp(symname, "Java_com_example_plasma_PlasmaView_renderPlasma")) {
    emit_code("JNIEXPORT void JNICALL Java_com_example_plasma_PlasmaView_renderPlasma(JNIEnv * env, jobject  obj, jobject bitmap,  jlong  time_ms) {");
    emit_code("    r0 = (uint32_t)env;");
    emit_code("    r1 = (uint32_t)obj;");
    emit_code("    r2 = (uint32_t)bitmap;");
    emit_code("    r13 = d_stack_start;");
    emit_code("    store(r13, time_ms);");
    emit_code("    store(r13 + 4, time_ms >> 32);");
    emit_code("    func_%04x();", func_addr);
    emit_code("}");
}

В этом случае я немного сжульничал — мне была известна сигнатура. А так надо ещё выяснить, с какими параметрами функцию вызывают.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Планирую opera mini портировать.

Так вроде бы на Андроидах можно было запускать j2me, не? То ли конвертер был, то ли в некоторых девайсах была специальная jvm для этого.

firestarter ★★★☆ ()
Последнее исправление: firestarter (всего исправлений: 1)
Ответ на: комментарий от firestarter

Так вроде бы на Андроидах можно было запускать j2me, не? То ли конвертер был,

Да, есть. Но там есть некоторые тонкости. Например, тормоза после длительного использования.

Кстати, забавно: я год назад собрал три версии opera mini 4.4, русскую, английскую и японскую. Число скачиваний японской больше, чем русской и английской вместе взятых.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Планирую opera mini портировать
mips

Так ведь конторка того, обанкротилась. Не спорю, ещё некоторое время будут делать mips'ы и девайсы на них, но не вижу смысла пилить софт для них.

h31 ★★★★ ()

plasma не падает

в этой фразе тот же смысл что и «фикалий не тонет»

Siado ★★★★★ ()
Ответ на: комментарий от h31

В смысле «в обратном случае»?

В смысле, если у них всё хорошо. Какой смысл мне тогда это делать? Мне с этого в любом случае никакого профита. А fun (во всех возможных смыслах) — он в любом случае одинаковый. Так что дела mips тут совершенно не имеют значения.

У меня на руках есть устройство, мне этого достаточно.

i-rinat ★★★★★ ()
Ответ на: комментарий от daemonpnz

А чем эта опера не устраивает?

Она не работает на mips-телефоне. Её просто нет в маркете. Если ставишь вручную — не ставится.

И куда ты собрался её портировать?

На mips-устройства. В частности, на свой телефон.

i-rinat ★★★★★ ()
Ответ на: комментарий от goingUp

А они ее разрешают распространять?

Нет, наверное.

i-rinat ★★★★★ ()
Ответ на: комментарий от h31

конторка того, обанкротилась.

Жопа :(. Я читал они покруче армов процы проектировали. Правда, это было в ЖЖ одного из разработчиков.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

омг, андройды есть на mips??

Есть. Телефон, несколько читалок/планшетов (Cruz T100 и T301 вроде бы, ещё ainol paladin и ещё что-то от philips).

А что за телефон?

http://www.chimarket.ru/articles/1/24/obzor-kitaiskogo-android-smartfona-p800...

Это мои предположения, но этот телефон похож на копию референсного аппарата от mips.

i-rinat ★★★★★ ()
Ответ на: комментарий от true_admin

Жопа :(. Я читал они покруче армов процы проектировали. Правда, это было в ЖЖ одного из разработчиков.

Да никуда они не делись, так и будут продолжать клепать. Их же (вместе с сотрудниками) купила Imagination Technologies, чей основной бизнес — PowerVR. То есть это расширение портфолио, а не устранение конкурента. Теперь у них есть комплексные решения.

Вот, например: http://www.digitimes.com/supply_chain_window/story.asp?datepublish=2013/05/22...

i-rinat ★★★★★ ()
Ответ на: комментарий от true_admin

256Mb RAM

192Mb. 64Mb забирает себе видеоядро. Чтож поделать, страдаем.

i-rinat ★★★★★ ()
Ответ на: комментарий от DNA_Seq

лет так семь назад занимался.

семь лет назад не было Android'а, а NDK появился только года четыре назад.

Просмотри форум.

я искал по «android opera mini», но ничего по теме там не нашёл. Может нужно было искать как-то по-другому?

i-rinat ★★★★★ ()
Ответ на: комментарий от Quasar

Ок. Как ты тогда на мипс портанёшь?

Обратная разработка бинарника, затем компиляция в целевую архитектуру. В данном случае x86 и mips.

И главное - кто тебе разрешит?

А надо спрашивать разрешения?

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

i-rinat> Обратная разработка бинарника, затем компиляция в целевую архитектуру. В данном случае x86 и mips.

Флаг в руки. Проще через QEMU сделать.

i-rinat> А надо спрашивать разрешения?

Надо. Код ведь не твой.

Quasar ★★★★★ ()
Ответ на: комментарий от Quasar

Флаг в руки. Проще через QEMU сделать.

Это так только на первый взгляд кажется. Чтобы идея сработала, нужно весь runtime Android'а в QEMU запихнуть. А это даже на десктопе тормозит.

Надо. Код ведь не твой.

Согласно ГК РФ не надо:

Статья 1280.

1. Лицо, правомерно владеющее экземпляром программы для ЭВМ или экземпляром базы данных (пользователь), вправе без разрешения автора или иного правообладателя и без выплаты дополнительного вознаграждения:

1) внести в программу для ЭВМ или базу данных изменения исключительно в целях их функционирования на технических средствах пользователя и осуществлять действия, необходимые для функционирования таких программы или базы данных в соответствии с их назначением, в том числе запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети), а также осуществить исправление явных ошибок, если иное не предусмотрено договором с правообладателем;

i-rinat ★★★★★ ()

плазма-то не падает, но иконки в трее с ума сходят!
Ааа..., вы не о KDE...

comp00 ★★★★ ()
Последнее исправление: comp00 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.