月別アーカイブ: 2009年11月

AIR 2.0 用ネイティブインストーラ生成 Ant 設定ファイル

Touch Viewer リリース後に作った副産物ですが、Win/Mac 両対応するように強化したので晒しておきます。

下記画像のような Flex プロジェクトのフォルダ構造を保っていれば、build.xml を実行するだけで、各 OS に対応した .exe や .dmg を書き出すことができます。

Flash Builder 4 β 2 で作成したサンプル Flex(AIR) プロジェクト

<?xml version="1.0" encoding="utf-8"?>
<!--
build.xml
-->
<project name="≪ プロジェクト名 ≫" basedir="." default="init">

   <condition property="os" value="≪ Flex SDK のフルパス (Windows) ≫">
       <os family="windows" />
   </condition>
   <condition property="os" value="≪ Flex SDK のフルパス (Mac) ≫">
       <os family="mac" />
   </condition>

   <condition property="suffix" value=".exe">
       <os family="windows" />
   </condition>
   <condition property="suffix" value=".dmg">
       <os family="mac" />
   </condition>

   <property name="FLEX_HOME"           value="${os}"                                  />
   <property name="ADT.JAR"             value="${FLEX_HOME}/lib/adt.jar"               />
   <property name="AIR_CONFIG"          value="${FLEX_HOME}/frameworks/air-config.xml" />
   <property name="FLEX_TASKS_JAR"      value="${FLEX_HOME}/ant/lib/flexTasks.jar"     />
   <property name="APP_ROOT_DIR"        value="src"                                    />
   <property name="ASSET_DIR"           value="asset"                                  />
   <property name="ICON_DIR"            value="${ASSET_DIR}/icon"                      />
   <property name="APP_NAME"            value="${ant.project.name}"                    />
   <property name="AIRI_NAME"           value="${APP_NAME}.airi"                       />
   <property name="DESCRIPTOR_NAME"     value="${APP_NAME}-app.xml"                    />
   <property name="NATIVE_APP_NAME"     value="${APP_NAME}${suffix}"                   />
   <property name="SWF_NAME"            value="${APP_NAME}.swf"                        />
   <property name="APP_ROOT_FILE"       value="${APP_ROOT_DIR}/${APP_NAME}.mxml"       />
   <property name="APP_ROOT_DESCRIPTOR" value="${APP_ROOT_DIR}/${APP_NAME}-app.xml"    />
   <property name="KEYSTORE"            value="≪デジタル証明書ファイル名≫.p12"       />
   <property name="STORETYPE"           value="pkcs12"                                 />
   <property name="STOREPASS"           value="≪デジタル証明書のパスワード≫"         />

   <taskdef resource="flexTasks.tasks" classpath="${FLEX_TASKS_JAR}" />

   <target name="resources">
       <copy
           file   = "${APP_ROOT_DESCRIPTOR}"
           tofile = "${APP_NAME}-app.xml"
        />
       <replaceregexp
           file    = "${APP_NAME}-app.xml"
           match   = "<content>.+?</content>"
           replace = "<content>${APP_NAME}.swf</content>"
        />
       <copy toDir="${ICON_DIR}">
           <fileset dir="${APP_ROOT_DIR}/${ICON_DIR}" />
       </copy>
   </target>

   <target name="amxmlc" depends="resources">
       <mxmlc
           file                       = "${APP_ROOT_FILE}"
           output                     = "${SWF_NAME}"
           configname                 = "air"
           actionscript-file-encoding = "UTF-8"
           incremental                = "true"
           debug                      = "false"
           optimize                   = "true"
           target-player              = "10"
       >
           <load-config filename="${AIR_CONFIG}" />
       </mxmlc>
   </target>

   <target name="prepare" depends="amxmlc">
       <java jar="${ADT.JAR}" fork="true" failonerror="true">
           <arg value = "-prepare"           />
           <arg value = "${AIRI_NAME}"       />
           <arg value = "${DESCRIPTOR_NAME}" />
           <arg value = "${SWF_NAME}"        />
           <arg value = "${ICON_DIR}"        />
       </java>
   </target>

   <target name="package" depends="prepare">
       <java jar="${ADT.JAR}" fork="true" failonerror="true">
           <arg value = "-package"           />
           <arg value = "-storetype"         />
           <arg value = "${STORETYPE}"       />
           <arg value = "-keystore"          />
           <arg value = "${KEYSTORE}"        />
           <arg value = "-storepass"         />
           <arg value = "${STOREPASS}"       />
           <arg value = "-target"            />
           <arg value = "native"             />
           <arg value = "${NATIVE_APP_NAME}" />
           <arg value = "${AIRI_NAME}"       />
       </java>
   </target>

   <target name="clean" depends="package">
       <delete dir  = "${ASSET_DIR}"       />
       <delete file = "${AIRI_NAME}"       />
       <delete file = "${SWF_NAME}"        />
       <delete file = "${SWF_NAME}.cache"  />
       <delete file = "${DESCRIPTOR_NAME}" />
   </target>

   <target name="init" depends="clean" />

