ANTを使用してビルディングフラッシュアプリ/ゲームを自動化する例のコレクション。それは料理の本または学習リソースであることを意図しているため、各例は可能な限り小さく、自己記述する必要があります。
ビルドの継続的な統合を準備してください!
まず、JRE(Javaランタイム環境)をインストールする必要があります。すべてを確認するには、予想どおりに機能するようにするには、ターミナルに$ javaと入力してください。
次に、http://ant.apache.org/bindownload.cgiからアリをダウンロードする必要があります。ダウンロードした.zipファイルを抽出してください。〜 ~/sdks/antディレクトリ、 ANT_HOME環境変数をこの場所に設定し、 ANT_HOME PATHに追加します。
${ANT_HOME}/bin (macos)または%ANT_HOME%/bin (windows)
すべてを確認するには、予想どおりに機能するには、ターミナルに$ antを入力してください。
MacOSを使用している場合は、brew:
$ brew install antを添えてAntをインストールできます
Adobe Flash Builder 4.7を使用している場合、Air SDK at /Applications/Adobe Flash Builder 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722 (MacOS)またはC:Program Files (x86)AdobeAdobe Flash Builder 4.7eclipsepluginscom.adobe.flash.compiler_4.7.0.349722 (Windows)。
それ以外の場合は、http://www.adobe.com/devnet/air/air-sdk-download.htmlからダウンロードできます。 ~/sdks/airディレクトリとしましょう。
Adobe Flash Builder 4.7を使用している場合は、 <FlashBuilder_installation_location>/sdksでFlex SDKSディレクトリを見つけることができます。
それ以外の場合は、手動でダウンロードしてインストールする必要があります。個人的には、http://www.adobe.com/devnet/flex/flex-sdk-download.htmlからダウンロードできます。 ~/sdks/flexディレクトリとしましょう。ただし、現在Apacheによって開発されているFlex SDKの最新バージョンを使用することをお勧めします。その場合は、http://flex.apache.org/installer.htmlを使用してインストールできます。
FLEX_HOME環境変数を設定し、 PATHに追加する必要があります。
アプリケーションコンパイラを使用して、ActionScriptおよび/またはMXMLソースファイルからSWFファイルをコンパイルします。
コンポーネントコンパイラを使用して、コンポーネントソースファイルや画像やスタイルシートなどのその他のアセットファイルからSWCファイルを生成します。
コマンドラインMXMLコンパイラ(AMXMLC)を使用して、AIRアプリケーションのActionScriptおよびMXMLアセットをコンパイルできます。
コンポーネントコンパイラであるACOMPCを使用して、エアライブラリと独立したコンポーネントをコンパイルします。
ASDOCは、API Language Reference Documentationを使用して、ActionScriptクラスおよびMXMLファイルからHTMLページとして使用できるコマンドラインツールです。
エア開発者ツールは、航空アプリケーションを開発するための多目的コマンドラインツールです。 ADTを使用して、次のタスクを実行できます。
エアデバッグランチャーを使用して、開発中にSWFベースのアプリケーションとHTMLベースのアプリケーションの両方を実行します。 ADLを使用して、最初のパッケージとインストールなしでアプリケーションを実行できます。デフォルトでは、ADLはSDKに含まれるランタイムを使用します。つまり、ADLを使用するためにランタイムを個別にインストールする必要はありません。
bin/output.swcファイルを構築する方法を説明する最もシンプルなant build.xmlファイル:
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
</ compc >
</ target >
</ project >このプロジェクトには、リンクされた.swcライブラリを備えたlibsディレクトリが含まれているとしましょう。 Compcにそれらを見つける場所を伝えなければなりません:
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ compc >
</ target >
</ project >または、どこにでもある.swcファイルを指定したい場合:
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path file = " lib.swc " append = " true " />
</ compc >
</ target >
</ project >これで、カスタムメタデータを使用しており、コンパイルされたアプリケーションにそれらを維持したいと考えています(デフォルトの動作は、アプリケーション/ライブラリを可能な限り小さく保つためにそれらを削除することです):
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
< keep-as3-metadata name = " Inject " />
< keep-as3-metadata name = " PostConstruct " />
< keep-as3-metadata name = " ArrayElementType " />
</ compc >
</ target >
</ project >< compc ... target-player = " 11.4 " swf-version = " 17 " /> FLEX_HOME/frameworks/libs/player/<target-version>/playerglobal.swcおよび${FLEX_HOME}/runtimes/player/<target-version>/.../FlashPlayerDebuggerが存在するかどうかを忘れずに確認してください。 http://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.htmlで、playerglobal.swcおよびフラッシュプレーヤーのデバッガーのすべてのリリースバージョンを見つけることができます。
| SWFバージョン | ターゲットプレイヤー |
|---|---|
| 9 | 9 |
| 10 | 10.0、10.1 |
| 11 | 10.2 |
| 12 | 10.3 |
| 13 | 11.0 |
| 14 | 11.1 |
| 15 | 11.2 |
| 16 | 11.3 |
| 17 | 11.4 |
| 18 | 11.5 |
| 19 | 11.6 |
| 20 | 11.7 |
| 21 | 11.8 |
| 22 | 11.9 |
| 23 | 12.0 |
| 24 | 13.0 |
| 25 | 14.0 |
| 26 | 15.0 |
| 27 | 16.0 |
COMPCオプションを見てみましょう。より詳細な情報に興味がある場合は、Config、Size Report、Link Reportを捨てることができます。
< compc ... dump-config = " ${DEPLOY.dir}/config.xml " size-report = " ${DEPLOY.dir}/sizereport.xml " link-report = " ${DEPLOY.dir}/linkreport.xml " >警告を無効にするには:
< compc ... warnings = " false " >多くのアプリケーション/ライブラリを構築している場合は、メモリを使い果たすことができます。非常に便利なのは、特にMaxmemoryが少なくとも1つのギグに設定されている場合、ForkオプションをTrueに設定する必要があります。
< compc ... fork = " true " >bin/output.swfファイルの構築方法を説明する最もシンプルなant build.xmlファイル:
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.mxml " output = " ${DEPLOY.dir}/output.swf " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
</ mxmlc >
</ target >
</ project >MXMLCコンパイラは、COMPCコンパイラとほぼ同じオプションを提供します。 SWCセクションの構築で説明されている各例は、MXMLCコマンドに簡単に変更できます。例1を例9と比較すると、表示されます。
bin/output.swfファイルを構築する方法を説明する最もシンプルなant build.xmlファイル:
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc
file= " ${basedir}/src/Main.as "
output= " ${DEPLOY.dir}/output.swf "
static-link-runtime-shared-libraries= " true "
failonerror= " true "
maxmemory= " 1024m " >
< source-path path-element = " ${basedir}/src " />
< source-path path-element = " ${FLEX_HOME}/frameworks " />
</ mxmlc >
</ target >
</ project >MXMLCコンパイラは、COMPCコンパイラとほぼ同じオプションを提供します。 SWCセクションの構築で説明されている各例は、MXMLCコマンドに簡単に変更できます。例1を例10と比較すると、表示されます。
bin/output.swfファイルを構築する方法を説明する最もシンプルなant build.xmlファイル:
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.as " output = " ${DEPLOY.dir>/output.swf " configname = " air " failonerror = " true " >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
</ target >
</ project >MXMLCコンパイラは、COMPCコンパイラとほぼ同じオプションを提供します。 SWCセクションの構築で説明されている各例は、MXMLCコマンドに簡単に変更できます。例1を例11と比較すると、表示されます。
クイックダウンロードリンク:Apache Flexunit 4.2、FlexUnit 4.1
FlexUnitCoreインスタンスにCIListenerを追加することを忘れないでください。
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< taskdef resource = " flexUnitTasks.tasks " >
< classpath >
< fileset dir = " <path_to_flex_unit_ant_tasks_dir> " >
< include name = " flexUnitTasks*.jar " />
</ fileset >
</ classpath >
</ taskdef >
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< property name = " TESTS.dir " value = " ${basedir}/tests-output " />
< target name = " main " depends = " clean, tests, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
< delete dir = " ${TESTS.dir} " />
< mkdir dir = " ${TESTS.dir} " />
</ target >
< target name = " tests " >
< mxmlc file = " ${basedir}/src/tests.mxml " output = " ${TESTS.dir}/tests.swf " failonerror = " true " verbose-stacktraces = " true " >
< source-path path-element = " ${basedir}/src " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ mxmlc >
< flexunit
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true "
localTrusted= " true "
command= " ${FLEX_HOME}/runtimes/player/11.4/win/FlashPlayerDebugger.exe " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.mxml " output = " ${DEPLOY.dir}/output.swf " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
</ mxmlc >
</ target >
</ project >
FlexUnitCoreインスタンスにAIRCIListenerを追加することを忘れないでください。
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< taskdef resource = " flexUnitTasks.tasks " >
< classpath >
< fileset dir = " <path_to_flex_unit_ant_tasks_dir> " >
< include name = " flexUnitTasks*.jar " />
</ fileset >
</ classpath >
</ taskdef >
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< property name = " TESTS.dir " value = " ${basedir}/tests-output " />
< target name = " main " depends = " clean, tests, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
< delete dir = " ${TESTS.dir} " />
< mkdir dir = " ${TESTS.dir} " />
</ target >
< target name = " test " >
< mxmlc file = " ${basedir}/src/tests.as " output = " ${TESTS.dir}/tests.swf " configname = " air " failonerror = " true " verbose-stacktraces = " true " >
< library-path dir = " ${basedir}/libs " includes= " * " append= " true " />
< library-path dir = " ${FLEX_HOME} " append= " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
< copy file = " ${basedir}/src/tests-app.xml " todir = " ${TESTS.dir} " overwrite = " true " />
< replace file = " ${TESTS.dir}/tests-app.xml " token = " [This value will be overwritten by Flash Builder in the output app.xml] " value = " tests.swf " />
< flexunit
player= " air "
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.as " output = " ${DEPLOY.dir>/output.swf " configname = " air " failonerror = " true " >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
</ target >
</ project >...
< target name = " pack " >
< copy file = " ${basedir}/src/swf2png-app.xml " todir = " ${DEPLOY.dir} " overwrite = " true " />
< replace file = " ${DEPLOY.dir}/swf2png-app.xml " token = " [This value will be overwritten by Flash Builder in the output app.xml] " value = " swf2png.swf " />
< exec executable = " ${FLEX_HOME}/bin/adt.bat " failonerror = " true " >
< arg line = " -package " />
< arg line = " -storetype pkcs12 " />
< arg line = " -keystore ${basedir}/certificate.p12 " />
< arg line = " -storepass <password> " />
< arg line = " ${DEPLOY.dir}/swf2png.air " />
< arg line = " ${DEPLOY.dir}/swf2png-app.xml " />
< arg line = " -C ${DEPLOY.dir} swf2png.swf " />
</ exec >
</ target >
...Temp dirにASDOCを生成し、それを使用して.swcファイルを更新します。
...
< target name = " asdoc " >
< tempfile property = " temp.dir " destDir = " ${java.io.tmpdir} " prefix = " ${ant.project.name}-doc-xml- " />
< asdoc output = " ${temp.dir} " lenient = " true " failonerror = " true " keep-xml = " true " skip-xsl = " true " fork = " true " >
< compiler .source-path path-element = " ${basedir}/src " />
< doc-sources path-element = " ${basedir}/src " />
</ asdoc >
< zip destfile = " ${DEPLOY.dir}/${ant.project.name}.swc " update = " true " >
< zipfileset dir = " ${temp.dir}/tempdita " prefix = " docs " >
< include name = " *.* " />
< exclude name = " ASDoc_Config.xml " />
< exclude name = " overviews.xml " />
</ zipfileset >
</ zip >
< delete dir = " ${temp.dir} " failonerror = " false " includeEmptyDirs = " true " />
</ target >
...FlexPMDはソースコードアナライザーです。未使用の変数、空のキャッチブロック、不要なオブジェクトの作成などの一般的なプログラミングの欠陥があります。
pmd_ruleset.xmlを生成するには、オンラインPMDルールセット作成者を使用します。
クイックダウンロードリンク:Adobe FlexPMD 1.3
...
< property name = " FLEXPMD.dir " value = " ~/sdks/flexpmd " />
< property name = " FLEXPMD.version " value = " 1.3 " />
< taskdef name = " flexPmd "
classname = " com.adobe.ac.pmd.ant.FlexPmdAntTask "
classpath = " ${FLEXPMD.dir}/flex-pmd-ant-task-${FLEXPMD.version}.jar " >
< classpath >
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-ruleset-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-ruleset-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-core-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-plugin-utils-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/pmd-4.2.5.jar " />
< pathelement location = " ${FLEXPMD.dir}/commons-lang-2.4.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-files-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-metrics-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/plexus-utils-1.0.2.jar " />
< pathelement location = " ${flexpmd.libs}/dom4j-1.6.1.jar " />
</ classpath >
</ taskdef >
< taskdef name = " flexCpd "
classname = " com.adobe.ac.cpd.ant.FlexCpdAntTask "
classpath = " ${FLEXPMD.dir}/flex-pmd-cpd-ant-task-${FLEXPMD.version}.jar " >
< classpath >
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-files-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-cpd-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-plugin-utils-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/pmd-4.2.5.jar " />
</ classpath >
</ taskdef >
...
< target name = " flexPmd " >
< flexPmd
sourceDirectory = " ${basedir} "
outputDirectory = " ${DEPLOY.dir} "
ruleSet = " ${basedir}/pmd_ruleset.xml " />
</ target >
< target name = " flexCpd " >
< flexCpd
minimumTokenCount = " 50 "
outputFile = " ${DEPLOY.dir}/cpd.xml " >
< fileset dir = " ${basedir} " >
< include name = " **/*.as " />
< include name = " **/*.mxml " />
< exclude name = " vendor/** " />
</ fileset >
</ flexCpd >
</ target >
...繰り返さないでください、例15-生成ASDOCで見られるように、 ${ant.project.name}を使用してください。
CIマシンでFlexUnitテストを実行し、テストが失敗すると、ビルドが終了します。しかし、レポート生成の前に終了するため、統計を更新することはできず、どのテストが失敗し、その理由がわかりません。したがって、FlexUnitタスクはfailurepropertyを提供します。
...
< target name = " test " >
< mxmlc file = " ${basedir}/src/tests.mxml " output = " ${TESTS.dir}/tests.swf " failonerror = " true " verbose-stacktraces = " true " >
< source-path path-element = " ${basedir}/src " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ mxmlc >
< flexunit
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true "
localTrusted= " true "
command= " ${FLEX_HOME}/runtimes/player/11.4/win/FlashPlayerDebugger.exe " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
< fail if = " flexunit.failure " message = " Unit test(s) failed. See reports! " />
</ target >
...この作業は、クリエイティブコモンズの帰属ノンコマーシャル4.0国際ライセンスの下でライセンスされています