QueTwo's Blog

thouoghts on telecommunications, programming, education and technology

Working with AIR Native Extensions on the Mac

As I said in my previous blog post, creating the ArduinoConnector ANE for the MacOS X platform was frustrating.  It turns out that Apple ships a slightly modified version of GCC that is close to what is offered on the Linux/Unix and Windows platforms, but not 100% the same.  When I approached the project, I thought it would be a cake-walk — simply take CDT (or gcc command-line), and point it to my POSIX C code, and I should be a few clicks away from creating the .framework file needed for AIR.

Turns out that the only way to make a .framework file is by using Apple’s Xcode (unless I’m really missing something in the gcc man pages).  I wasn’t really in the mood to learn yet another coding IDE, but I did want to post some of the gotcha’s I found in creating the Mac version of the ANE.  These are not step-by-steps, but rather things that tripped me up.

  • When you create a new Xcode project, you must choose a Cocoa Framework project (under Framework & Library).
  • Add the “Adobe AIR.framework” by clicking on the project name, and then going to Add, Existing Frameworks.  The Adobe AIR Framework file is found in your “Flash Builder App Dir -> sdks -> 4.6.0 -> runtimes -> air -> mac”  folder.
  • The Adobe AIR Framework file auto-includes the header file, and the external library that you need to link to.  Don’t go searching for another header file, you don’t need it.
  • Create/Import your .c and .h files and attempt to compile before setting your project settings.  If you don’t try to compile before you set your project files, you won’t see 3/4 of the compiler settings you need to make things right.  This one threw me into a loop for at least a day.
  • All of the examples have you including the <Adobe AIR/Adobe AIR.h> file in your project — I found this works, but all it is doing is including the FlashRuntimeExtensions.h that exists within the Adobe AIR framework.  I decided to resist change and include the Adobe AIR.h file.  It works.
  • There are two places you need to set your compiler and project settings.  One is on the project itself (the top-most node in the Groups & Files tree), and the other is in the Targets -> ProjectName.framework node.  Set all settings in both places (they don’t cascade once it has been compiled once, which you have to do to get the GCC settings to show up right).
  • Make sure your project is compiling 32-bit frameworks, targeted to the 10.5 SDK.   I never found that documented anywhere, and it was sheer luck I tried those combos.
  • Make sure that you turn the optimization level to None (0).  If you don’t do this, things will seem to work, but if you use any of the FREGet or FRENew functions, they will produce seemingly random numbers (I was convinced it was passing me back pointers casted as integers, but who knows).
  • Make the following target and project settings changes that deviate from the defaults :
    • Architetures : 34-bit Universal
    • Base SDK : Mac OS X 10.5
    • Build Active Architecture Only – Checked
    • C/C++ Compiler Version : GCC 4.2
    • Linking Compatibility Version : 1
    • Linking Current Library Version : 1
    • Other Linker Flags : -flat_namespace -weak_Framework “Adobe AIR”
    • Runpath Search Paths :
      • @executable_path/../runtimes/air/mac
      • @executable_path/../Frameworks
      • /Library/Frameworks
    • Packaging Framework Version: A
    • Wrapper Extension : framework
    • Framework Search Paths :
      • /Applications/Adobe\ Flash\ Builder\ 4.6/sdks/4.6.0/runtimes/air/mac
    • Library Search Paths: /Library/Frameworks/Adobe\ AIR.framework/Versions/1.0
    • GCC 4.2, Generate Position-Dependent Code: Unchecked
    • Optimization Level : None [-O0]
    • Other C Flags : -fvisibility=hidden
    • Other C++ Flags:  -fvisibility=hidden
    • Precompile Prefix Header : checked
  • In order to export the proper function names for your initialization and finalization functions, prefix them with __attribute__((visibility(“default”)))

Once you are creating your .framework properly, you should be all set.  If you created truly POSIX or standard C code, there should be very little changes you should need to make your project work.

