Application Support directory to classpath

Hendrik Schreiber hs at tagtraum.com
Fri Mar 11 07:23:02 UTC 2016


Hey Michael,

> On Mar 11, 2016, at 02:51, Michael Hall <mik3hall at gmail.com> wrote:
> 
> I am trying to add some support for my application updating external files. Appstore is not necessarily a major concern, but I wouldn’t want to eliminate it as a possibility for no good reason by doing something unnecessarily violating some app store constraint. In some quick browsing I saw no real better choice to place the data than using the Application Support directory. If there is a better way of handling that now please let me know. 


When your app is sandboxed, it does not have access to Application Support.
Instead, it has its own “container”. Read more about this at https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW15

If you want to first get started and worry about sandboxing later, Application Support is IMHO the right place for this kind of thing.
To migrate later, take a look at https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/MigratingALegacyApp/MigratingAnAppToASandbox.html#//apple_ref/doc/uid/TP40011183-CH6-SW1

To find the Application Support directory, you can use

import com.apple.eio.FileManager;
private static final int kApplicationSupportFolder = 0x61737570; // asup
String folder = FileManager.findFolder(FileManager.kUserDomain, kApplicationSupportFolder);

This will at least work as long as com.apple.eio.FileManager still exists (not sure, whether this will eventually go away with JDK9).

Whether System.getProperty("user.home”) will return the container directory for a sandboxed app is an interesting question that I don’t know the answer to. The Objective-C docs recommend to use https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/index.html#//apple_ref/c/func/NSHomeDirectory to get it.

Cheers,

-hendrik


More information about the macosx-port-dev mailing list