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');
    }
}
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.
Class that acts as abstraction over particular platform . Encapsulates the platform s properties and methods .