I do have to make one additional note about a bug people have been finding with Flash Builder 4.6, as it was released on 11/30.  If you are attempting to include an ANE into a project, the project will compile, but if you debug the project, it will complain that it can’t find the method name (not the initilizer or finalizer, but one of your other method names).  If you debug your project from ANT or the command line, it will work fine.  The work-around for this is the following steps :

  • Make sure you have ADL in your search path.  Edit the /etc/paths file and add a new line with /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/bin
  • Create a new folder on your desktop, Document folder, or somewhere where you will find it.  Copy your .ANE into it.
  • Create a new folder within this folder, and name it MyTestANE.ane    (make sure to include the .ane — that is very important)
  • cd into that new .ane directory, and execute the following command :    unzip ..\ArduinoConnector.ane      (assuming you named your .ane ArduinoConnector.ane)
  • Go into the bin-debug folder of your project, and run the following command :    adl -profile extendedDesktop -extdir ~/Documents/Extensions/ Main-app.xml    assuming that the directory you created in the second step was named Extensions and was located in your Documents folder.
  • You can repeat the last step as often as you need with no additional work, assuming you don’t need to update your .ane.   If you need to attach the debugger / profiler , you can follow the steps outlined on this blog (but use about:blank instead of http://localhost)

Well, I think that is about it.  I hope I can help alleviate some of the frustration that I suffered for somebody else in working with all this :)

About these ads

