Author Archive: Nishita Kumar

Running Adobe Flash Builder on Win and Mac with Java 7/8 (UPDATED)

By Krati Rastogi and Vivek Kumar

Adobe® Flash® Builder® 4.7, which is an Integrated Development Environment (IDE) for developing games and applications using ActionScript and Flex framework runs on Java 6. If you do not have Java 6 on your machine Flash Builder does not launch and instead displays this error.

flash-builder

Steps to follow on Windows

  1. Install Java 1.7/1.8.
  2. Copy the jre7/jre8 folder inside the Java folder. Replace the jre folder inside flash builder installation folder with the copied one.
  3. Restart Flash Builder.

Steps to follow on Mac

    1. Set your JAVA_HOME to Java 7 or Java 8 as per the correct paths on your machine.
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home
    1. Open JVM’s Info.plist at $JAVA_HOME/../Info.plist and add the highlighted lines to JVMCapabilities array:arrays
    2. Create a symlink for libjvm.dylib as follows:
sudo mkdir –p /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bundle/Libraries
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bundle/Libraries/libserver.dylib

Note: Correct the version number (in jdk1.7.0_79.jdk) path in the above example to make it point to the correct path on your machine.

  1. Set java.library.path by adding the following lines at the end of “/Applications/Adobe Flash Builder 4.7/Adobe Flash Builder 4.7.app/Contents/MacOS/Adobe Flash Builder 4.7.ini”.
-Djava.library.path=../../../eclipse/plugins/com.adobe.flexide.nativelibs_4.7.0.349722/os/macosx/:../../../eclipse/plugins/com.adobe.flexide.amt_4.7.0.349722/os/macosx/:../../../eclipse/plugins/com.adobe.flexbuilder.utils.osnative_4.7.0.349722/os/macosx/

Restart your machine and launch Flash Builder.

Possible error on Mac

If you are trying to launch Flash Builder on Mac OS 10.12 and you see an error such as:

java.lang.RuntimeException: Application "com.adobe.flexbuilder.standalone.FlashBuilderApplication" could not be found in the registry. The applications available are: org.eclipse.ant.core.antRunner, org.eclipse.ant.ui.antRunner, org.eclipse.equinox.app.error, org.eclipse.equinox.p2.director, org.eclipse.equinox.p2.garbagecollector.application, org.eclipse.equinox.p2.publisher.InstallPublisher, org.eclipse.equinox.p2.publisher.EclipseGenerator, org.eclipse.equinox.p2.publisher.ProductPublisher, org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher, org.eclipse.equinox.p2.reconciler.application, org.eclipse.equinox.p2.repository.repo2runnable, org.eclipse.equinox.p2.repository.metadataverifier, org.eclipse.equinox.p2.artifact.repository.mirrorApplication, org.eclipse.equinox.p2.metadata.repository.mirrorApplication, org.eclipse.equinox.p2.updatesite.UpdateSitePublisher, org.eclipse.equinox.p2.publisher.UpdateSitePublisher, org.eclipse.equinox.p2.publisher.CategoryPublisher, org.eclipse.help.base.infocenterApplication, org.eclipse.help.base.helpApplication, org.eclipse.help.base.indexTool, org.eclipse.jdt.apt.core.aptBuild, org.eclipse.jdt.core.JavaCodeFormatter, org.eclipse.ui.ide.workbench, org.eclipse.update.core.standaloneUpdate, org.eclipse.update.core.siteOptimizer.
 at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248)
 at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
 at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
 at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
 at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
 at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
 

Locate a directory named “p2” at /Applications/Adobe Flash Builder 4.7/ and delete it. Flash Builder should now launch.

Flash Builder 4.7 crash on Mac OS 10.13 (High Sierra)

With the recent update of Mac OS 10.13 (High Sierra), “Flash Builder stopped working” error is encountered when you click Project-> “Export Release Build”.

If you are facing this issue follow the steps below:

  1. Download the attached zip (fb.zip) which contains 2 jar files.
  2. Copy the 2 jar files and paste them at the location: “/Applications/Adobe Flash Builder 4.7/eclipse/plugins/”.
  3. Restart Flash Builder.

GPU Preference Selection in AIR

AIR 28 has a feature where the AIR desktop application can be set to have a preference for the use of a specific GPU type:

  • The “discrete” (dedicated) for better performance, or
  • The “integrated” for better battery life.

This preference is set during the AIR application publication, thus ensuring that existing AIR content is not affected by this feature.

The new attribute in the application descriptor

For this feature, the gpuPreference attribute is introduced in the AIR application descriptor. AIR developers can specify either discrete or integrated for the attribute value to set a GPU preference. When the gpuPreference attribute is absent, the GPU type used is OS dependent, as is the case with previous versions of AIR.

<gpuPreference>(discrete|integrated)</gpuPreference>

Note: The value of the gpuPreference does not affect AIR applications that are launched by AIR Debug Launcher (ADL).

The support configuration for the feature

This feature is supported only on devices that are equipped with both an integrated GPU and a discrete GPU, and with OSes that support GPU switching functionality. Such a setup is more common on laptops than on desktops. This feature has been tested on Windows 10 devices equipped with Nvidia or AMD graphic cards, and Mac OS X version 10.12. In some cases, the effectiveness of the GPU preference selection has been device driver dependent.

Effectiveness of GPU Preference Selection.

Setting of the gpuPreference attribute does not guarantee the use of a GPU by the AIR application at all times. OS policies and device driver vendor tools settings may override the AIR gpuPreference attribute setting.

Note: AIR runtime forces Stage3D applications to use discrete GPU on Mac regardless of the value of the gpuPreference attribute. The intention of this enforcement is to avoid expensive cost of preparing the Stage3D rendering again such as loading of the GPU resources for adapting the change in the GPU type.

How to detect the assigned GPU type

The GPU type assigned to the AIR application can be detected by two ways, through a tool or a through a programmatic method. The detection works only when the renderMode attribute is set to direct.

Scout1) is a useful debugging tool to detect what GPU is assigned to an AIR application. GPU information is provided in “Session Info” in Scout, as shown in the following image.

Figure 1 : GPU information captured on Mac

Figure 2:GPU information captured on Windows

Known issues with the current version of Scout:

  • GPU information is not shown when an AIR application runs on top of DirectX11 on Windows 8 or above.
  • Scout lacks the ability to show proper GPU information if the GPU type being used is changed while the application is running. In such a scenario, AIR application needs to be relaunched so that Scout can capture what the current GPU is in the given setting.

The programmatical method to detect the GPU type assigned is through the use of the driver property of the StageVideoAvailablityEvent event. When AIR application registers an event handler for the StaveVideoAvailability event, the StageVideoAvailablityEvent event will fire upon assignment of the GPU type. In the event listener, the GPU information can be retrieved by use of the driver property. As a note, the driver property is available for AIR applications authored for SWF 26 or above.

References

  1. Getting Started With Adobe Scout : http://www.adobe.com/devnet/scout/articles/adobe-scout-getting-started.html