{"id":9554,"date":"2016-08-24T14:15:51","date_gmt":"2016-08-24T12:15:51","guid":{"rendered":"http:\/\/fdt.powerflasher.com\/?p=9554"},"modified":"2016-08-24T14:15:51","modified_gmt":"2016-08-24T12:15:51","slug":"ant-project-generator","status":"publish","type":"post","link":"https:\/\/fdt.powerflasher.com\/blog\/2016\/08\/ant-project-generator\/","title":{"rendered":"Ant Project Generator"},"content":{"rendered":"<p>The new Ant Project Generator creates an Ant project for an FDT launch configuration which can be used independently of FDT or Eclipse. These generated Ant projects can be used for build servers, continuous integration servers or in larger build pipes.<\/p>\n<p>A typical use case is to run tests on a continuous integration server. The following example shows how an Ant project could be generated to run tests.<\/p>\n<p>The structure of the example project is this:<a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGProjectStructure.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9555 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGProjectStructure-440x416.png\" alt=\"APGProjectStructure\" width=\"440\" height=\"416\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGProjectStructure-440x416.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGProjectStructure-230x218.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGProjectStructure.png 448w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>A test launch configuration has been created to run all test class with prefix <i>Test<\/i>: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGFdtTestRun.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9556 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGFdtTestRun-440x155.png\" alt=\"APGFdtTestRun\" width=\"440\" height=\"155\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGFdtTestRun-440x155.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGFdtTestRun-230x81.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGFdtTestRun-768x271.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGFdtTestRun.png 780w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>This is the used test launch configuration: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9557 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton-440x412.png\" alt=\"APGTestLaunchConfigurationButton\" width=\"440\" height=\"412\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton-440x412.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton-230x215.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton-768x719.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestLaunchConfigurationButton.png 832w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a> The new button opens the new <i>Ant Project Generator<\/i> dialog.<\/p>\n<p>The new <i>Ant Project Generator<\/i> dialog: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialog-1.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9565 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialog-1-440x332.png\" alt=\"APGDialog\" width=\"440\" height=\"332\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialog-1-440x332.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialog-1-230x174.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialog-1-768x579.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialog-1.png 990w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a> In this dialog you can define how the Ant project will be created. Most of the time the default options are fine. Option changes are immediately shown in the preview so you can check which options fit your needs. The default output directory is the name of launch configuration prefixed with <i>ant-<\/i> inside the project. After hitting button <i>Generate <\/i>the generator will create four files as summarized in the dialog message at the top:<\/p>\n<ul>\n<li>Ant project file <i>build.xml<\/i> (shown in the preview)This file contains all ant targets. It compiles and bundles the resulting SWF for testing, starts the test run, and creates the junit test report.<\/li>\n<li>Build properties file <i>build.properties<\/i>In this file properties are stored. Usually sdk, workspace and project locations You may need to adapt this file manually in different environment.<\/li>\n<li>ActionScript test runner <i>src\/TestRunner.as<\/i>The test runner contains test class references to setup and run FlexUnit properly. You may need to adapt this file manually to add new test classes.<\/li>\n<li>FlexUnit ant task library <i>flexUnitTasks-4.2.0.jar<\/i> provides FlexUnit ant task.The FlexUnit ant task is used inside <i>build.xml<\/i> to start the test SWF. This ant task also generates a FlexUnit test results.<\/li>\n<\/ul>\n<p>This dialog shows the successful end of the generation: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTaskDialog.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9566 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTaskDialog-440x296.png\" alt=\"APGTaskDialog\" width=\"440\" height=\"296\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTaskDialog-440x296.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTaskDialog-230x155.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTaskDialog.png 568w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>The generated Ant project has this structure: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGStructure.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9567 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGStructure-440x278.png\" alt=\"APGStructure\" width=\"440\" height=\"278\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGStructure-440x278.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGStructure-230x145.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGStructure.png 446w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>The generated Ant project file <i>build.xml <\/i>in more detail: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAntProjectFile.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9568 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAntProjectFile-440x278.png\" alt=\"APGAntProjectFile\" width=\"440\" height=\"278\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectFile-440x278.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectFile-230x145.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectFile-768x486.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectFile.png 846w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a> The default target has the name of the launch configuration (<i>WebDemo-Tests<\/i>).<\/p>\n<p>The target <i>WebDemo-Tests <\/i>invokes a java task to execute the ActionScript compiler (the task is presented collapsed). Thereafter the second target <i>FlexUnit-WebDemo-Tests <\/i>is called. This target creates the test results directory, defines the FlexUnit ant task and executes it. Afterwards a junit report is created using the FlexUnit test results.<\/p>\n<p>In case a launch configuration refers to other launch configurations (via launcher chain) for all these launch configurations separate Ant targets and appropriate calls are generated inside <i>build.xml<\/i>. The generation process recurses through all launch configurations.<\/p>\n<p>Also the compiler java task uses properties to avoid hard binding: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGJavaTask.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9569 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGJavaTask-440x260.png\" alt=\"APGJavaTask\" width=\"440\" height=\"260\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGJavaTask-440x260.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGJavaTask-230x136.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGJavaTask-768x453.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGJavaTask.png 923w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>The <i>sdk <\/i>property is used to refer to the compiler inside <i>mxmlc.jar<\/i> and the framework SWCs. The main file of this compilation is the test runner <i>TestRunner.as<\/i> inside the Ant project.<\/p>\n<p>The test runner contains a list to all test classes for execution during the test run: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestRunner.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9571 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestRunner-440x325.png\" alt=\"APGTestRunner\" width=\"440\" height=\"325\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestRunner-440x325.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestRunner-230x170.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestRunner.png 591w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>If you add test classes later you may need to add these classes to the list in this file so that the new test classes are also taken into account.<\/p>\n<p>Properties used inside the Ant project are declared by this properties file: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGPropertiesFile.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9574 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGPropertiesFile-440x79.png\" alt=\"APGPropertiesFile\" width=\"440\" height=\"79\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGPropertiesFile-440x79.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGPropertiesFile-230x41.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGPropertiesFile.png 761w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>It contains properties for workspace, project, SDK and Flash Player. This file may need to be adapted to allow the Ant project to run in different environment like a continuous integration server. If no Flash Player is defined in FDT preferences the last line is skipped and you have to add the property <i>flashplayer<\/i> manually.<\/p>\n<p>To test the Ant project we can launch it here:<a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAntProjectAntLaunch-1.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9575 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAntProjectAntLaunch-1-440x284.png\" alt=\"APGAntProjectAntLaunch\" width=\"440\" height=\"284\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectAntLaunch-1-440x284.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectAntLaunch-1-230x148.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAntProjectAntLaunch-1.png 583w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>Make sure that Ant starts in a separate JRE to avoid problems.<\/p>\n<p>The console log of the Ant project launch shows all executed targets: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGConsole.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9577 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGConsole-440x520.png\" alt=\"APGConsole\" width=\"440\" height=\"520\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGConsole-440x520.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGConsole-230x272.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGConsole-768x908.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGConsole.png 923w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>The first Ant target compiled the <i>testSrc.swf<\/i> and the second target started the <i>flexunit<\/i> task, which invoked the Flash Player for <i>testSrc.swf<\/i>. In the last line of <i>flexunit<\/i> task a test run summary is presented. In total four tests has been recognized. One test of class <i>com.powerflasher.SampleApp.TestWebDemo<\/i> was skipped and the other one has been executed. For class <i>com.powerflasher.SampleApp.TestSpecialPart<\/i> both tests has been executed. The test results are place inside the <i>testResults<\/i> folder below the Ant project directory. The <i>junitreport<\/i> task uses these test results to create a html test report page.<\/p>\n<p>The html test report page:<a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestResults.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9578 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGTestResults-440x193.png\" alt=\"APGTestResults\" width=\"440\" height=\"193\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestResults-440x193.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestResults-230x101.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestResults-768x337.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGTestResults.png 809w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>Assume you recognize a new test class has to be added into the test run. So you have this new test class <i>TestDemoPart<\/i>: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGNewTestClass.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9580 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGNewTestClass-440x232.png\" alt=\"APGNewTestClass\" width=\"440\" height=\"232\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestClass-440x232.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestClass-230x121.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestClass.png 445w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>You could consider to recreate the Ant project completely. But this may remove all manual adaption you may have applied to the <i>build.xml<\/i> or <i>build.properties<\/i>. But this is not necessary.<\/p>\n<p>The Ant Project Generator has options to skip files from writing: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9581 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner-440x343.png\" alt=\"APGDialogRewriteTestRunner\" width=\"440\" height=\"343\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner-440x343.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner-230x179.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner-768x598.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogRewriteTestRunner.png 975w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>Only the test runner file will be written all other files are skipped.<\/p>\n<p>After generation the test runner is modified to: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGNewTestRunner.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9582 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGNewTestRunner-440x371.png\" alt=\"APGNewTestRunner\" width=\"440\" height=\"371\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestRunner-440x371.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestRunner-230x194.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGNewTestRunner.png 572w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>A a reference to the new test class <i>TestDemoPart<\/i> has been added.<\/p>\n<p><strong>Ant Project Generator for AIR<\/strong><\/p>\n<p>The Ant Project Generator works also for AIR projects. The following example is an Android project with this project structure:<a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirProject.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9584 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirProject-440x188.png\" alt=\"APGAirProject\" width=\"440\" height=\"188\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProject-440x188.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProject-230x98.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProject.png 478w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>The used launch configuration to start the Android project: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9585 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration-440x429.png\" alt=\"APGAirLaunchConfiguration\" width=\"440\" height=\"429\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration-440x429.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration-230x224.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration-768x749.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLaunchConfiguration.png 909w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>The Ant Project Generator for the Android launch configuration: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirLcDialog.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9586 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirLcDialog-440x377.png\" alt=\"APGAirLcDialog\" width=\"440\" height=\"377\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLcDialog-440x377.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLcDialog-230x197.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLcDialog-768x658.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirLcDialog.png 888w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a>The <i>build.xml<\/i> will contain an extra target to start the AIR Debug Launcher (adl). The target is called after the Android project has been build. Currently only AIR launch configurations starting the AIR application on desktop are fully supported. For AIR launch configurations starting on device the extra target is not generated and an Ant echo message with a warning is included instead.<\/p>\n<p>Inside the FDT AIR Properties the Ant Project Generator is also available: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirProperties.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9587 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGAirProperties-440x356.png\" alt=\"APGAirProperties\" width=\"440\" height=\"356\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProperties-440x356.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProperties-230x186.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProperties-768x621.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGAirProperties.png 954w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>The Ant Project Generator Dialog for deploy uses the preparation launch configuration: <a href=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialogAirExport.png\" target=\"_blank\"><img loading=\"lazy\" class=\"alignnone wp-image-9588 size-medium\" src=\"http:\/\/fdt.powerflasher.com\/wp-content\/uploads\/2016\/08\/APGDialogAirExport-440x423.png\" alt=\"APGDialogAirExport\" width=\"440\" height=\"423\" srcset=\"https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogAirExport-440x423.png 440w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogAirExport-230x221.png 230w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogAirExport-768x738.png 768w, https:\/\/fdt.powerflasher.com\/blog\/wp-content\/uploads\/2016\/08\/APGDialogAirExport.png 987w\" sizes=\"(max-width: 440px) 100vw, 440px\" \/><\/a> Instead of an AIR debug launcher target the <i>build.xml<\/i> will contain the deploy target for the Android project. The deploy credentials are stored in a credential properties file in the Ant project folder. To use the generated Ant project in a build server for AIR deploy you may need to adjust the properties file to match the build server environment. Often the credential properties file has to be adjusted to refer to the deploy credentials instead of the development credentials.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The new Ant Project Generator creates an Ant project for an FDT launch configuration which can be used independently of FDT or Eclipse. These generated Ant projects can be used for build servers, continuous integration servers or in larger build pipes. A typical use case is to run tests on a continuous integration server. The [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/posts\/9554"}],"collection":[{"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/comments?post=9554"}],"version-history":[{"count":54,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/posts\/9554\/revisions"}],"predecessor-version":[{"id":9648,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/posts\/9554\/revisions\/9648"}],"wp:attachment":[{"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/media?parent=9554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/categories?post=9554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fdt.powerflasher.com\/blog\/wp-json\/wp\/v2\/tags?post=9554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}