anchor.diff:          abbr: 'm',
           defaultsTo: _kDefaultAndroidManifestPath,
           help: 'Android manifest XML file.');
  +    argParser.addOption('resources',
  +        abbr: 'r',
  +        defaultsTo: _kDefaultResourcesPath,
  +        help: 'Resources directory path.');
       argParser.addOption('output-file',
           abbr: 'o',
           defaultsTo: _kDefaultOutputPath,
  
positive.code:       '-A', assets.path,
        '-I', _androidJar.path,
        '-F', outputApk.path,
        artifacts.path
      ];
      if (resources.existsSync()) {
        packageArgs.addAll(['-S', resources.path]);
      }
      runCheckedSync(packageArgs);
    }
  
  
negative.code: 
      _ApkComponents components = new _ApkComponents();
      components.androidSdk = new Directory(androidSdkPath);
      components.manifest = new File(argResults['manifest']);
      components.icuData = new File(artifactPaths[0]);
      components.classesDex = new File(artifactPaths[1]);
      components.libSkyShell = new File(artifactPaths[2]);
      components.keystore = new File(artifactPaths[3]);
      components.resources = new Directory(argResults['resources']);
  
      if (!components.resources.existsSync()) {
        // TODO(eseidel): This level should be higher when path is manually set.
        logging.info('Can not locate Resources: ${components.resources}, ignoring.');
        components.resources = null;
      }
  
      if (!components.androidSdk.existsSync()) {
        logging.severe('Can not locate Android SDK: $androidSdkPath');
  