PDA-версия форума ASUSMobile.RU

Поиск - Профиль - Войти и проверить личные сообщения - Вход - Регистрация
Форум Asus Mobile Club Russia > Полезное > Раздел Разработчика и Программиста > dsm2xml - утилита для генерации файла кофигурации osb


[Ответить на тему]

vladbravo [22.09.10, 17:56] dsm2xml - утилита для генерации файла кофигурации osb:
Написал утилиту, генерирующую файл конфигурации.
Пакеты группируются либо по имени, либо по Lang, либо по DPI.
К сожалению, имеющееся у меня средство разработки не умеет ни unicode, ни XML, а то можно было бы имеющийся файл конфигурации перегруппировывать в любом порядке.

Тогда работа по включению - исключению пакетов сильно упрощается: сначала группируем по имени и отмечаем группы пакетов, которые хотим включить в сборку. Затем перегруппировываем пакеты и исключаем ненужные Lang и DPI.

Внимание! Утилита перезаписывает файл конфигурации по умолчанию!

Утилита предназначена для работы в multibuild-режиме.
Файлы должны находиться в папке tools в корне кухни, подключить в OSBuilder можно добавив в OSBuilder.osb строчки:

[spoiler:3beb15ec0e][OSBuilder.Utilities]
Count=3
Utility0=Создание конфигурации с группировкой по имени;".\TOOLS\dsm2xml_name.cmd"
Utility1=Создание конфигурации с группировкой по Lang;".\TOOLS\dsm2xml_lang.cmd"
Utility2=Создание конфигурации с группировкой по DPI;".\TOOLS\dsm2xml_dpi.cmd"[/spoiler:3beb15ec0e]

