Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передача СВОИХ параметров на этапе компиляции (http://www.flasher.ru/forum/showthread.php?t=158189)

Gogan 16.06.2011 15:06

Передача СВОИХ параметров на этапе компиляции
 
Необходимо во флешку встроить версионность. Тоесть билд машина собирает проект и каким то образом в swf-ку необходимо при этом передать версию билда. Я полагаю какие либо свои параметры необходимо передавать вместе с допустимыми параметрами компиляции. Но как их передавать и как их обрабатывать не могу найти.

_sestra_ 16.06.2011 15:37

1) Во Flash Builder 4 -> Проект -> Свойства -> Компилятор (ActionScript/библиотеки Flex/...) -> Дополнительные аргументы компилятора:
Код:

-define=NAMESPACE::version,'1.0.0'
2) Используя compc и mxmlc запись аналогична, отличия только в синтаксисе шела (Win, Unix,...)

Достучаться до значения так:
Код AS3:

NAMESPACE::version


Gogan 16.06.2011 15:51

По красоте ! Спасибо! То что нужно!

Crazy 16.06.2011 16:09

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

Второй вариант -- когда номера билдов должны быть четко связаны со списком изменений. Для subversion это делается, к примеру, так: создаем отдельный файл (Buildinfo.as, к примеру), в который будем вносить информацию об изменениях в конкретном билде. В нем же пишет плейсхолдер для номера билда:

Код AS3:

var version:String="$Rev: 1 $";

Затем сообщаем svn, что нужно обновлять ревизию:

Код:

svn propset svn:keywords "Rev" Buildinfo.as
Теперь перед созданием нового билда вписываем в файл информацию об изменениях и при коммите svn сам впишет новый номер ревизии.

dimarik 16.06.2011 21:37

Цитата:

Сообщение от Crazy (Сообщение 1004123)
Теперь перед созданием нового билда вписываем в файл информацию об изменениях и при коммите svn сам впишет новый номер ревизии.

Вот этот момент чуть подробнее осветите, пожалуйста. Как вписываем, что вписываем.
Я просто бы слегка модифицировал его каждый раз, чтобы он получил новый номер ревизии при коммите.
Однако это не спасает, когда нужно учитывать номер билда. Вы же не каждый раз коммитите сырцы тестового билда.

wvxvw 16.06.2011 22:10

Код:

<exec executable="svn" property="svn.info" output="version.txt">
    <arg line="info"/>
</exec>

Естественно, использовать output, когда нужно в файл, который потом прилинковать, property, если нужно в самом билд скрипте получить. (Ант) Можно еще с filterchain поизвращаться, если нужно красивое форматирование.
bash / любой другой шелл:
Код:

svn info | awk '/Revision: / { print $2 }' | ваши действия
... :)

dimarik 16.06.2011 23:01

Олег, как поможет это в случаях с билдами, не попадающими в свн?

Crazy 16.06.2011 23:02

Цитата:

Сообщение от dimarik (Сообщение 1004216)
Вот этот момент чуть подробнее осветите, пожалуйста. Как вписываем, что вписываем.
Я просто бы слегка модифицировал его каждый раз, чтобы он получил новый номер ревизии при коммите.
Однако это не спасает, когда нужно учитывать номер билда. Вы же не каждый раз коммитите сырцы тестового билда.

Мне нужно, чтобы билд, попадающий в тестирование, имел номер и список изменений -- персональный номер на каждую отдельную сборку мне не нужен. Соответственно, когда проект готовится к передаче в тестирование -- в Buildinfo вписывается информация об изменениях, которые готовы к тестированию. И при коммите получает автоматически новый номер. Несколько упрощенно это будет выглядеть так:


Код AS3:

package some.project.build 
{
 
  final public class BuildInfo
  {
 
 
    private function defineChanges():void
    {
      bugfix(1001, "Приклеили хвост крокодилу");
      feature(1002, "Научили крокодила летать");
      bug(1003, "Увы, летает пока низковато");
    }
 
    private var _buildString:String = "$Rev: 1 $";
    private var _buildNo;
    private var _changes:Vector.<ChangeInfo> = new Vector.<ChangeInfo>();
 
    public function BuildInfo()
    {
      _buildNo = extractBuildNo(_buildString);
      defineChanges();
    }
 
    // ну и здесь всякие свойства, extractBuildNo(), bugfix() etc
 
  }
 
}

Пишу по памяти, возможны опечатки.

Что с этого получаем:

1. Номер версии и список изменений доступны приложению (в about'е показать, к примеру)
2. Известно, что тестировщики будут знать, что тестировать.
3. Нельзя забыть назначить номер версии.
4. Мелкие правки, вносимые после коммита этого файла, не сбивают номер сборки (да, я знаю, что в кривых руках это чревато)

Добавлено через 1 минуту
Цитата:

Сообщение от dimarik (Сообщение 1004226)
Олег, как поможет это в случаях с билдами, не попадающими в свн?

Если билд не попадает в репозиторий, а значит невоспроизводим, то зачем ему персональный номер?

dimarik 16.06.2011 23:18

Я Вас понял. У нас разные понятия билда. Любое F10 во FB после изменения сырца я почему-то считаю билдом.

Это нисколечко не изменяет суть описанного Вами выше. Просто номер билда будет верным.

Crazy 16.06.2011 23:51

Как можно на практике использовать это "любое" значение?


Часовой пояс GMT +4, время: 13:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.