motofan logo
46 страниц V « < 39 40 41 42 > »         
> 

Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта

EXL
сообщение 26.8.2011, 12:34 Закрепленное сообщение!


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Мануал: Компиляция приложений для MotoMAGX OS, создание пакетов

Прикрепленное изображение

Для портирования и сборки приложений для нашей платформы в первую очередь нам нужны:

1. Компьютер с Linux OS. Или Windows OS с установленным Virtual BOX/VMware Player, в крайнем случае под виндой можно воспользоваться AndLinux'ом или Cygwin'ом.
2. SDK & Toolchains для MotoMagX + Исходники программ/приложений.
3. Программист/Разработчик или начинающий программист (1 шт.).

Я рассмотрю наиболее приемлемый многим начинающим разработчикам способ, с использованием популярного дистрибутива Ubuntu 11 (Linux OS) в виртуальной машине VMware Player в Windows OS. Те пользователи, у которых стоит Linux OS на компе, могут скачать SDK & Toolchains | Зеркало | Зеркало | Зеркало и сразу перескочить на пункт #4.

Итак, начнём:

1. Загрузка необходимых для разработки инструментов и файлов:

1.1. Скачиваем ISO-образ диска Ubuntu 11. Я качал себе в городской сетке, пошарьтесь в своих тоже, может найдёте. На всякий случай, ссылка: [Download | Скачать] на скачивание с официального сайта: http://www.ubuntu.com Там вы можете выбрать любую конфигурацию под свой компьютер (amd/i386) и т.д.

1.2. Скачиваем VMware Player - Скачать можно с официального сайта: [Download | Скачать] или тут: [Mirror | Зеркало]

1.3. Скачиваем SDK & Toolchains для MotoMagX. [Download | Скачать] - полная версия, включающая в себя 2 тулчейна SDL (От испанцев) + QT (От Ant-On'a) а также python, bennugd, boost и множество различных библиотек. Инструкция по установке есть внутри или ниже можно прочитать подробно.
Тем, кто хочет разрабатывать приложения на SDL, можно скачать небольшой тулчейн для сборки приложений: [Download | Скачать] [Mirror | Зеркало]

2. Мануалы по установке VMware, Ubuntu и SDK & Toolchains в картинках:*
* - картинки открывать лучше всего в новом окне, нажав колёсико мышки. После открытия воспользуйтесь масштабированием, например, в стандартном просмоторщике картинок.

2.1. Установка программы VMware для самых маленьких.
2.2. Установка Linux OS в программу VMware, на примере Ubuntu 11.
2.3. Установка дополнительных инструментов (VMware-tools) в Ubuntu 11. Необходимо для перемещения файлов между Ubuntu в виртуальной машине и виндой.

2.1.:    2.2.:    2.3.:

Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

3. Мануалы по установке, текстом.

3.1. Установка VMware-tools для Ubuntu 11.
3.1.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Install VMware Tools...
3.1.2. Ждём загрузки инструментов (нужно подключение к интернету!), затем снова вверху нажимаем "Virtual Machine" -> "Install VMware Tools...
3.1.3. С открывшегося диска копируем архив в формате *.tar.gz например в /home/user (user - ваше имя при установке Ubuntu), распаковываем его.
3.1.4. Запускаем терминал и выполняем в нём следующее:
Код

cd /home/user/vmware-tools-distrib
sudo ./vmware-install.pl

После команды sudo надо ввести пароль, который мы указывали при установке Ubuntu.
3.1.5. Умный скрипт сам предложит вам вводить нужные значения (в квадратных скобках), вводите их.
3.1.6. После успешной установки инструментов, перезагрузите компьютер.
3.1.7. Данные инструменты помогут с лёгкостью переносить файлы из Windows в Linux Ubuntu, просто копируя их или перенося из окна в окно, как вы это делали в Windows. Кроме того, появится множество разрешений для экрана системы.

3.2. Общие папки между системами для обмена файлами.
3.2.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Virtual Machine Settings"
3.2.2. Переходим на вкладку "Options", выбираем "Shared Folders"
3.2.3. Переключатель "Folder sharing" ставим в положение "Always enabled", нажимаем кнопку "Add".
3.2.4. На компьютере выбираем любую папку, добавляем её, жмём ОК.
3.2.5. Теперь в Ubunte, в папке /mnt/hgfs видим добавленную нами папку из Windows.

4. Установка SDK & Toolchains.

4.1. Скачиваем архив тулчейна (*.tar.gz), перемещаем его в папку /home/user (user - ник при установке Ubuntu).
4.2. Выполняем команды, новая строка - Enter, вместо user естественно пишем своё имя, после команды sudo потребуется ввести пароль, который мы указывали при установке Ubuntu.
Код

sudo mkdir /mmc
sudo chown user -R /opt
sudo chown user -R /home
sudo chown user -R /mmc
sudo ln -s -d /opt/toolchains/motomagx/arm-eabi -t /
mkdir /opt/toolchains
mkdir /home/z6
mkdir /mmc/mmca1
tar -C /opt/toolchains -xzvf /home/user/motomagx-toolchains_12_08_2011.tar.gz
cp /opt/toolchains/motomagx/setenv-z6.sh /home/z6
cp /opt/toolchains/motomagx/setenv-z6-2.sh /home/z6

4.3. Обратите внимание на имя скаченного вами архива с тулчейном! Именно его нужно вводить в восьмой строке кода, приведённого выше!
4.4. Установленный тулчейн:
Прикрепленное изображение

5. Запуск окружения, компиляция программ и helloworld'a.

5.1. Чтобы запустить окружение для компиляции под MotoMagx, достаточно выполнить в терминале следующее:
Код

cd /home/z6
. setenv-z6.sh

После этого, компиляторы, библиотеки и хэдеры будут браться из нашего тулчейна, а не с компьютера.

5.2. HelloWorld.
5.2.1. Создаём пустой файл с именем hello.c в папке /home/z6 (Правой клавишей по пустому месту, "Create Document" -> "Empty File")
5.2.2. Редактируем его содержимое следующим образом, сохраняем:
Код

// Hello World for Motorola Magx!

#include <stdio.h>

int main(void)
{
    printf ("Hello Moto!!!\n");
    return 0;
}

5.2.3. Компилируем:
Код

cd /home/z6
arm-linux-gnueabi-gcc hello.c -o hello

5.2.4. Полученный исполнительный файл "hello" кидаем на телефон и запускаем через телнет!
Код

Mobilinux(TM) 4.1
Welcome 2 Motorola ZN5!
[root@Symbiosis ~]
#> /mmc/mmca1/hello
Hello Moto!!!


5.3. Работа с утилитой Make* и SDL библиотекой.
* - Утилита Make позволяет компилировать достаточно сложные проекты. Подробнее тут: http://ru.wikipedia.org/wiki/Make
5.3.1. Скачиваем следующие исходники, распаковываем в папку /home/z6:
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21678

5.3.2. Запускаем терминал и окружение для компиляции, переходим в папку с проектом, выполняем команду make:
Код

cd /home/z6/ballgame_src
make

После выполнения команды будет выполнена компиляция проекта и создан mgx пакет. Для очистки проекта от объектного кода и бинарников, следует выполнить make clean. Для создание mgx пакета - команду make mgx.
5.3.3. Теперь можно кинуть пакет на карту памяти и попробовать запустить. (Для SDL приложений вам потребуется установленные SDL-библиотеки!)
5.3.4. Структура простейшего Makefile для компиляции HelloWorld'a:
Код

# MakeFile for HelloWorld
# Motorola MotoMAGX

CC = arm-linux-gnueabi-gcc  
STRIP = arm-linux-gnueabi-strip
  
CFLAGS = # Необходимые флаги
LDFLAGS = # Необходимые флаги
OPTIMIZATION = -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -O2 # Оптимизация под процессор

INCLUDE = $(CFLAGS) $(OPTIMIZATION) -I/dir # Путь к нужным хэдэрам.
LIBS = $(LDFLAGS) -L/dir # Путь к нужным либам

BIN = hello # Бинарник

all:
    $(CC) -c hello.c -o hello.o $(INCLUDE)
    $(CC) -o $(BIN) hello.o $(LIBS)
    $(STRIP) $(BIN)
clean:
    rm -f ./*.o $(BIN)

Если положить данный Makefile рядом с hello.c, и выполнить make, получим исполнительный файл.
5.3.5. Замена строк, для портирования SDL проектов:
Код

CC:=gcc ---> CC:=arm-linux-gnueabi-gcc
cc=gcc ---> CC=arm-linux-gnueabi-gcc
cxx=g++ ---> CXX=arm-linux-gnueabi-g++
ld=ld ---> LD=arm-linux-gnueabi-ld
ar=ar ---> AR=arm-linux-gnueabi-ar
as=as---> AS=arm-linux-gnueabi-as
oc=oc ---> OC=arm-linux-gnueabi-objcopy
ranlib=ranlib ---> RANLIB=arm-linux-gnueabi-ranlib
strip=strip ---> STRIP=arm-linux-gnueabi-strip
В INCLUDE или CFLAGS добавляем `sdl-config --cflags`
В LIBS или LDFLAGS добавляем `sdl-config --libs` -lнеобходимая_библиотека


5.4. Работа с утилитой configure* и SDL библиотекой.
* - Скрипт configure создаёт Makefile и позволяет компилировать сложные проекты, состоящие из множества файлов. Подробнее тут: http://en.wikipedia.org/wiki/Configure_script
5.4.1. Пример работы. Скачиваем исходники, распаковываем в папку /home/z6:
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21806

5.4.2. Выполняем следующее:
Код

cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi
make

После этих команд у нас появятся исполнительные файлы Fire и Tunnel. Копируем их в корень карточки телефона.
5.4.3. Запускаем через телнет следующим образом:
Код

export LD_LIBRARY_PATH=/mmc/mmca1/games/lib:$LD_LIBRARY_PATH
chmod +x /mmc/mmca1/Fire
/mmc/mmca1/Fire

5.4.4. Для установки файлов в нужную директорию используется prefix и команда make install:
Код

mkdir /home/z6/test
cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi --prefix=/home/z6/test
make
make install

После этого нужные нам файлы будут в папке /home/z6/test.
5.4.5. Для чистки объектного кода и бинарников используется команда make clean, для удаления сконфигурированных Makefile'ов используется команда make distclean (полная очистка).

5.5. Деббагер "Segmentation fault"
5.5.1. Качаем gdb и распаковываем архив на карту памяти, в папку /mmc/mmca1/games
Исполнительные файлы должны быть собраны с префиксом '-g' и не должны быть пострипаные
5.5.2. Выполняем (gdb):
Код

ulimit -c unlimited
./<bin_app>
Segmentation fault (core dumped)
файл <core> будет создан
../bin/gdb ./<bin_app> <core>

5.5.3 Выполняем (strace):
Код

../bin/strace ./<bin_app>


5.6. Скрипт запуска для SDL приложений:
Код

#!/bin/sh
mypath=${0%/*}
LIBDIR1=/ezxlocal/download/mystuff/games/lib
LIBDIR2=/mmc/mmca1/games/lib
LIBDIR3=$mypath/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
export HOME=$mypath
export SDL_QT_INVERT_ROTATION=1
cd $mypath
sleep 1

exec $mypath/<bin_app>

5.6.1. Если нужен вывод лога в файл, заменяем последнюю строку в скрипте на
Код
exec $mypath/bin_app >$mypath/stdout.txt 2>$mypath/stderr.txt


5.7. HelloWorld с использованием GUI и функций телефона.
5.7.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21982

5.7.2. Выполняем:
Код

cd /home/z6/папка с нужным проектом
make PLATFORM=EZX-ZN5

или просто make
5.7.3. Кидаем исполнительные файлы на телефон и пробуем запустить, должно получиться что-то типа этого:
Прикрепленное изображение

5.8. Собираем MgxBox.
5.8.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 23247

5.8.2. Выполняем:
Код

cd /home/z6/MgxBox/MgxBox_GUI_ru
make PLATFORM=EZX-ZN5
cd /home/z6/MgxBox/p7zip_9.20.1
make all2
make install
cp -r /mmc/mmca1/p7zip/lib/p7zip /home/z6/MgxBox/Release/app/p7zip

5.8.3. Кидаем папку /home/z6/MgxBox/Release на телефон и пробуем запустить бинарник в папке Release/app, если всё нормально, должно получиться что-то типа этого:
Прикрепленное изображение

6. Создание пакетов вручную.

6.1. Создание MGX пакета:
6.1.1. Создаём папку, помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска, иконку).
6.1.2. Создаём в папке файл "Имя папки".cfg, редактируем его содержимое следующим образом:
Код

Name = Test
Exec = run.sh
Icon = icon.png
Author = Ant-ON
Version = 1.0
Comment = Port for ZN5 by EXL

Где, Name - имя программы, Exec - запускаемый файл, Icon - иконка, Author - Автор программы, Version - Версия программы, Comment - Комментарий.
6.1.3. Запаковываем папку в любой удобный вам архив (RAR, TAR, GZ, 7Z, ZIP), и переименовываем в "имя программы".mgx

6.2. Создание PEP пакета:
6.2.1. Создаём папку с именем "app", помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска).
6.2.2. Создаём рядом с папкой файл "description.ini", редактируем его содержимое следующим образом:
Код

[Actions]
Silent=0
InstallApp = 1  
AddAppToMenu = 1

[InstallApp]
Name = Jump n Blob
Exec = run.sh
InstallPath = ../../mmc/mmca1/.Programs/jump_n_blob/
AppLockable = 1
Author = http://www.2d-retroperspectives.org | Philipp. Port by -=Strelok=-, EXL (c) MotoFan.Ru 08.01.2010
Version = 0.1
Daemon = 1
BigIcon= icon.png
AniIcon= icon.png
Icon= icon.png

[AddAppToMenu]
ParentFolder= root

Где, Name - имя программы, Exec - запускаемый файл, Icon | AniIcon | BigIcon - иконка, Author - Автор программы, Version - Версия программы, InstallPath - Путь установки.
6.2.3. Создаём иконку, рядом с папкой "app" и "description.ini".
6.2.4. Запаковываем иконку, папку "app" и "description.ini" в архив формата TAR, затем сжимаем его в GZ переименовываем в "имя программы".pep

7. Полезные ссылки, документация, наши проекты.

7.1. Исходники, сайты с исходниками. Множество интересных проектов есть на code.google.com и sf.net
7.1.1. Исходники проектов, базирующихся на SDL:
libsdl.org/games
libsdl.org/demos
http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,46
http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,46
7.1.2. Исходники проектов, базирующихся на QT:
http://www.elsix.org/index.php?w=browse - В основном там под Sharp Zaurus, но идеи создания приложений и сорцы найти можно.

7.2. Документация, темы для прочтения:
Пробуем портировать игры и проги сами
Разработка софта под MOTOMAGX, начну небольшой HOWTO
Компиляция нативных приложений под E6/A1200, Создание окружения для компиляции
SDL библиотека
http://plg.lrn.ru/wiki/Заглавная_Страница
http://plg.lrn.ru/doc/sdl/index.html
http://doc.qt.nokia.com

7.3. Проекты:
http://code.google.com/p/open-mgx/ - исходники программ от Ant-On'a
http://code.google.com/p/sdl-magx/ - библиотека SDL HW для MotoMAgx от Ant-On'a
http://code.google.com/p/zmessanger/ - нативная аська, автор Ant-On
http://sourceforge.net/projects/qte2console/ - qte2console от DoomChisel
http://code.google.com/p/motocakerteam/ - исходники программ от испанцев MotoCakerTeam
http://code.google.com/p/zsoft/

8. Мануалы данной темы:

Если кто не может запустить ZN5Encoder в Magic box - пост #290
Нативные заставки на основе портированных мной и Neomoto демок! - пост #291
Мануал по установке Tmake в тулчейн, и правки созданного им MakeFile - пост #484
Изучение разделяемых библиотек (so) - пост #1440
Эмуляция нажатия клавиш на Motorola ZN5 - пост #1684


© EXL for MotoFan.Ru 27.08.2011
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21678
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21806
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21982
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 23247
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 16.9.2021, 23:41


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



VINRARUS,
Я не знаю по какой причине BeZ или другие разработчики Project Evolution решили сделать свой формат пакетов, ведь изначально для Z6 вроде как приложения паковали в MPKG. Исходники PEM точно не у меня, возможно они имеются у Ant-ON'а, как и срез репозиториев DarkTech, возможно там были приватные репозитории, где был код всяких zPlayer и многого остального, закрытого.

Все эти автозамены на форуме (кроме маторезки) я давно поубирал, они только мешают и усложняют жизнь. Я против введения подобного на форумах. Драму с BeZ'ом я только помню в разрезе истории с ZN5 и Symbiosis'ом. Кажется |DeN| внедрил в свой монстрпак этот PE Manager не спросив разрешения у BeZ'а. Коммерциализация ПО для MotoMAGX по моему скромному мнению была абсурдна во все времена и лучшим выходом наверное было бы прикручивание донатов и открытие всех наработок всем без каких-либо ограничений. Слишком маленький рынок и охват аудитории, чтобы думать о продаже фишек и приложений. В MotoMAGX как и в EZX всё держалось по сути на голом энтузиазме. Хотя вроде как в EZX была пара платных программ и даже разработчики с MotoFan'а пытались создать платные проекты. Но привело это примерно никуда и количество покупок вряд ли сильно отличалось от обыкновенных донатов.

Формат MGX примитивен и это кое-где его плюс. Потому что без каких либо проблем можно взять и распаковать MGX-пакет, который является архивом любого формата, который поддерживает p7zip, в нужную директорию и всё сразу будет работать. Ну а минус, действительно, у него вообще нет интеграции с системой, как у PEP. Но по идее это можно было бы сделать вот как в Linux, специальными post-install и pre-install скриптами, которые бы добавляли в автозапуск, делали файловые ассоциации и прочее подобное.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 18.9.2021, 9:25


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Вчера, 2:41)
* Потому что без каких либо проблем можно взять и распаковать MGX-пакет, который является архивом любого формата, который поддерживает p7zip

Вот токо в РЕ4 для Z6 случился примитивный прикол: p7zip по моему был древней версии и пакеты MGX не все можна было распаковать.
А ещо очень печалит прибивание софта гвоздями к /mmc/mmca1/mgxbox...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 18.9.2021, 21:58


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Сегодня, 10:25)
* А ещо очень печалит прибивание софта гвоздями к /mmc/mmca1/mgxbox...

Ну это если через mgxbox ставить, через своего пакмэна у меня они как нормальные пакеты в систему ставились.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 19.9.2021, 5:20


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Сегодня, 0:58)
* через своего пакмэна у меня они как нормальные пакеты в систему ставились.

Даже если в cкрипте запуска прописано
Код
exec /mmc/mmca1/mgxbox/soft/bin

?

Сообщение отредактировал VINRARUS - 19.9.2021, 5:21
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 20.9.2021, 23:22


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ 19.9.2021, 6:20)
* Даже если в cкрипте запуска прописано
Код
exec /mmc/mmca1/mgxbox/soft/bin

?


а если в скрипте запуска из pep будет вписано
Код
exec /mmc/mmca1/mgxbox/soft/bin

?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 23.9.2021, 11:14


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Решил воздать небольшую дань памяти Motorola ZINE ZN5. В начале года я нашёл свои резервные копии и на их основе быстро наваял огромный архив всех скачанных мною приложений для этого телефона. Недавно дошли руки и я отсортировал и обновил этот архив, добавив в него ещё несколько десятков пакетов, которые случайно пропустил. Если кто ранее скачал этот всеобъемлющий архив, то перекачайте его по ссылкам ниже:

Сервер MotoFan.Ru | зеркало | зеркало на Yandex.Disk (2.4 GiB, md5sum: 3624b858a4a053a534f0a2f4071bcacc)

Но это ещё не всё. Благодаря этому архиву и заблаговременно сохранённым страницам я восстановил ВСЕ утраченные битые скриншоты и пофиксил ВСЕ битые ссылки на файлы в темах:
  1. Нативные игры и эмуляторы для ZN5
  2. Нативные приложения для ZN5
Теперь там образцовый порядок, хоть выставляй эти темы на полку и в музей! Пару скриншотов мне помог восстановить fill.sa, за что ему громадное спасибо. Кроме того я добавил в эти темы несколько забытых мной приложений и игр, которые я собирался добавить, но всё никак не получалось.

ps.gif Ещё немного прошёлся по темам:
  1. Сервер игры Quake 2 на ZN5
  2. Софт для ZN5 и прочих MotoMAGX: MGX и PEP
  3. Python 2.5 + pyGame 0.9.1
  4. Bennu Game Development
И тоже подфиксил там многое битое. Так что, господа, напомню вам сохранять архивы и делать BackUp'ы. Полезная штука.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 23.9.2021, 14:46


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



EXL, вот это ты розрелизился! dribble.gif
Жалко со скинами не выйдет... mellow.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 24.9.2021, 7:52


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ 18.9.2021, 16:25)
* А ещо очень печалит прибивание софта гвоздями к /mmc/mmca1/mgxbox...

Да, пару старых MGX-пакетов были с такой вот бедой, как помню. Там ещё помнится была фигня с директориями "mgxbox" и "mpkgbox", как и названиями самих этих MgxBox'ов, MpkgBox'ов, Magic Box'ов и ещё всякой дичи. Никакой проработанной стандартизации не было, увы. По уму те же SDL-библиотеки в скрытую директорию лучше бы устанавливать, но уже был "стандарт" -- "games/lib", который наверное ещё со старых EZX'ов пришёл.

Цитата(VINRARUS @ Вчера, 21:46)
* Жалко со скинами не выйдет... mellow.gif

Да, скорее всего странички тем со скинами для ZN5 я не делал.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 27.9.2021, 16:20


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ 15.9.2021, 0:15)
* Шоб Я, и не пробовал? lol.gif Канешно пробовал давно.

Начал ковырять эту штуку с красной кнопкой, пока приготовил только прототип библиотеки для проверки возможности "перегрузки" этого слот-метода.
  • libredkey.so_noclose.tar -- По идее с этой либой активный виджет окна при нажатии на красную трубку должен скрываться, а не закрываться.
  • libredkey.so_close.tar -- А тут активный виджет закрывается в попытке вызова слота из библиотеки libezxappbase, очень важно проверить эту либу для последующей работы.
По идее запускать и тестировать нужно так, как это делал BeZ: LD_PRELOAD=libredkey.so "какая-нибудь программа" в Telnet'е, а далее нажимаем красную трубку и смотрим что происходит. И пожалуйста запостите логи при подгрузке первой и второй библиотек, на их основе будет производиться дальнейшая работа.

Потом после всех доработок по идее можно будет запускать эту либу перед am или вставить куда-нибудь в скрипты окружения, чтобы её действие распространялось глобально.
Прикрепленный файл libredkey.so_noclose.tar   ( 10 килобайт ) Кол-во скачиваний: 11
Прикрепленный файл libredkey.so_close.tar   ( 10 килобайт ) Кол-во скачиваний: 10
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.9.2021, 20:02


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Сегодня, 19:20)
* libredkey.so_noclose.tar -- По идее с этой либой активный виджет окна при нажатии на красную трубку должен скрываться, а не закрываться.

После красной закрывается визуально но висит ментально.
Код
# /usr/SYSqtapp/calculator/calculator
QT Show: 1024 setAltitude and requestFocus, winId:2240, fget:1, alt:0, fixed:1, order:1

RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.SoftButton No. 0 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!ZApplication::slotSystemMessage msg=LCDOn data=(null)
ZApplication::slotSystemMessage msg=DPL_BKLGT_RESTORED data=(null)
ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��x
libredkey.so: Info: Calling slotReturnToIdleFrom() method, parameter '-5000'.
libredkey.so: Info: Footprint is 'calculator:CALC_UI_Std:unnamed'
libredkey.so: Info: Trying to hide active widget instead of closing.
QT Show: 1024 requestFocus: lost, winId:2240

Цитата(EXL @ Сегодня, 19:20)
* libredkey.so_close.tar -- А тут активный виджет закрывается в попытке вызова слота из библиотеки libezxappbase, очень важно проверить эту либу для последующей работы.

Красной закрывается.
Код
# /usr/SYSqtapp/calculator/calculator
QT Show: 1085 setAltitude and requestFocus, winId:2291, fget:1, alt:0, fixed:1, order:1

RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.RES_ICON_Reader::getIcon: optmenu_item_bg_std.epx not found.SoftButton No. 0 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��x
libredkey.so: Info: Calling slotReturnToIdleFrom() method, parameter '-5000'.
libredkey.so: Info: Footprint is 'calculator:CALC_UI_Std:unnamed'
libredkey.so: Info: Trying to hide active widget instead of closing.
QT Show: 1085 requestFocus: lost, winId:2291

libredkey.so: Info: Copying address of method '_ZN12ZApplication16slotReturnToIdleEi': '0x418e7bdc'.



Добавлено позже (27.9.2021, 23:04):
Цитата(EXL @ Сегодня, 19:20)
* По идее запускать и тестировать нужно так, как это делал BeZ: LD_PRELOAD=libredkey.so "какая-нибудь программа"

Код
# export LD_PRELOAD=/home/libredkey.so
# /usr/SYSqtapp/calculator/calculator
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 27.9.2021, 20:29


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ Сегодня, 3:02)
* После красной закрывается визуально но висит ментально.

А через zTaskMan развернуть после такого визуального закрытия можно? Или через главное меню по нажатию на калькулятор?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.9.2021, 21:17


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Вчера, 23:29)
* А через zTaskMan развернуть после такого визуального закрытия можно? Или через главное меню по нажатию на калькулятор?

Не, п росто висит в процеса.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 29.9.2021, 10:04


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



VINRARUS,
Объясни мне пожалуйста принцип работы той подгружаемой библиотечки libtaskman.so от BeZ'а. Что именно происходило при нажатии красной кнопки? Просто игнорирование действия или сворачивание активного приложения в фон?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 29.9.2021, 19:14


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Сегодня, 13:04)
* Что именно происходило при нажатии красной кнопки? Просто игнорирование действия или сворачивание активного приложения в фон?

Игнорирование закрытия програмы.
А програмы в фоне (с libtaskman.so) не закрываются никогда карсной, токо таскменом убиваются.
Без этой либы фоновые програмы закрываются нажатием красной в любом месте.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 3.10.2021, 23:09


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



В общем, попытался сделать библиотеку libredkey.so, в которой поведение красной трубки можно настраивать глобально и для каждого приложения отдельно посредством конфигурационного файла. Увы писалось всё это без какого-либо устройства MotoMAGX, поэтому я наверняка где-то мог накосячить.

Суть в следующем, либа подгружается через LD_PRELOAD и хачит слот-метод ZApplication::slotReturnToIdle(int) у всех приложений, которые используют класс ZApplication для создания экземпляра приложения. Этот слот-метод вызывается с разными аргументами когда в приложении детектятся некоторые события, например, нажатие красной трубки, закрытие флипа, сдвиг слайдера и ещё какой-то тайм-аут видимо по неактивности диалогового окна. Как уже отметил выше VINRARUS, библиотеку можно погрузить для Shell-сессии, а глобально для всего UI телефона нужно в скрипты инициализации добавлять export LD_PRELOAD, наверное в /etc/initservices/services/ezxenv.sh или в /ezxlocal/medl/medl.conf, в общем я не уверен какой там скрипт autorun'а отрабатывает перед запуском UI-процессов, но думаю разобраться можно.

Пример конфига идёт в архиве, файлик "libredkey.cfg". Класть его нужно в корень карты памяти, то есть чтобы он был доступен по пути /mmc/mmca1/libredkey.cfg, это пока только для тестов, предлагайте более удобный путь. Может быть /ezxlocal/download/appwrite/setup/libredkey.cfg? По идее конфиг читается либой один раз после первого нажатия красной трубки, надеюсь никаких нюансов тут не всплывёт. Формат старался сделать максимально простой, никаких INI или XML, чтобы быстро читалось и парсилось.

На данный момент доступны следующие опции (копипаст примера конфига):

Код
# Включить или выключить отладочный режим LD_PRELOAD'нутой библиотеки libredkey.so
#
# Значения:
#    on -- Включить отладочный режим.
#    off -- Отключить отладочный режим.
#
# Совет: Включите отладочный режим для того чтобы собрать "отпечатки" окон приложений для индивидуальной конфигурации ниже.
#
Debug=on

# Глобальный режим работы, который должен применяться для всех приложений.
#
# Значения:
#    ignore               -- Игнорировать нажатия красной трубки во всех приложениях.
#    original             -- Использовать оригинальное поведение красной трубки в приложениях, то закрытие.
#    hide                 -- Скрыть окна приложения с использованием метода "hide()".
#    desktop              -- Вывести главный экран рабочего стола вместо закрытия приложения.
#    /<full path to app>/ -- Запустить приложение (например, zTaskMan) по полному пути по нажатию красной трубки вместо закрытия.
#
Global=original

# Индивидуальная конфигурация для каждого приложения в отдельности, формат следующий:
#    App=<widget footprint>|<mode>
#
# Examples:
#    App=calculator:CALC_UI_Std|ignore
#    App=calculator:CALC_UI_Std|original
#    App=calculator:CALC_UI_Std|hide
#    App=calculator:CALC_UI_Std|desktop
#    App=calculator:CALC_UI_Std|/mmc/mmca1/mgxbox/zTaskMan/zTaskMan
#
App=calculator:CALC_UI_Std|ignore
App=calculator:CALC_UI_Std_0|original
App=calculator:CALC_UI_Std_1|hide
App=calculator:CALC_UI_Std_2|desktop
App=calculator:CALC_UI_Std_3|/usr/bin/gnome-calculator

Распишу текстом более подробно. Например, чтобы отключить красную кнопку вообще в секцию Global следует вписать значение ignore. Включенный режим отладки полезен для сбора "отпечатков" окон, которые имеют формат: <имя исполняемого файла приложения:название класса окна>, при нажатии красной трубки в таком случае в Telnet будет сыпаться выхлоп вида:

Код
libredkey.so: Debug: Widget footprint is: 'test_app:MainWidget'

Строку в одинарных кавычках можно вписать далее в конфиг, например, для стандартного калькулятора это будет calculator:CALC_UI_Std, дальше через знак вертикальной черты "|" можно настроить уже индивидуальное поведение красной трубки для приложения калькулятора.

Опция original выполняет оригинальный слот-метод из дебрей библиотеки libezxappbase.so, то есть в данном случае приложение будет реагировать на красную трубку как и на оригинальной прошивке.

С опцией hide нужно быть осторожнее, метод сокрытия окна утянут из BeZ'овской библиотеки libtaskman.so и похоже что на ZN5 развернуть окно из hidden-состояния нормально невозможно, хотя на Z6 наверное всё работает нормально.

Опция desktop является как раз альтернативой опции hide, когда вместо сокрытия окон выводится просто интерфейс телефона активным окном. Эта методика была подсмотрена в исходниках zTaskMan от Ant-ON'а и похоже что она должна нормально работать на ZN5.

Опция запуска приложения довольно проста, следует просто вставить полный путь до приложения или скрипта и он запустится. Можно вписать туда полный путь к zTaskMan, например. Строка должна начинаться с символа "/", тогда она будет воспринята как команда на запуск.

Пока похоже это всё, потестируйте если у вас есть возможность и напишите ответы на вопросы, например, о том куда лучше положить конфигурационный файл.

Исходный код библиотеки: https://github.com/EXL/keyd/tree/master/libredkey

Прикреплённые файлы:
Прикрепленный файл libredkey.zip   ( 9.12 килобайт ) Кол-во скачиваний: 15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 6.10.2021, 13:03


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Ну что? Кто там скачал и молчит? Протестировал?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 9.10.2021, 13:52


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ 4.10.2021, 2:09)
* Увы писалось всё это без какого-либо устройства MotoMAGX, поэтому я наверняка где-то мог накосячить.

yes.gif
Цитата(EXL @ 4.10.2021, 2:09)
* Опция desktop является как раз альтернативой опции hide, когда вместо сокрытия окон выводится просто интерфейс телефона активным окном. Эта методика была подсмотрена в исходниках zTaskMan от Ant-ON'а и похоже что она должна нормально работать на ZN5.

Точно выполняется как в zTaskMan, где на 2й вкладке "свернуть всё" по факту развертает pid phone? blind.gif
А то оно не работает у тебя (Global=desktop) nea.gif
Код
# /usr/SYSqtapp/calculator/calculator
MEDL ERROR: 7353: framework/medl_obj/MedlObjNameMgr.cpp: IncCount: 989: owner circular link loop detectedMEDL ERROR: 7353: framework/medl_obj/MedlObjNameMgr.cpp: IncCount: 989: owner circular link loop detected
FAILED:kernel/qgfxmedl_qws.cpp::Allocate_Objects[317] and retval=9

QT: Error failed to allocate Objects.

depth=24,pixeltype=1,alpha.offset=18,alpha.length=6,red.offset=12,red.length=6,green.offset=6,green.length=6,blue.offset=0,blue.length=6

QT Show: 7353 setAltitude and requestFocus, winId:26147, fget:1, alt:0, fixed:1, order:1

SoftButton No. 0 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��x
libredkey.so: Debug: Calling slotReturnToIdleFrom() method, parameter '-5000'.
libredkey.so: Debug: Widget footprint is: 'calculator:CALC_UI_Std'
libredkey.so: Debug: Desktop command on 'calculator:CALC_UI_Std [global]' app.
libredkey.so: Debug: PID of 'phone' process is '0l'.

но если прописать
Код
Global=/usr/sbin/minimize

шо делает на ZiniMOD
Код
maximize `pidof phone`

то работает: при подгрузке LD_PRELOAD, перед запуском am, большынство софта (как стандартного так и натива кутяшного) при крисной свертается, а при повторном запуске с меню — развертается с нужного места Изображение, но галерея и настройки вафли игнорируют либу и закрываются красной.
Цитата(EXL @ 4.10.2021, 2:09)
* # ignore -- Игнорировать нажатия красной трубки во всех приложениях.
# original -- Использовать оригинальное поведение красной трубки в приложениях, то закрытие.

Эти настройки работают. happy.gif

Цитата(EXL @ 4.10.2021, 2:09)
* добавлять export LD_PRELOAD, наверное в /etc/initservices/services/ezxenv.sh

Вредно. Изображение
Цитата(EXL @ 4.10.2021, 2:09)
* По идее конфиг читается либой один раз после первого нажатия красной трубки, надеюсь никаких нюансов тут не всплывёт. Формат старался сделать максимально простой, никаких INI или XML, чтобы быстро читалось и парсилось.

Шобы быстро читалось и парсилось нада отказаться от коментариев в конфиге. Изображение
Не зря в Р2К настройки побитно в симах хранилися.
Цитата(EXL @ 4.10.2021, 2:09)
* Может быть /ezxlocal/download/appwrite/setup/libredkey.cfg?

В /proc/ Изображение
К сожалению лучше вообще без конфига, это я как опытный оптимизатор со стажэм говорю.Изображение

Добавлено позже (9.10.2021, 18:09):
Ну или через глобальные переменные настройки задавать.

Сообщение отредактировал VINRARUS - 9.10.2021, 14:03
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 9.10.2021, 16:08


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ Сегодня, 20:52)
* libredkey.so: Debug: PID of 'phone' process is '0l'.

Да, похоже я написав всё вслепую на C++ облажался в правильном вызове единственной Shell-команды для получения PID у процесса phone. Вместо busybox pidof -s phone вызывал busybox pidof -s /usr/SYSqtapp/phone/phone и оно на MotoMAGX почему-то не отрабатывало. Обновил либу, посмотри сейчас работает ли "desktop" режим.

Цитата(VINRARUS @ Сегодня, 20:52)
* то работает: при подгрузке LD_PRELOAD, перед запуском am, большынство софта (как стандартного так и натива кутяшного) при крисной свертается, а при повторном запуске с меню — развертается с нужного места, но галерея и настройки вафли игнорируют либу и закрываются красной.

Отлично! А галерея и настройки Wi-Fi отпечаток какой-нибудь дают в либе? Возможно там как-то по другому реализован выход, например, через exit(0) на красной трубке в фильтре обработки клавиатуры. В любом случае это не так критично.

Цитата(VINRARUS @ Сегодня, 20:52)
* К сожалению лучше вообще без конфига, это я как опытный оптимизатор со стажэм говорю.

А он читается лишь один раз при первом нажатии красной трубки, если библиотека подгружена перед am, так что оптимизировать там по сути и нечего. Кстати как ты перед am подгружаешь библиотеку? В medl.conf добавляешь строку или куда-нибудь в другое место?

Цитата(VINRARUS @ Сегодня, 20:52)
* maximize `pidof phone`

Бинарь maximize ты где взял? Есть его исходники? Но думаю что там вот такая вот функция примерно: QCopChannel::send().

ps.gif И всё-таки скажи, куда лучше класть этот конфиг, для keyd судя по всему я использовал директорию /ezxlocal/download/appwrite/setup/ либо читал конфиг рядом с исполняемым файлом.

Прикреплённые файлы:
Прикрепленный файл libredkey.zip   ( 9.14 килобайт ) Кол-во скачиваний: 14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 9.10.2021, 21:11


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Сегодня, 19:08)
* Да, похоже я написав всё вслепую на C++ облажался в правильном вызове единственной Shell-команды для получения PID у процесса phone.

А шо, в С++ нету функцыи аналогичной pidof? shok.gif Там же примитивное сканирование /proc...
Цитата(EXL @ Сегодня, 19:08)
* А он читается лишь один раз при первом нажатии красной трубки, если библиотека подгружена перед am, так что оптимизировать там по сути и нечего.

Ну вот на каждой програме лиш раз и читается по сто раз. wacko.gif
Цитата(EXL @ Сегодня, 19:08)
* В medl.conf добавляешь строку или куда-нибудь в другое место?

Перед запуском АМ скриптом.
Цитата(EXL @ Вчера, 19:08)
* Бинарь maximize ты где взял? Есть его исходники?

Тут.
Цитата(EXL @ Вчера, 19:08)
* И всё-таки скажи, куда лучше класть этот конфиг, для keyd судя по всему я использовал директорию /ezxlocal/download/appwrite/setup/ либо читал конфиг рядом с исполняемым файлом.

Лучше рядом, шоб можна было в конкретный софт встраивать, а не токо глобально в мод. blind.gif

Добавлено позже (10.10.2021, 0:13):
Цитата(EXL @ Вчера, 19:08)
* Обновил либу, посмотри сейчас работает ли "desktop" режим.

Работает.football.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 10.10.2021, 9:13


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Цитата(VINRARUS @ Сегодня, 0:11)
* Перед запуском АМ скриптом.

А в твоём моде какой скрипт вызывается перед запуском АМ? Куда эту строчку export LD_PRELOAD=/home/libredkey.so добавлять, чтобы оно глобально применилось?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 10.10.2021, 10:27


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Unreal_man, вот архив
Прикрепленный файл libredkey_for_ZiniMOD.zip   ( 8.72 килобайт ) Кол-во скачиваний: 14

распакуй его в папку /vin, шо в корне, можна прямо с ФМ кликнуть на него и указать путь распаковки, ну и перезапустись.
Подхватывается конфиг токо из /vin/libredkey.cfg
Токо ж ты должен понимать шо это лиш тестовая либа, её допиливать ещо, так как иногда проги фоновые закрываются, например после входа в диспетчер файлов. pardon.gif
Прикрепленный файл libredkey_for_ZiniMOD.zip   ( 8.72 килобайт ) Кол-во скачиваний: 14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 10.10.2021, 12:36


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Какой кайф
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 10.10.2021, 15:14


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



VINRARUS, Такой функции в стандартном С или C++ насколько я знаю, нет. Возможно есть где-то в библиотеках MotoMAGX нужная штука, но найти мне так просто её не удалось. Примитивное сканирование /proc на С или C++ вырастает в огромный листинг кода, например, тут подобная вещь. Тогда как вызов утилиты pidof (где уже этот код написан) мне показался лучшим решением для данной задачи. Возможно через MotoMAGX API которое на C++ можно как-то получить PID процесса phone или просто сделать raise() ему, но сходу я тоже не нашёл таких функций.

Насчёт конфигурационного файла сделал так. Конфиг можно положить в директорию /ezxlocal/download/appwrite/setup/, либо задать путь к нему в переменной окружения LIBREDKEY_CONFIG_PATH. Кроме того, сделал ещё "облегчённую" версию библиотеки libredkey_no_config.so в которой глобально активирован режим desktop с разворачиванием phone, заданная переменная окружения LIBREDKEY_ON с любым значением активирует библиотеку. Примеры для новых версий либ:

Код
LD_PRELOAD=libredkey.so LIBREDKEY_CONFIG_PATH=/mmc/mmca1/libredkey.cfg ./<some application>

export LD_PRELOAD=libredkey.so
export LIBREDKEY_CONFIG_PATH=/mmc/mmca1/libredkey.cfg
./<some application>

LIBREDKEY_ON=1 LD_PRELOAD=libredkey_no_config.so ./<some application>

export LD_PRELOAD=libredkey_no_config.so
export LIBREDKEY_ON=1
./<some application>


Напоминаю, что исходный код библиотеки доступен по ссылке: https://github.com/EXL/keyd/tree/master/libredkey

Добавлено позже (11.10.2021, 01:12):
ps.gif Подфиксил ещё небольшой баг (хотя не уверен что на ZN5 он бы проявился), кто уже скачал архив просьба перекать его.

Прикреплённые файлы:
Прикрепленный файл libredkey.zip   ( 13.39 килобайт ) Кол-во скачиваний: 11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 10.10.2021, 21:59


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Вчера, 18:14)
* Кроме того, сделал ещё "облегчённую" версию библиотеки libredkey_no_config.so в которой глобально активирован режим desktop с разворачиванием phone, заданная переменная окружения LIBREDKEY_ON с любым значением активирует библиотеку.

Вроде работает. Но диспеччер файлов реально закрывает фоновые проги шото через раз...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 11.10.2021, 1:20


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Цитата(VINRARUS @ 11.10.2021, 0:59) *

Цитата(EXL @ Вчера, 18:14)
* Кроме того, сделал ещё "облегчённую" версию библиотеки libredkey_no_config.so в которой глобально активирован режим desktop с разворачиванием phone, заданная переменная окружения LIBREDKEY_ON с любым значением активирует библиотеку.

Вроде работает. Но диспеччер файлов реально закрывает фоновые проги шото через раз...

Что ты делаешь с ним что он у тебя проги закрывает? И какие проги, родной натив? Кстати, напомни где ассоциации программ пишутся? Хочу текстовый редактор по-умолчанию поменять.

Сообщение отредактировал Unreal_man - 11.10.2021, 6:15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 11.10.2021, 5:36


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ Сегодня, 4:59)
* Вроде работает. Но диспеччер файлов реально закрывает фоновые проги шото через раз...

Может быть при запуске диспетчера файлов, если фоновых программ много, кому-то из них прилетает закрытие или вообще Killed в целях освобождения оперативной памяти?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 11.10.2021, 13:58


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Просто перестало всё работать. Ребут не помогает. Файлы в vin лежат.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 11.10.2021, 18:19


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(Unreal_man @ Сегодня, 16:58)
* Просто перестало всё работать. Ребут не помогает. Файлы в vin лежат.

Э? Удали 3 файла и опять распакуй туда.
Вообще проверяется подгрузка либы зелёной кнопкой таскмена по задаче.
Цитата(Unreal_man @ Сегодня, 4:20)
* Что ты делаешь с ним что он у тебя проги закрывает? И какие проги, родной натив?

Запустил калькулятор, красная, запустил ДФ, красная — ДФ свернуло, а калькулятор закрыло. wacko.gif
Цитата(Unreal_man @ Сегодня, 4:20)
* Кстати, напомни где ассоциации программ пишутся?

PEM spiteful.gif
Цитата(EXL @ Сегодня, 8:36)
* Может быть при запуске диспетчера файлов, если фоновых программ много, кому-то из них прилетает закрытие или вообще Killed в целях освобождения оперативной памяти?

При 128 Мб RAM +128 Мб swap? laugh.gif

Добавлено позже (11.10.2021, 21:26):
Код
# /usr/SYSqtapp/calculator/calculator &
# QT Show: 807 setAltitude and requestFocus, winId:1779, fget:1, alt:0, fixed:1, order:1

# /usr/SYSqtapp/mystuff/mystuff > /dev/null 2>&1SoftButton No. 0 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!SoftButton No. 1 is hidden, or it is empty!!!ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��x
libredkey.so: Debug: Calling slotReturnToIdleFrom() method, parameter '-5000'.
libredkey.so: Debug: Widget footprint is: 'calculator:CALC_UI_Std'
libredkey.so: Debug: Desktop command on 'calculator:CALC_UI_Std [global]' app.
libredkey.so: Debug: PID of 'phone' process is '280'.
libredkey.so: Debug: Will send message 'raise()' to the 'EZX/Application/280' channel.

ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��x
libredkey.so: Debug: Calling slotReturnToIdleFrom() method, parameter '-5000'.
ZApplication::slotSystemMessage msg=notifyAppKilled data=
notify app killed:{00000000-0000-0000-0000-000000000000}ZApplication::slotSystemMessage msg=notifyLauncheApp data=���{�C���@�ˇF
ZApplication::slotSystemMessage msg=ReturnToIdle(int) data=��w
libredkey.so: Debug: Calling slotReturnToIdleFrom() method, parameter '-5001'.
libredkey.so: Debug: Reason '-5001' is not implemented now.
libredkey.so: Debug: Copying address of method '_ZN12ZApplication16slotReturnToIdleEi': '0x418e7bdc'.
QT Show: 807 requestFocus: lost, winId:1779

PidMessage Raise()#



Сообщение отредактировал VINRARUS - 11.10.2021, 18:20
Прикрепленное изображение Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 11.10.2021, 18:51


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



VINRARUS,
Во дела! -5001 ивент должен прилетать туда лишь тогда, когда у телефона закрылся флип! Откуда на ZN5 флип? Дичь. -5002 ивент прилетает по таймауту, а -5003 прилетает по закрытию слайдера.

ps.gif Слот notifyAppKilled() вызывает подозрение что проблема просто не решится, но всё же проверь.

Прикреплённые файлы:
Прикрепленный файл libredkey.zip   ( 13.31 килобайт ) Кол-во скачиваний: 12
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 11.10.2021, 20:14


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



EXL, когда ДФ запускаеш цыфровая клава гаснет, может быть как то связано.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 12.10.2021, 4:15


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Удали 3 файла и опять
распакуй туда - не работает. В списке либ в таскмене по адресу vin/ ничего нет.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 12.10.2021, 10:06


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Вин, напомни, ты выкладывал здесь джаванэт? Кароч это скрипт, но я не помню как в список сетей добавить джаванэт. Напомни.
А еще забыл где хранится список профилей вызова. Хочу поудалять там и оставить активный и бесшумный.
А еще хочу таскмену запретить показывать букмарк. Где это делается?

Сообщение отредактировал Unreal_man - 12.10.2021, 14:19
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 17.10.2021, 14:47


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ 11.10.2021, 21:51)
* Слот notifyAppKilled() вызывает подозрение что проблема просто не решится, но всё же проверь.

Шото тестировал-тестировал и разницы в работе не заметил.
Интересно шо если калькулятор запустить с терминала, а ДФ запустить с меню то оно не закрывается, НО если и ДФ и калькулятор запустить или токо с меню, или токо с терминала — закрывается калькулятор как описано выше.
Ну и если запустить с терминала калькулятор, а потом с меню, то стартует 2й калькулятор, а если с меню токо то разворачивается. Видимо АМ следит токо за своими детками... pooh_on_ball.gif

Добавлено позже (17.10.2021, 17:50):
Цитата(Unreal_man @ 12.10.2021, 7:15)
* не работает.

Ну дай лог:
Код
ls -l /vin/
cat /vin/autorun3


Добавлено позже (17.10.2021, 17:55):
Цитата(Unreal_man @ 12.10.2021, 13:06)
* Вин, напомни, ты выкладывал здесь джаванэт? Кароч это скрипт, но я не помню как в список сетей добавить джаванэт. Напомни.

Так открой скрипт и почитай, это ж не бинарник. laugh.gif Я ж его на память не учу.
Цитата(Unreal_man @ 12.10.2021, 13:06)
* А еще забыл где хранится список профилей вызова. Хочу поудалять там и оставить активный и бесшумный.

В езлокал-довнлоад-апріте-сетуп конфиги лежат все.
Цитата(Unreal_man @ 12.10.2021, 13:06)
* А еще хочу таскмену запретить показывать букмарк. Где это делается?

там само
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 17.10.2021, 16:23


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 145
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



VINRARUS,
Хорошо, посмотрю что там за notifyAppKilled() и зачем оно нужно, как будет свободное время.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 18.10.2021, 11:57


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Цитата(VINRARUS @ Вчера, 17:47)
* Ну дай лог:


Код

# ls -l /vin/
-rwxrwxrwx    1 root     root           29 Jan  1 00:00 .vintimemod
-rwxrwxrwx    1 root     root           55 Sep 11  2013 IM
-rwxrwxrwx    1 root     root         1249 Jan  1 00:00 MF_Config.ini
-rwxrwxrwx    1 root     root           39 Sep 11  2013 VR
lrwxrwxrwx    1 root     root           27 Jan  1 00:00 _devdomain.txt -> /usr/vin/MOD/_devdomain.txt
lrwxrwxrwx    1 root     root           16 Jan  1 00:00 apmd -> /usr/bin/apmd532
-rwxrwxrwx    1 root     root           34 Oct 10  2021 autorun1
-rwxrwxrwx    1 root     root          946 Jan  3 00:01 autorun3
-rwxrwxrwx    1 root     root          233 Nov 11  2015 autostop
lrwxrwxrwx    1 root     root           38 Jan  1 00:00 camera -> /usr/SYSqtapp/camera/zinimod_camera.sh
-rwxrwxrwx    1 root     root          256 Sep  6  2013 ezx_flexbit.cfg
lrwxrwxrwx    1 root     root           38 Jan  1 00:00 ezx_mystuffstruct.cfg -> /usr/vin/MOD/NEW_ezx_mystuffstruct.cfg
-rwxrwxrwx    1 root     root           79 Oct 10  2021 galereya
-rwxrwxrwx    1 root     root           94 Nov 12  2015 key1.sh
-rwxrwxrwx    1 root     root          171 Jun 30  2015 key2.sh
-rwxrwxrwx    1 root     root           26 Nov 28  2012 key3.sh
lrwxrwxrwx    1 root     root           35 Oct 12  2021 libezxappbase.so.1.0.0 -> /usr/vin/MOD/libezxappbase.so.1.0.0
-rwxrwxrwx    1 root     root           25 Jan  3 00:01 libredkey.cfg
-rwxrwxrwx    1 root     root        18936 Jan  3 00:01 libredkey.so
lrwxrwxrwx    1 root     root           36 Jan  1 00:00 mpmdrv.ko -> /lib/modules/2.6.10_dev/740mpmdrv.ko
lrwxrwxrwx    1 root     root           35 Jan  1 00:00 native_screensaver -> /usr/SYSqtapp/am/native_screensaver
-rwxrwxrwx    1 root     root          145 Nov 30  2012 pep_settings.cfg
-rwxrwxrwx    1 root     root         9667 Jul  3  2015 shut_down.png
-rwxrwxrwx    1 root     root         1890 Nov 11  2015 start_message.sh
-rwxrwxrwx    1 root     root          457 Oct 12  2021 vin.sh
-rwxrwxrwx    1 root     root          262 Nov 12  2015 zinimod_camera.cfg

...
Код

# cat /vin/autorun3
#! /bin/sh
##AM
#/vin/autorun3
#10.10.2021 add /vin/libredkey.so
rm -f /tmp/zStartTime
if [ ! -f /tmp/zStartTime2 ]
then
    date > /tmp/zStartTime2
    /usr/vin/RUN/fixed_shell.sh
    if [ -f /mmc/mmca1/superstart.sh ]
    then
        date >> /mmc/mmca1/superstart.log
        /bin/sh /mmc/mmca1/superstart.sh >> /mmc/mmca1/superstart.log
        rm /mmc/mmca1/superstart.sh
    fi
    if [ "$vAvtoreg" != "0" ]
    then
        /usr/vin/RUN/avtoreg.sh &
    fi
    if [ -b "/dev/mmc/blk0/part1" ]
    then
        rm -rf /mmc/mmca1/.tmp
        mkdir /mmc/mmca1/.tmp
        echo "This is a temporary folder and all the files under it will be removed when power-cycled." > /mmc/mmca1/.tmp/README
    fi
fi
if [ "$vCopyPast" = "1" ]
then
    export LD_PRELOAD=/vin/libredkey.so:/usr/lib/libezxinput.so
else
    export LD_PRELOAD=/vin/libredkey.so
fi
if [ "$vAm" = "1" ]
then
    /usr/vin/MOD/am "$@"
else
    /usr/vin/am "$@"
fi
kill -9 $PPID
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 18.10.2021, 19:54


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Unreal_man, файл /tmp/zStartTime2 есть?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 18.10.2021, 23:12


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Цитата(VINRARUS @ Вчера, 22:54)
* файл /tmp/zStartTime2 есть?

да
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 19.10.2021, 4:01


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Unreal_man, перезапуск am в ручну не помагает?
ПС: либа должна подгружаться токо при запуске софта с меню.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Unreal_man
сообщение 19.10.2021, 10:13


Гуру
******

Группа: Разработчики
Сообщений: 732
Регистрация: 16.12.2009
Из: Другого Края Земли
Пользователь №: 211 211
Модель телефона: Motorola Moto Z Play


Настроение:
:-I



Рейтинг: 607



Цитата(VINRARUS @ 19.10.2021, 7:01) *

либа должна подгружаться токо при запуске софта с меню.

Вон ано чё Михалыч. Ну да, я либу поставил, потестил, а потом букмарк настроил и всё чудесно перестало работать. А шо ж так? Не порядок. Хочу из-под букмарка софт запускать. И чтоб ява из-под букмарка не запускалась новым экземпляром. И марожено.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 19.10.2021, 16:36


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(Unreal_man @ Сегодня, 13:13)
* Вон ано чё Михалыч. Ну да, я либу поставил, потестил, а потом букмарк настроил и всё чудесно перестало работать.

Семён Сенёнычччч... buba.gif
В скрипт /ezxlocal/zBookmark/system/run.sh как 2 строчку добавь:
Код
export LD_PRELOAD=/vin/libredkey.so:/usr/lib/libezxinput.so

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта · Motorola ZINE ZN5, ZN5 T-Mobile · Forum
 

46 страниц V « < 39 40 41 42 > » 
Ответ в темуСоздание новой темы
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 13.7.2025, 1:48

Форум живёт: