Flash’in’App Troubleshooting

Known issue with the 64-bit version of Adobe Flash Player plugin


Flash’In’App supports both 32-bit and 64-bit versions of main operating systems. Currently, this support is based on 64-bit platform’s capability to run 32-bit applications. So with Flash’In’App you can develop only 32-bit applications that use the 32-bit version of Adobe Flash Player plugin. Your 32-bit application, developed with Flash’In’App, will run on both 32-bit and 64-bit operating systems. This is not our limitation, however. It happens because there is still no 64-bit version of Adobe Flash Player plugin for Mac OS X. Our development team is currently working on resolving this issue asap though.

 

Known issue with Adobe Flash Player 10 plugin usage


When using Adobe Flash Player 10 plugin to launch the application (which uses ESFlashView) from Xcode, your application will shut down.

The status will be the following: “YourApp has exited with status 2”.

In console you will see Debugger() was called!

The Debugger has exited due to signal 2 (SIGINT).

The reason for program exit is the request for Debugger() function made by Adobe Flash Player 10 plugin. If the application is started from Finder, it will work properly. Though in console (Console.app) Debugger() was called! message will be received.

To avoid application fall at its start from Xcode (when debugging) follow these instructions:

  1. Find your application in Group Tree (Executables group)
  2. Invoke context menu on it (right-click the mouse) and choose Get Info
  3. In the invoked window choose Debugging tab
  4. Disable “Break on Debugger()” and “DebugStr()”

Plugin path setting


Default paths for plugins are:

Flash Player – YourApp.app/Contents/PlugIns/Flash Player.plugin

RealPlayer – /Library/Internet Plug-Ins/RealPlayer Plugin.plugin

Silverlight – /Library/Internet Plug-Ins/Silverlight.plugin)

If you set custom paths for plugins, you need to set plugin path (before loading any file into Flash’In’App) with the help of the following functions (class ESFIAPreferences): setFlashPluginPath:, setRealPlayerPluginPath:, setSilverlightPluginPath: (e.g. in main.m in “main” function).

ESFlashView and other classes manual creation


You may create ESFlashView and other classes using one of the following methods:

  • Use InterfaceBuilder (put on CustomView on window and specify ES…View class for it)
  • Or create ES…View in runtime

Note: You will be able to play files only when you place created ES…View on the window. If you remove ES…View from the window, the playback will stop.

Listing 1 shows you the example of ESFlashView creation in runtime:

 ESFlashView *flashView = [[ESFlashView alloc] initWithFrame:NSMakeRect(0,  0, 200, 200)];

 [[window contentView] addSubview:flashView];

 [view  loadMovieAtPath:pathToMovie];

 

Distribution via AppStore


If you are going to distribute your software (with Flash’In’App embedded) via AppStore, pay attention to the following fact:

Flash Player.plugin should be always placed inside the bundle. It can be achieved as follows:

1. Choose the required target in Xcode and add a new build phase to it (for example: Add Build Phase –> Add Copy Files).

2. In the new build phase set the destination to “Plugins” value.

3. Add Flash Player.plugin to the new build phase (for example, drag and drop it from Finder).

You will also need to remove all the entries relating to PowerPC:

Choose the required target –> “Add Run Script”, and add the script into the field.

Here is the script example:

PLUGINS_PATH="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Plugins"

FLASH_PATH="$PLUGINS_PATH/Flash Player.plugin/Contents/MacOS/Flash Player" 

lipo -remove ppc "$FLASH_PATH" -output "$FLASH_PATH"