anchor.diff:      return (_androidJar.existsSync() && _aapt.existsSync() && _zipalign.existsSync());
     }
   
  -  void package(File outputApk, File androidManifest, Directory assets, Directory artifacts) {
  -    _run(_aapt.path, [
  +  void package(File outputApk, File androidManifest, Directory assets, Directory artifacts, Directory resources) {
  +    List<String> packageArgs = [_aapt.path,
         'package',
         '-M', androidManifest.path,
         '-A', assets.path,
         '-I', _androidJar.path,
         '-F', outputApk.path,
         artifacts.path
  -    ]);
  +    ];
  +    if (resources.existsSync()) {
  +      packageArgs.addAll(['-S', resources.path]);
  +    }
  +    runCheckedSync(packageArgs);
     }
   
     void sign(File keystore, String keystorePassword, String keyName, File outputApk) {
  -    _run(_jarsigner, [
  +    runCheckedSync([_jarsigner,
         '-keystore', keystore.path,
         '-storepass', keystorePassword,
         outputApk.path,
  
positive.code:       _ApkBuilder builder = new _ApkBuilder(components.androidSdk.path);
        File unalignedApk = new File('${tempDir.path}/app.apk.unaligned');
        builder.package(unalignedApk, components.manifest, assetBuilder.directory,
                        artifactBuilder.directory);
        builder.sign(components.keystore, _kKeystorePassword, _kKeystoreKeyName, unalignedApk);
  
        File finalApk = new File(argResults['output-file']);
  
negative.code:     components.classesDex = new File(artifactPaths[1]);
      components.libSkyShell = new File(artifactPaths[2]);
      components.keystore = new File(artifactPaths[3]);
      // TODO(eseidel): Should this be configurable from flutter.yaml?
      components.resources = new Directory('apk/res');
  
      if (!components.androidSdk.existsSync()) {
        logging.severe('Can not locate Android SDK: $androidSdkPath');
  