spec/plugman/projects/android/cordova/Api.js
function Api(platform, platformRootDir, events) {
    this.platform = PLATFORM;
    this.root = path.resolve(__dirname, '..');

    setupEvents(events);

    var self = this;

    this.locations = {
        root: self.root,
        www: path.join(self.root, 'assets/www'),
        res: path.join(self.root, 'res'),
        platformWww: path.join(self.root, 'platform_www'),
        configXml: path.join(self.root, 'res/xml/config.xml'),
        defaultConfigXml: path.join(self.root, 'cordova/defaults.xml'),
        strings: path.join(self.root, 'res/values/strings.xml'),
        manifest: path.join(self.root, 'AndroidManifest.xml'),
        build: path.join(self.root, 'build'),
        // NOTE: Due to platformApi spec we need to return relative paths here
        cordovaJs: 'bin/templates/project/assets/www/cordova.js',
        cordovaJsSrc: 'cordova-js-src'
    };

    // XXX Override some locations for Android Studio projects
    if(AndroidStudio.isAndroidStudioProject(self.root) === true) {
      selfEvents.emit('log', 'Android Studio project detected');
      this.android_studio = true;
      this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml');
      this.locations.strings = path.join(self.root, 'app/src/main/res/xml/strings.xml');
      this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml');
      this.locations.www = path.join(self.root, 'app/src/main/assets/www');
      this.locations.res = path.join(self.root, 'app/src/main/res');
    }
}
function Api(platform, platformRootDir, events) {
    this.platform = PLATFORM;
    this.root = path.resolve(__dirname, '..');

    setupEvents(events);

    var self = this;

    this.locations = {
        root: self.root,
        www: path.join(self.root, 'assets/www'),
        res: path.join(self.root, 'res'),
        platformWww: path.join(self.root, 'platform_www'),
        configXml: path.join(self.root, 'res/xml/config.xml'),
        defaultConfigXml: path.join(self.root, 'cordova/defaults.xml'),
        strings: path.join(self.root, 'res/values/strings.xml'),
        manifest: path.join(self.root, 'AndroidManifest.xml'),
        build: path.join(self.root, 'build'),
        // NOTE: Due to platformApi spec we need to return relative paths here
        cordovaJs: 'bin/templates/project/assets/www/cordova.js',
        cordovaJsSrc: 'cordova-js-src'
    };

    // XXX Override some locations for Android Studio projects
    if(AndroidStudio.isAndroidStudioProject(self.root) === true) {
      selfEvents.emit('log', 'Android Studio project detected');
      this.android_studio = true;
      this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml');
      this.locations.strings = path.join(self.root, 'app/src/main/res/xml/strings.xml');
      this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml');
      this.locations.www = path.join(self.root, 'app/src/main/assets/www');
      this.locations.res = path.join(self.root, 'app/src/main/res');
    }
}
Class, that acts as abstraction over particular platform. Encapsulates the
platform's properties and methods.

Platform that implements own PlatformApi instance _should implement all
prototype methods_ of this class to be fully compatible with cordova-lib.

The PlatformApi instance also should define the following field:

* platform: String that defines a platform name.