После создания утилитой файла конфигурации, в OSBuilder`е нужно выполнить меню "Выбрать конфигурацию для билда ХХХХХ".

Вынес в отдельную тему и прилепил, чтобы не потерялась в разделе. //Barin

[Ответить на тему]   Ответить с цитатой   
Alexx~ [23.09.10, 00:27] :
Вот хорошо, давно пора, у китайцев есть что то подобное, но бестолковое. Вечером потестирую.

Добавлено спустя 6 часов 20 минут 48 секунд:

Несколько замечаний/вопросов
1. Программа работает и в не multibuild-режиме.
2. Можно ли перенести все файлы в отдельную папку, например в ".\TOOLS\DSM2XML" ?
3. Программа формирует группы для всех пакетов, даже если он всего один (в режиме группировка по имени) - не вижу в этом смысла. Можно сделать, чтобы группировались только пакеты больше одного?
4. По идее у всех групп "Тип группы"должен быть "Группа - Контейнер", а не "Обычная группа". Можно как то задать Тип группы по умолчанию? (т.е. прописать " type="1" по умолчанию или сделать выбор типа опциональным)
5. Для устройств НТС была бы полезна обработка не только SYS, но и ОЕМ. Можно ли добавить такую функцию?

[Ответить на тему]   Ответить с цитатой   
vladbravo [23.09.10, 08:12] :
Alexx~ писал(а):
Вот хорошо, давно пора, у китайцев есть что то подобное, но бестолковое. Вечером потестирую.

Добавлено спустя 6 часов 20 минут 48 секунд:

Несколько замечаний/вопросов


Спасибо за замечания/вопросы, попробую учесть.

Но сразу хочу сказать, что для группировки по наименованию, да и для других группировок, группа контейнер не подходит.
В контейнере могут быть выбраны либо все либо ни один пакет, а нам нужно выбрать только необходимые Lang/DPI.

Основная цель этого эксперимента - показать возможность более удобной работы с группами пакетов.
Поэтому основной вопрос звучит так: удобнее будет работать с этими группами?
Нужно ли в группах по наименованию делать подгруппы Lang/DPI? И если да, то в какой последовательности?

Дальнейшее развитие группировки по наименованию - задание пользователем укрупнённых групп - "неиспользуемые", "обязательные", "исключаемые из версии light" и т.д.

Раньше я использовал несколько файлов конфигурации для разных вариантов прошивки. Сейчас можно было бы переключаться между вариантами прошивок несколькими галочками.

Есть идея передавать утилите указание на Lang (уже есть) и DPI с целью установки нужных галочек, тогда достаточно будет группировки по наименованию.

[Ответить на тему]   Ответить с цитатой   
vladbravo [23.09.10, 14:02] :
Доработал утилиту создания файла конфигурации:
- утилита перенесена в папку .\TOOLS\dsm2xml\

- в cmd-файлах добавились строки, задающие правила отметки пакетов:
Код:
set _dpi=dpi_192
set _dpi_res=%_dpi%_resh_480_resv_640


- добавились два списка наименований пакетов, которые попадут соответственно в группы "_mini" и "_unused".

- обрабатываются OEM и EXT.

По прежнему текущий файл конфигурации перезаписывается.

Создание конфигурации для билда 21915 all lang теперь занимает несколько кликов, нет нераспределённых пакетов.

К сожалению, до сих пор не решена проблема оформления пакета без группы, если он в этой группе один.

[Ответить на тему]   Ответить с цитатой   
Alexx~ [23.09.10, 14:58] :
vladbravo писал(а):
Но сразу хочу сказать, что для группировки по наименованию, да и для других группировок, группа контейнер не подходит.
В контейнере могут быть выбраны либо все либо ни один пакет, а нам нужно выбрать только необходимые Lang/DPI.

Теперь понял логику, но мне такое не нужно, т.е. я не использую multilang, а тем более multidpi. Ладно, значит будем exe-шник патчить Wink Blushing
vladbravo писал(а):
Основная цель этого эксперимента - показать возможность более удобной работы с группами пакетов.
Поэтому основной вопрос звучит так: удобнее будет работать с этими группами?
Нужно ли в группах по наименованию делать подгруппы Lang/DPI? И если да, то в какой последовательности?

Не совсем понимаю цель создания подгрупп lang, OSB ведь не даёт возможность работать одновременно с несколькими языками, мне кажется удобней просто делать для каждого языка свой конфиг.
Для dpi смысл есть, правда устройств для которых можно делать прошивки с разными dpi не так уж и много, но всё же есть. Для них будет удобно.
vladbravo писал(а):
Дальнейшее развитие группировки по наименованию - задание пользователем укрупнённых групп - "неиспользуемые", "обязательные", "исключаемые из версии light" и т.д.

Может быть есть смысл сделать по такому же принципу exceptions, т.е. зачем группировать пакеты BaseApps, OS, Shell, вряд ли появится необходимость исключать их из сборки.
vladbravo писал(а):

- обрабатываются OEM и EXT.
------------------------------
К сожалению, до сих пор не решена проблема оформления пакета без группы, если он в этой группе один.

С учётом добавленной обработки OEM и EXT это становится большой проблемой - решая одну, создаём другую. Может быть сделать опциональным выбор, т.к. это необходимо в основном для НТС, у которых ОЕМ структурирован аналогично SYS, на М10 например весь ОЕМ мной разбит на пакеты вручную и не имеет Lang пакетов.

[Ответить на тему]   Ответить с цитатой   
vladbravo [23.09.10, 15:28] :
Цитата:
Теперь понял логику, но мне такое не нужно, т.е. я не использую multilang, а тем более multidpi. Ладно, значит будем exe-шник патчить Wink Blushing

А что нужно?
Патчить - это всегда пожалуйста, исходники прилагаются.
Цитата:
Не совсем понимаю цель создания подгрупп lang, OSB ведь не даёт возможность работать одновременно с несколькими языками, мне кажется удобней просто делать для каждого языка свой конфиг.
Для dpi смысл есть, правда устройств для которых можно делать прошивки с разными dpi не так уж и много, но всё же есть. Для них будет удобно.

Первоначальная идея была такова: группируем пакеты по наименованию, отмечаем нужное. В отмеченных группах отметятся все пакеты не зависимо от Lang и DPI. затем перегруппируем пакеты по Lang. Отметки должны остаться на своих местах. В этой группировке легко снять галочки со всех ненужных языков.
Аналогично поступаем с DPI - перегруппировываем пакеты и снимаем галочки с ненужных DPI.
Цитата:
С учётом добавленной обработки OEM и EXT это становится большой проблемой - решая одну, создаём другую. Может быть сделать опциональным выбор, т.к. это необходимо в основном для НТС, у которых ОЕМ структурирован аналогично SYS, на М10 например весь ОЕМ мной разбит на пакеты вручную и не имеет Lang пакетов.

Я так понимаю, что новая проблема в том, что ОЕМ-пакеты оказываются в дополнительных одноимённых подгруппах...
Да, надо решить проблему группировки единственного пакета...

SYS у меня содержит все пакеты-языки-разрешения - для возможного использования их для разных устройств.
Работа с языками в OS Builder`е для меня недостаточно функциональна. У меня есть ОЕМ для двух языков, нет проблем сделать и для всех языков, но как их правильно активизировать? Оставить в нераспределённых, что бы OS Builder их сам отсеивал? Все не отсеит, например themes останутся и многие другие. Перенести в распределённые - там всё решает поставленная вручную галочка, а зачёркнутый шрифт - только для подсказки.
Вторая версия утилиты генерирует конфигурацию с отключенными ненужными языками, а ненужные приложения отключаются со всем содержимым - со всеми языками и разрешениями.

[Ответить на тему]   Ответить с цитатой   
NightOWL [23.09.10, 16:21] :
vladbravo
Я для своего аппарата тоже ОЕМ разбил на пакеты и у меня есть два языковых пакета OEM_Lang_0419 и OEM_Lang_0409 и соответственно прошивки собираю с разным составом ОЕМ. Поэтому обработку ОЕМ хотелось бы оставить полноценной. С активацией языков в OSBuilder вроде проблем нет, выбираю 0419 активируется пакет OEM_Lang_0419 и наоборот или Вы не о том?

2 модераторам
Может, имеет смысл вынести обсуждение по dsm2xml в отдельную тему?

[Ответить на тему]   Ответить с цитатой   
Mikhei777 [04.10.10, 21:02] :
Обработал только папку SYS... хотелось бы EXT и OEM

[Ответить на тему]   Ответить с цитатой   
NightOWL [07.10.10, 14:32] :
Mikhei777
Последняя, 3-я версия, нормально обрабатывает все папки EXT, OEM и SYS.

[Ответить на тему]   Ответить с цитатой   
vladbravo [07.10.10, 15:07] :
NightOWL писал(а):
Mikhei777
Последняя, 3-я версия, нормально обрабатывает все папки EXT, OEM и SYS.

Вот четвёртая версия.
Настройка dpi и dpi_res перенесена в dsm2xml.ini
Кроме этой настройки там находится количество файлов и количество подстановок.
Далее идёт описание файлов и подстановок.

Описание файла:
[Group1]
; Имя файла, содержащего перечень пакетов, которые будут помещены в группу
FileName=mini.lst
; Имя группы
GroupName=_mini
; Тип группы
GroupType=0
; Пометка для пакетов в группе
checked=False
; Пакет в группе с необязательным выбором, который будет выбран по умолчанию
DefaultPackage=

Описание подстановки:
[Subst1]
; Имя пакета
PackageName=Bronze
; Группа пакета
GroupName=CHome

Думаю над тем, как указать утилите задание на перенос пакета из одной главной группы (SYS, OEM, EXT) в какую-нибудь другую?
Всё-таки без многомерности и перечитывания имеющегося xml трудновато сделать плоскую структуру пакетов для любых нужд.
А хотелось бы быстро переключаться между измерениями: с lang и dpi вроде понятно, но и варианты сборки, наличие или отсутствие каких-то приложений тоже можно рассматривать как измерение, затрагивающее многие пакеты.
Например, если я собираю прошивку без BlueTooth, то в OEM вместо QuickListBT мне понадобится пакет QuickList.
Тогда разрез по этому признаку выглядел бы примерно так:
- _no - приложения, не затрагиваемые измерением
- BlueTooth - приложения SYS и OEM, включаемые при наличии Блютуса
- noBlueTooth - приложения SYS и OEM, включаемые без поддержки Блютуса

Включаем нужный режим (включатся все lang и dpi), переходим к разрезу lang, отключаем ненужные языки, затем отключаем ненужные dpi - всё.
Потом можно переключиться в режим по наименованиям пакетов и наслаждаться точно выставленными галочками...

Посоветуйте средство разработки, нормально работающее с xml и unicode - перепишу имеющуюся утилиту и доделаю нормальную работу с измерениями.

Добавлено спустя 13 минут 47 секунд:

Может быть вообще отдельный редактор файла конфигурации сделать с графическим интерфейсом?
Попробую это сделать в имеющемся Delphi 6

[Ответить на тему]   Ответить с цитатой   
NightOWL [07.10.10, 17:53] :
vladbravo писал(а):
Думаю над тем, как указать утилите задание на перенос пакета из одной главной группы (SYS, OEM, EXT) в какую-нибудь другую?
А разве нельзя так же, через подстановку? С другой стороны, а зачем, если пакет лежит не в той папке, проще его физически туда перекинуть раз и навсегда?

Еще хорошо бы добавить группу, пакеты в которой вообще не надо трогать, т.е. оставить их в нераспределённых.

Насчет ветвления вариантов может реализовать как-то через "ЕСЛИ", т.е. например отсортировали по имени затем, если сняли отметку с ПАКЕТА1 то, после следующей сортировки, все пакеты прописанные в настройке как зависимые от присутствия ПАКЕТА1, отключить.

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

[Ответить на тему]   Ответить с цитатой   
vladbravo [08.10.10, 11:23] :
Пятая версия утилиты.
Добавлен файл с описаниями пакетов.
Из-за корявой обработки unicode, допускаются только латинские буквы, недопускаются символы двойная кавычка, больше, меньше.

Исправлен алгоритм формирования группы с необязательным выбором (тип 2). Теперь, если существует только один пакет, который должен попасть в эту группу, то группа не создаётся.

Добавлен файл с перечнем пакетов, с которых пометка будет снята.
Пакеты остаются на своих местах.

На данном этапе я уже полностью satisfied, качественный скачек возможен только при переходе на новое средство разработки...

[Ответить на тему]   Ответить с цитатой   

[Ответить на тему]

Форум Asus Mobile Club Russia > Полезное > Раздел Разработчика и Программиста > dsm2xml - утилита для генерации файла кофигурации osb