</project>

Adobe AIR 2.0 beta サンプルアプリケーション

昨日、Adobe Labs にて Flash Player 10.1 と AIR 2.0 のパブリック beta 版が公開されましたが、このリリースに併せて、日本のアドビのサイトより、AIR 2.0 beta のサンプルアプリケーションと解説記事が公開されました。
http://www.adobe.com/jp/joc/air2/samples/

私も、サンプルアプリケーション開発と記事執筆に携わっています。
http://www.adobe.com/jp/devnet/air/articles/touchviewer.html

元々、先月 (10/31) と今月 (11/5) に行われた FxUG 勉強会 ( 熊本、東京 ) のために用意していたサンプルアプリだったのですが、アドビさんのご厚意により、今回の公開に至りました。

また、来週 (11/26) に Adobe AIR Day という AIR 2.0 beta のお披露目イベントがありますが、その場で開発 Tips やデモを行います。平日のお昼から開催されるイベントですが、興味のある方は是非お越しください。

Adobe AIR Day
http://www.info-event.jp/adobe/air/

ちなみに、Mac 版のサンプルアプリケーション (Touch Viewer) には、『タイルのリストを選択したとき、2 回目以降に開いたネイティブウィンドウからジェスチャーイベントを取得できない』という既知のバグがあります。ランタイムの問題か SDK の問題か定かではありませんが、現在問合わせ中です。

Adobe AIR コード署名証明書を取得しました

証明書付き AIR アプリケーション インストールダイアログ

Adobe AIR の署名に日本国内で唯一対応している証明機関は GMO グローバルサイン株式会社なのですが、残念なことに個人/個人事業主からの申し込みは受け付けられないようです。 ( 2010 年 3 月 3 日追記 : この記事を書いた時点での内容です。現在、GMO グローバルサイン株式会社でも、個人向けの証明書の発行が可能になっています。 )

なので、私のような個人事業主がコード署名証明書を取得するためには、海外の証明機関に申請する必要があります。

証明機関に関する情報は Adobe AIR のヘルプに記載されていますが、Ryan Stewart 氏のブログを読む限りでは、 Chosen Security 社がおすすめらしいので申し込んでみました。以下手順になります。

  1. Chosen Security 社の AIR コード署名証明書購入ページを開きます。
    http://www.chosensecurity.com/tc-publisher-id-for-adobe-air

  2. [Buy TC Publisher ID for Adobe Air for Individual Developers] をクリックして購入手続きへ移動します。

  3. 必要な情報を入力して決済手続きを終えると、入力メールアドレス宛に 2 通メールが届きます。 ( 1 通は個人識別番号 (PIN) が記載されたメール、もう 1 通は証明書発行申請 PDF ファイルが添付されたメール )

  4. 証明書発行申請 PDF ファイル内記述箇所に必要な情報を入力して、メール本文に記載されている ChosenSecurity Support のメールアドレス宛に送付します。 ( 添付 PDF が送られてくるメールアドレスとは異なるので、注意が必要です )

    証明書発行申請 PDF ファイルの記述例をアップしておきます。( 記述例はこちら )

    メールの本文に悩む方は、下記文章を参考にしてください。

    Dear Sir/Madam

    I request a TC Publisher ID for Adobe AIR.
    Please confirm an attached PDF file.


    Sincerely,
  5. Chosen Security 社の担当者から、証明書発行申請の受理通知メールが届きます。

  6. 2 営業日くらいで、証明書ダウンロードサイトの URL が記述されたメールが届きます。

  7. 個人識別番号 (PIN) を入力すると、証明書をダウンロードすることができます。
    この個人識別番号 (PIN) は、AIR ファイルを書き出すためのパスワードにもなります。

以上で、怪しい「オレオレ証明書」付きの AIR アプリケーションともサヨナラです。
自分の作った AIR アプリで、以下のような画面を晒すこともなくなります。

オレオレ証明書付き AIR アプリケーション インストールダイアログ

参考

Adobe MAX 2009 参加レポートを寄稿しました

ご存知の方も多いと思いますが、先月上旬に参加してきた Adobe MAX 2009 のレポートが、Adobe イベント・セミナー レポートページに掲載されました。

Adobe MAX 2009 デベロッパー視点で見る、Adobe MAX 2009 の見所
http://www.adobe.com/jp/joc/events/max2009/users_report/developer/

あと、ノンクレジットではありますが、下記記事の執筆、写真撮影に携わっています。

基調講演1日目
http://www.adobe.com/jp/joc/events/max2009/

基調講演2日目
http://www.adobe.com/jp/joc/events/max2009/page2.html

Adobe Office in San Francisco “Japan Session”
http://www.adobe.com/jp/joc/events/max2009/session/japan/

明日の FxUG 東京勉強会では、参加レポート報告と AIR 2.0 のデモを行います。
Flex 勉強会 第 89 回@東京参加受付