20 responses to “Working with AIR Native Extensions on the Mac

  1. gepatto December 4, 2011 at 5:40 am

    Thnx for the info..
    based on your work-around, I have created a debug.command file in my Air-Project with the single line:

    adl -profile extendedDesktop -extdir {fullpath_to_project}/extensions/
    {fullpath_to_project_bin-debug}/Main-app.xml

    So I can double click to debug…
    Sweet!

  2. compile4fun December 19, 2011 at 5:35 pm

    Hi, “Runpath Search Paths” property value is wrong, it should point to /Library/Frameworks/Air SDK.framework (appears after air runtime installation), but not to your dev air sdk framework. in other case at runtime application finds 2 frameworks and crashes when mouse is over application (very misleading). it took 2 days to realize that. :(

    • quetwo December 19, 2011 at 10:42 pm

      Compile4fun, I’ve had great success adding the framework SDK folder to the runpath search paths. According to the half-line that is in the docs on it, it seems we should ALSO add the /Library/Frameworks/Air\ SDK.framework file to the list. I will update this doc to reflect that. Those docs are here : http://www.adobe.com/devnet/air/articles/extending-air.html

      • compile4fun December 20, 2011 at 3:28 am

        yep it will work, but docs clearly state:
        …Add @executable_path/../runtimes/air/mac, @executable_path/../Frameworks, and /Library/Frameworks to LD_RUNPATH_SEARCH_PATHS…

        development sdk is not mentioned, it should only be added to Framework Search Paths.

        Also there is no need to add Air SDK.framework to project directly, it is automatically found within Framework Search Paths.

  3. ericsoco January 6, 2012 at 8:07 pm

    phew, having a lot of trouble with OSX/FB4.6.

    i have gotten my application to compile with the ANE, and can use ADL to command-line compile and spit out serial values with success.

    however, i’m having trouble getting a good workflow. (i’m not used to using the command line for AIR projects.) i understand now that ADL does not compile, it only launches a command-line debugger. in order to try to wrap compilation and debugging into one antfile or command-line script, i tried compiling with amxmlc, but i get an error that ArduinoConnector is not a compile-time constant.

    i can compile and run in Flash Builder (which gives me the setupPort error), then switch over to the command line to run ADL. this is inconvenient, but works.

    however, i still haven’t gotten Flash Builder’s debugger to connect to a session launched from the command line. the link in ‘steps outlined on this blog’ is now broken, though i found it in google cache. however, it talks about setting up a ‘Flex Application’ run/debug config, which is not an option in FB4.6. i see ‘Web Application’, but my AIR project in FB cannot be used for this type of configuration because it’s not a web application, by definition.

    ANY help would be appreciated. perhaps someone could share their antfile? super stuck here.

    that said — awesome work on the ANE! the fact i can see serial in my console is very promising.

    • quetwo January 10, 2012 at 7:55 pm

      The trick in connecting to the debugger is this :
      – Create a new Flex Project, as a web project, don’t add any code.
      – Configure the debug configuration. make a new web application, but change the “Url or Path to launch” to : about:blank
      – Launch the debug configuration of the web app (nothing should happen), and within 60 seconds, launch the debug version of your AIR app with ADL.

      • coolcat January 26, 2013 at 2:18 am

        That does the trick. However, I wish abobe steps up and fixes the flash builder debugging problem. The problem still exists in fb 4.7

  4. cnunciato February 7, 2012 at 7:13 am

    This post has been hugely valuable to me over the last few days. Many thanks for taking the time to do it!

  5. s.m.srinivas February 9, 2012 at 6:25 pm

    Hi Nick, I followed the steps explained in the above article and still get cannot find method name error. I downloaded Hello World Extension from adobe’s site made changes for Builder settings as per your article, it works fine when running from Flash Builder 4.6 or command line. If I add new method inside same source [TestNativeExtension.cpp], also add same method in Library project & repeat all steps to generate ANE, include in Fresh AIR project, try running, it runs fine for the methods which was present before but when I try to access new method which I added throws same error of #3500 does not have a method with the name blabla [Note this is just new method and it includes code same as basic helloWorld method].. It’s frustrating how it behaves, I have tried all ways and no fruitful result – Above is the case in Snow Leopard Machine.

    In case of Lion Machine, I can’t even get Hello World Extension to work. I always get that #3500 does not have a method with name…..

    Any thoughts or suggestion that would help my situation to better?!!

    • quetwo February 12, 2012 at 9:07 pm

      The only method names that need to be exported are the init and the finalizer. All the other functions would be passed back to the AVM via the init function, and I’m assuming that you are doing that. Any function you don’t pass back to the AVM via the init function, you will not be able to call via AIR (consider them “private” functions).

      If you are passing back those function names you wish to call and you are still getting the “method not found” error, then the AVM is not holding a reference to your .framework. There is a known bug with the ADL that is embedded with the Flash Player that causes this — but if you are getting the same issues command-line, then the first thing I would check to see is if your init function is passing back the proper reference to the functions. You may also need to check the optimizer within XCode. I’ve seen it ‘optimize’ out the references — which is why I recommend setting the optimizer setting to off.

      • s.m.srinivas February 14, 2012 at 3:49 pm

        I checked everything and made sure optimizer setting to off. Now I see different error when I run through command-line. Also note that App will crash!…

        els-h43042:SampleANEDemo Srinivas$ adl -profile extendedDesktop -extdir extensions/ bin-debug/SampleANEDemo-app.xml 
        objc[1888]: Class EntryPoints is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIRAppController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class ServerInfo is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class PlayerURLAdapter is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AuthWindowController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class PlayerContentApplication is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class PlayerContentView is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class FullScreenContentWindow is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class PlayerContentWindow is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class FlashPromptDialogController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_MacCameraObject is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_PasteboardSource is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_PlayerContentMenu is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_PlayerContentMenuItem is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_FPCoreLoopDispatcher is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_PlayerPrintView is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_FPOneShotContextMenuSelectionHandler is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class VolumeNotificationHandler is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_ConnectToDebuggerDialogController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_FlashExceptionDialogController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_KillScriptDialogController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_LocalSecurityDialogController is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_FRDialogPanel is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class OSXProcessExitResponder is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIRBundle is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        objc[1888]: Class AIR_ServiceASyncOnMainThread is implemented in both /Applications/Adobe Flash Builder 4.6/sdks/4.6.0/runtimes/air/mac/Adobe AIR.framework/Versions/1.0/Adobe AIR and /Library/Frameworks/Adobe AIR.framework/Versions/1.0/Adobe AIR. One of the two will be used. Which one is undefined.
        Bus error
        

        When I debug/run from Builder, as usual I see that “method not found” error.

  6. s.m.srinivas February 14, 2012 at 5:43 pm

    Hi Nick,

    Thanks for Input. I was able to use -runtime option & specify which one to use to resolve the error I was getting & I was able to run the application fine.

  7. quetwo March 25, 2012 at 10:44 am

    Updated 2012-03-24 to include proper Runpath Search Path variables.

  8. rethinkflash June 27, 2012 at 8:19 pm

    Hey I’m following along with the 4 Native Extension videos, but trying on the mac side. I have XCode 4 installed, along with the MacOS 10.5 SDK installed (doesn’t come with the package, need it separately). With all the settings mentioned above, I’m having trouble compiling when the setting [Other Linker Flags : -flat_namespace -weak_Framework “Adobe AIR”] is added, I get the [Command /Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1], which tells me nothing other than a compiling error. Without it it compiles fine, but I find that when it come to testing a function from a project, I get the [ArgumentError: Error #3500: The extension context does not have a method with the name getTestString.] error; this happens to any of the functions defined in the .c file. When I’m adding the “Other Linker Flags” command variable, it does something weird, it will separate the commands into individual lines where there is a space, instead of put the commands on a single line. I’m not sure if the “Other Linker Flags” command variable is the culprit, after just discovering s.m.srinivas comment about Error #3500. I’ll look more into the problem tomorrow, but any thoughts about this compiler error?

    • rethinkflash June 28, 2012 at 2:35 pm

      Alrighty, I’ve gotten a test .ane working returning a test string. I discovered the problem with the [Other Linker Flags] problem. The “-weak_Framework” was the problem, specifically the capital “F”, just change it to lowercase “f”, and it works fine. Now I just have to deal with the MacOS debugging issue.

  9. John Kuru July 11, 2012 at 1:12 pm

    Hi Quetwo,

    Thanks for this great post. It is really very helpful and your blog is great. I especially liked the Kinnect one. :)

    I am trying to build an ANE for Mac. I am newbie to mac. I started with the Helloworld example on Adobe’s website and built on top of it. I used Xcode 4.2.1, llvm 3.0 compiler and base sdk 10.7. ALL THIS WORKS VERY FINE AND I HAVE ALL THIS RUNNING. :)

    Now the problem is i have to use a STATIC LIBRARY in the native extension C++ part. This library does a bunch of important helper stuff. I added this library in my Xcode project( by giving additional linker flags -llibxxx.a and giving appropriate search paths etc.)

    When i run my Application and make the first call to any function inside the static lib it crashes. The error thrown is “dyld: lazy symbol binding failed: Symbol not found:.._u_xxx_6_…”.
    After receiving this error i did “nm libxxx.a | grep u_xxx” on static library & also on the final framework, i could see the symbols there in, marked as ‘T’.

    I tried using “file” command and the generated framework is a i386 binary.

    The static lib should be fine since i have been using it in similar way in another program( which is not ANE though). I have tried a lot of things and still that error exists.

    Is it because of the peculiar @executable_path setting in the xcode settings. As i understand since i am able to find symbols using nm and the lbrary is i386 it is getting statically linked. But when it goes to load the function it fails.

    I shall be thankful if you could suggest me possible things i might be doing wrong. Please feel free to ask me any questions about the implementation.

    Thanks

  10. rethinkflash July 17, 2012 at 5:04 pm

    Hey, I found someone has just made a XCode template, that builds an ANE for you. But right now, it’s set to make an ANE version for iOS, and not the Mac OS X desktop. But still, it takes the pain out of getting a starting point to actually successfully build a project. I hope he makes a the Mac OS X desktop template soon! https://github.com/divijkumar/xcode-template-ane

    I tried setting the base SDK to Mac 10.5, but the compiler that builds the ANE file, builds it to target iPhone-ARM.

  11. Ellis Elkins August 21, 2012 at 11:18 am

    The arduino connect is a great bit of code. Thnaks for making it available. I’ve been able to use it to connect to my arduino just fine.

    I’m now working on using the arduino connector code to communicate with a stopwatch through a serial port to receive it’s data directly into flex. Everything seems to be working except the data isn’t showing up in flex when the watch is sending it. I’ve done some research and it appears as though when the com port is opened I need to set the port’s DTR setting to false. I believe I have this code in place but now I need to recompile the windows DLL (and next the .framework, which this article will help with).

    To compile the DLL I found a program called MinGW (Minimalist GNU for Windows) and I’ve successfully compiled a test DLL. When I go to compile SerialANE.c into libSerialANE.dll the compiler complains about the FlashRuntimeExtensions.h file. I copied the flash header file from the 4.6 sdk into the Windows-x86 directory to compile, but it throws a bunch of errors when compiling.

    This is my first foray into DLL compiling so maybe (probably) there is a better way of doing all this. Could you go over your process. Thakns a whole heep.

  12. Ellis Elkins November 23, 2012 at 12:51 pm

    There’s another problem with the frameworks to watch out for. I built the framework then copied the framework directory over to the directory where I would build the ane from. I knew that by doing this the symlink files (Resources, SerialANE, Versions/Current) in the framework folder would still be pointing to the folders and files of the original framework folder, so I deleted the copied symlink files and remade them in Finder. Turns out that making these symlink files in Finder caused the files to not work. So instead of copying the framework folder I dragged it to where I would build the ane. I believe another way to do this would be to create the symlink files in terminal, though I haven’t tried this. Hope this helps.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 28 other followers

%d bloggers like this: