[
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directory\n# Commenting this out is preferred by some people, see\n# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-\nnode_modules\n\n# Users Environment Variables\n.lock-wscript\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - \"0.10\"\n\nscript:\n  - cd .. && npm link chromeos-apk\n  - wget https://github.com/uberspot/2048-android/archive/v1.91.zip && unzip v1.91.zip\n  - chromeos-apk 2048-android-1.91/2048.apk -a -t\n  - stat com.uberspot.a2048.android/vendor/chromium/crx/custom-android-release-1400197.apk\n  - rm -rf com.uberspot.a2048.android\n  - chromeos-apk 2048-android-1.91/2048.apk\n  - stat com.uberspot.a2048.android/vendor/chromium/crx/custom-android-release-1400197.apk\n  - rm -rf com.uberspot.a2048.android\n  - chromeos-apk 2048-android-1.91/2048.apk --scale\n  - stat com.uberspot.a2048.android/vendor/chromium/crx/custom-android-release-1400197.apk\n"
  },
  {
    "path": "CHANGELOG",
    "content": "v4.0.0:\n  changes:\n    - \"key\" param is not required anymore for ChromeOS (Chrome 38+).\n    - \"--scale\" option added to enable application window scaling.\nv3.0.0:\n  changes:\n    - Windows support for the CLI tool.\nv2.0.0:\n  changes:\n    - ARChon runtime.\nv1.0.0:\n  changes:\n    - Initial release.\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Vlad Filippov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "chromeos-apk\n======================\n\n> Run Android APKs on Chrome OS, OS X, Linux and Windows.\n\n<img src=\"http://v14d.com/g/chromeapks/1.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/2.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/3.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/4.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/5.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/6.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/chromeapks/7.png\" height=\"160px\" />\n\n### Now supports OS X, Linux and Windows\n\n<img src=\"http://v14d.com/g/multiple.png\" width=\"250px\" />\n<img src=\"http://v14d.com/g/WinApk.jpg\" width=\"250px\" />\n\n>See the [Custom ARChon runtime guide](archon.md) to run apps on other operating systems besides Chrome OS.\n\n\n### [Video Demo](https://www.youtube.com/watch?v=O-yFLqp_sXs)\n\n## Quick Demo for Chrome OS\n- Download an official app, [such as Evernote](https://chrome.google.com/webstore/detail/evernote/dhfolfjkgpeaojbiicgheljefkfbbfkc), from the Chrome Web Store.\n- Then download this open source game: [2048.APK Game](https://github.com/vladikoff/chromeos-apk/releases/download/v1.1.0/com.uberspot.a2048.android-OFFICIAL.zip) by [Uberspot](https://github.com/uberspot/2048-android) and load it as an unpacked extension. Go to chrome://apps and launch it there, ignore warnings.\n\n## Setup for Chrome OS / App Conversion\n> Conversion Tool Tested on OS X, Windows and Ubuntu. You can also [convert APKs manually](manually-convert.md).\n\n- Install [a sample Android app from the Chrome Store](https://chrome.google.com/webstore/detail/kids-sight-words/inpoiemibmljfjmjmlokfdllnkjejhai) to get the runtime. Test out that app, make sure it runs on your hardware.\n- (Ubuntu might need `sudo apt-get install lib32stdc++6`)\n- Install Node.js (via http://nodejs.org/)\n- Install the tool (might need a `sudo` prefix):\n```\nnpm install chromeos-apk -g\n```\nor\n\n```\nsudo npm install chromeos-apk -g\n```\n\n## Usage\n\nRun\n`chromeos-apk [path to apk file]`\n\n### Example phone app\n\n```\nchromeos-apk com.soundcloud.android.apk\n```\n\n#### Example tablet app\n\n```\nchromeos-apk com.soundcloud.android.apk --tablet\n```\n\nThis will generate a directory for you, i.e `com.soundcloud.android`. Copy this directory to your Chromebook.\nOn your Chromebook go to `chrome://extensions`, enable \"Developer mode\", and load the directory using the \"Load unpacked extension\" button.\n<img src=\"http://v14d.com/g/chromeapks/howto.png\" width=\"500px\" />\n\n## Troubleshooting\n\nMake sure Android applications are compatible with your Chromebook, first try to install an official application such as Vine:\nhttps://chrome.google.com/webstore/detail/vine/plfjlfohfjjpmmifkbcmalnmcebkklkh\n\nIf you get a `Failed to parse package name in the APK.` error, then you will have to type it the proper package name for the application. You can find out the package name by looking at the URL of the app in the Play Store.\n\n## Note\n\n**Chrome OS:** With Chrome 38+ you can now side load as many applications as you want. If you have older apps that\nwere created using `chromeos-apk` tool then re-convert them or remove the `\"key\"` option from `manifest.json`.\n\n**Windows, Linux and OS X:** To load unlimited number of apps on you need a custom runtime, see the [ARChon runtime guide](archon.md) for details.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Tested Apps\n\nRead [the manifest guide](manifest.md) to tweak applications. Android `Menu` key is accessible using `ctrl` + `ESC`.\n\n- Flipboard, Flixster, Twitter - Works.\n- Pandora - Works [[Screenshot](http://i.imgur.com/0d8XvXr.png)]\n- Yahoo Screens, Weather and Mail work in Phone mode (might need to remove `gcm` from `usePlayServices` in `manifest.json`). \n- Soundcloud - Works, crashes when playing sound.\n- Chrome, Firefox, Opera, Spotify - Crashes (require native libraries).\n- Opera Mini - Works, issues with the back button.\n- [Gyro Game](https://play.google.com/store/apps/details?id=pl.submachine.gyro&hl=en) - Works\n- [Break Bricks Game](https://play.google.com/store/apps/details?id=com.tongwei.blockbreaker) - Works \n- Swing Copters - Crashes on Google Play Services.\n- WhatsApp - Crashes\n- IMDB - Works\n- Skype `com.skype.raider` - Works, requires you to enter the package name manually in the CLI, use `com.skype.raider`. Use an older version of APK 5.0.0.x to get this to work.\n- XBMC - Crash after initial load.\n- Microsoft Remote Desktop - App seems to work properly after crashing once.  \n\n\n### Author\n\n| [![twitter/vladikoff](https://avatars3.githubusercontent.com/u/128755?s=70)](https://twitter.com/vladikoff \"Follow @vladikoff on Twitter\") |\n|---|\n| [@vladikoff](https://twitter.com/vladikoff) |\n"
  },
  {
    "path": "_template/_locales/en/messages.json",
    "content": "{\n   \"appNotSupported\": {\n      \"description\": \"Message displayed when the app is not supported.\",\n      \"message\": \"This app is incompatible with your device. Check to make sure other Android apps work for you from the Chrome Web Store\"\n   },\n   \"extName\": {\n      \"description\": \"Extension name\",\n      \"message\": \"App\"\n   }\n}\n"
  },
  {
    "path": "_template/app_main.html",
    "content": "<!-- Copyright 2013 Google Inc. All Rights Reserved.\n\n     ARC app_main.html.  This file is used as the background page for ARC apps.\n     It only embeds an iframe for ARC's main.  This is so we do not have to\n     specify a background page in the manifest.json that looks like\n     '_modules/arcruntimeid/main.html', because the extension validator\n     in Chrome does not understand _modules relative paths.  Rather than bake\n     this knowledge and complexity into the validator, it is better to use this\n     App relative app_main.html.  -->\n\n<!DOCTYPE html>\n<iframe src=\"_modules/mfaihdlpglflfgpfjcifdjdjcckigekc/main.html\"></iframe>\n"
  },
  {
    "path": "_template/manifest.json",
    "content": "{\n   \"app\": {\n      \"background\": {\n         \"page\": \"app_main.html\"\n      }\n   },\n   \"arc_metadata\": {\n      \"apkList\": [ \"custom-android-release-1400197.apk\" ],\n      \"enableExternalDirectory\": false,\n      \"formFactor\": \"phone\",\n      \"name\": \"__PACKAGE__\",\n      \"orientation\": \"portrait\",\n      \"packageName\": \"__PACKAGE__\",\n      \"useGoogleContactsSyncAdapter\": false,\n      \"usePlayServices\": [ \"gcm\" ]\n   },\n   \"default_locale\": \"en\",\n   \"icons\": {\n      \"128\": \"icon.png\",\n      \"16\": \"icon.png\"\n   },\n   \"import\": [ {\n      \"id\": \"mfaihdlpglflfgpfjcifdjdjcckigekc\"\n   } ],\n   \"manifest_version\": 2,\n   \"name\": \"__MSG_extName__\",\n   \"oauth2\": {\n      \"client_id\": \"133701689125-jj0hr4gb0ff4ulsbrn0uk2i4th946d4c.apps.googleusercontent.com\",\n      \"scopes\": [  ]\n   },\n   \"offline_enabled\": true,\n   \"permissions\": [ \"gcm\", {\n      \"socket\": [ \"tcp-connect\", \"tcp-listen\", \"udp-bind\", \"udp-send-to\", \"resolve-host\" ]\n   }, \"unlimitedStorage\", \"notifications\", \"clipboardRead\", {\n      \"fileSystem\": [ \"write\" ]\n   }, \"https://clients2.google.com/\", \"videoCapture\", \"clipboardWrite\", \"identity.email\", \"alarms\", \"storage\", \"identity\", \"audioCapture\" ],\n   \"requirements\": {\n      \"3D\": {\n         \"features\": [ \"webgl\" ]\n      }\n   },\n   \"update_url\": \"https://localhost\",\n   \"version\": \"1337\"\n}\n"
  },
  {
    "path": "_template/vendor/chromium/crx/README.txt",
    "content": "APK goes here.\n"
  },
  {
    "path": "archon.md",
    "content": "# ARChon Custom Runtime Guide\n\n> ARChon runtime lets you run unlimited number of Android APKs created with `chromeos-apk` on Chrome OS and across any desktop platform that supports Chrome.\n\n<img src=\"http://v14d.com/g/WinApk.jpg\" width=\"350px\" />\n<img src=\"http://v14d.com/g/multiple.png\" width=\"350px\" />\n\n<img src=\"http://v14d.com/g/chromeapks/ARChonLogo.png\" height=\"100\" /> \n\n**Warning: The custom runtime will replace the official runtime component. To go back to the official runtime you will need to uninstall the custom one and reinstall the official one.**\n\n# Visit [archon-runtime.github.io](http://archon-runtime.github.io/) for latest releases\n\n- Download the runtime that is appropriate for your system: \n\n| Runtime  | Download |\n|---|---|\n| ARChon 1.2 - Intel x86 **Chrome 64-bit / Chrome OS 64-bit**  |  [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.2-x86_64.zip) :: [Mirror](http://archon.vf.io/ARChon-v1.2-x86_64.zip) MD5:d77b468339cc512e121c003cc97715db |\n| ARChon 1.2 - Intel x86 **Chrome 32-bit / Chrome OS 32-bit**  (Win7 32-bit: Use something like Chrome Beta 38.0.2125.77 beta-m) | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.2-x86_32.zip) :: [Mirror](http://archon.vf.io/ARChon-v1.2-x86_32.zip) MD5:9c9844e2591a27d952098581011a2bce |\n| ARChon 1.2 - **ARM (i.e ARM-based Chromebooks)**  | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.2-ARM.zip) :: [Mirror](http://archon.vf.io/ARChon-v1.2-ARM.zip) MD5:3d6955c7702baf1e1d16a000d9f67b10   |\n\n\n- Unzip it, Load it as an unpacked extension.\n\n<img src=\"http://v14d.com/g/chromeapks/howto.png\" width=\"500px\" />\n- (Try out this pre-packaged open source game: [2048-ARChon.APK](https://github.com/vladikoff/chromeos-apk/releases/download/v1.1.0/com.uberspot.a2048.android-ARChon-runtime.zip) by [Uberspot](https://github.com/uberspot/2048-android) and load it as an unpacked extension. Press \"Launch\", ignore warnings.)\n- To load custom applications, make sure you have `chromeos-apk@2.0.0` or higher. (Update using `npm install -g chromeos-apk@latest`). See [README.md](README.md) for more help with the `chromeos-apk` tool.\n- Create your custom APKs with the ARChon flag: `chromeos-apk com.imdb.mobile.apk`.\nThis will create an app directory for you.\n- Load as many APKs as you want as unpacked extensions on any platform of your choice.\n\n\n## Notes\n\n### Google Play Services\n\n- See https://github.com/vladikoff/chromeos-apk/issues/66\n\n### Load additional files \n\n- Put any additional files into `/vendor/chromium/crx/`, those would be accessible within the app environment\n- OBB files, one way: enable the `enableAdb` flag in `manifest.json`,  `adb push /<package>/<some.obb> /storage/sdcard/Android/obb/<package>/<some.obb>`\n\n### Convert older apps created with `chromeos-apk` tool to ARChon runtime.\n\n- Remove the `\"key\"` parameter from `manifest.json`.\n\n### Uninstalling ARChon\n\n- Remove the component and all applications that depend on it from `chrome://extensions` using the \"Remove\" button. \n- Chrome OS: Reinstall an app such as Evernote to get the official runtime.\n\n### ARChon source\n\nARChon source is hosted here: https://bitbucket.org/vladikoff/archon/src. It's on BitBucket because GitHub has a 100mb file limit. Feel free to hack on ARChon and tweak it. \n\n### Changing app resolution\n\nTweak the runtime in 2 places: You need to change the tablet resolution values in these 2 places: https://bitbucket.org/vladikoff/archon/src/master/gen_main.min.js and\nhttps://bitbucket.org/vladikoff/archon/src/master/gen_index.min.js\n\nFind `tablet: {\"long\": 1280, \"short\": 800}`, tweak it, fit your resolution, reload the run time. \n\n### Tweak Apps\n\nAdd `\"resize\": \"scale\"` to `\"arc_metadata\"` in `manifest.json`.\n\n**How to adjust font size**\n\n1. Modify the two files (gen_index.min.js and gen_main.min.js).\n\n2. Search a.prototype.computeValues_.\n\n3. Change the value of a.prototype.computeValues_.\n\n4. Let the value c double. Just like the following codes.\n```JavaScript\na.prototype.computeValues_ = function (a) {\n    var c = 2*window.devicePixelRatio / getCurrentZoom() \n    .....\n}\n```\nRead [the manifest guide](manifest.md) for more advanced tweaks.\n\n### Older downloads\n> These are downloads for previous versions of ARChon\n\n| Runtime  | Download |\n|---|---|\n| ARChon 1.1 - Intel x86 **Chrome 64-bit / Chrome OS 64-bit** (OSX: Use this in Chrome Canary)  | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.1-x86_64.zip) :: [GitHub](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_64.zip)   MD5:d409801cac97cdff9ea6aad468ddc927 |\n| ARChon 1.1.1 - Intel x86 **Chrome 32-bit / Chrome OS 32-bit** (OSX: Use this in Chrome Stable) (Win7 32-bit: Use something like Chrome Beta 38.0.2125.77 beta-m) | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.1.1-x86_32.zip) :: [GitHub](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1.1-x86_32.zip)   MD5:5780637446ba941bd2969756f56f9671 |\n| ARChon 1.1 - **ARM (i.e ARM-based Chromebooks)**  | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.1-ARM.zip) :: [GitHub](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-ARM.zip) MD5:d0a69d822399545ff67292b50f8c4047   |\n| ARChon 1.0 - Intel x86 64-bit | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.0.zip) MD5:3bd2e6014a0cba0b1ee3c69462a9b46d |\n| ARChon 1.1 - Intel x86 **Chrome 32-bit / Chrome OS 32-bit** (OSX: Use this in Chrome Stable)   | [BitBucket](https://bitbucket.org/vladikoff/archon/get/v1.1-x86_32.zip) :: [GitHub](https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_32.zip)   MD5:873c4d116eabd1a5ebedec65d11d6d8a |\n"
  },
  {
    "path": "chromeos-apk",
    "content": "#!/usr/bin/env node\n\nrequire('./chromeos-apk.js')();\n"
  },
  {
    "path": "chromeos-apk.js",
    "content": "var path = require('path');\nvar fs = require('fs');\nvar readline = require('readline');\n\nvar program = require('commander');\nvar ncp = require('ncp').ncp;\nvar chalk = require('chalk');\nvar rl = readline.createInterface(process.stdin, process.stdout);\n\nvar parseApk = require('./lib/parseApk');\n\nfunction success(appPath) {\n  console.log(chalk.green('Directory \"', appPath, '\" created. Copy that directory onto your Chromebook and use \"Load unpacked extension\" to load the application.'));\n  process.exit(0);\n}\n\nmodule.exports = function (callback) {\n\n  program\n    .version('4.0.2')\n    .option('-t, --tablet', 'Create a tablet version')\n    .option('-s, --scale', 'Enable application window scaling')\n    .option('-n, --ext-name [value]', 'Extension display name')\n    .usage('<path_to_apk_file ...>')\n    .parse(process.argv);\n\n  var apk = program.args[0];\n  callback = callback || success;\n\n  if (!apk) {\n    program.outputHelp();\n    process.exit(0);\n  }\n\n  parseApk(apk, function (err, data) {\n    if (err) {\n      console.log(chalk.yellow('Failed to load APK'));\n    }\n\n    var packageName = null;\n\n    try {\n      packageName = data.package;\n    } catch (e) {\n      console.log(chalk.yellow('Failed to parse package name in the APK.'));\n    }\n\n    if (!packageName) {\n      console.log(chalk.yellow('Unknown APK package.'));\n      console.log('Please enter the package name (i.e \"com.skype.raider\", if you get this wrong your app will NOT work): ');\n      rl.prompt();\n      rl.on('line', function (text) {\n        text = text.trim();\n\n        if (/\\.apk$/.test(text)) {\n          console.log(chalk.red('Package names do not end with .apk'));\n          console.log('They usually look like com.application.developer or com.website.www');\n          process.exit(0);\n        } else if (text.indexOf(' ') !== -1) {\n          console.log(chalk.red('Package names do not contain spaces'));\n          console.log('They usually look like com.application.developer or com.website.www');\n          process.exit(0);\n        }\n        else {\n          createExtension(text);\n        }\n      })\n      .on('close', function () {\n        process.exit(0);\n      });\n    } else {\n      createExtension(packageName);\n    }\n\n    function createExtension(packageName) {\n      var templatePath = path.join(__dirname, '_template');\n      var appPath = path.join(packageName + '.android');\n\n      // TODO: refactor this if needed in the future\n      ncp(templatePath, appPath, function (err) {\n        if (err) {\n          throw err;\n        }\n\n        fs.writeFileSync(path.join(appPath, 'vendor', 'chromium', 'crx', 'custom-android-release-1400197.apk'), fs.readFileSync(apk));\n\n        var manifest = JSON.parse(fs.readFileSync(path.join(templatePath, 'manifest.json')));\n        var messages = JSON.parse(fs.readFileSync(path.join(templatePath, '_locales', 'en', 'messages.json')));\n        manifest.arc_metadata.name = packageName;\n        manifest.arc_metadata.packageName = packageName;\n        manifest.version = '1337';\n\n        if (program.extName && typeof program.name !== 'function') {\n          messages.extName.message = program.extName;\n        } else if (packageName) {\n          messages.extName.message = packageName;\n        } else {\n          messages.extName.message = 'App';\n        }\n\n        if (program.tablet) {\n          manifest.arc_metadata.formFactor = 'tablet';\n          manifest.arc_metadata.orientation = 'landscape';\n        }\n\n        if (program.scale) {\n          manifest.arc_metadata.resize = 'scale';\n        }\n\n        fs.writeFileSync(path.join(appPath, 'manifest.json'), JSON.stringify(manifest, null, 2));\n        fs.writeFileSync(path.join(appPath, '_locales', 'en', 'messages.json'), JSON.stringify(messages, null, 2));\n\n        // done.\n        callback(appPath);\n      });\n    }\n  });\n\n};\n"
  },
  {
    "path": "lib/parseApk.js",
    "content": "var ApkReader = require('adbkit-apkreader');\n\nmodule.exports = function parseApk(apk, cb) {\n  try {\n    var reader = ApkReader.readFile(apk);\n    var manifest = reader.readManifestSync();\n\n    cb(null, manifest);\n  } catch (e) {\n    cb(e);\n  }\n};\n"
  },
  {
    "path": "manifest.md",
    "content": "# `manifest.json` configuration\n\n## `arc_metadata`\nRaw list of possible values for `arc_metadata`:\n\n```\n\"arc_metadata\": {\n  \"allowEmptyActivityStack\": false,\n  \"apkList\": [\n    \"custom-android-release-1400197.apk\"\n  ], \n  \"canRotate\": false,\n  \"disableAutoBackButton\": false,\n  \"enableAdb\": false,\n  \"enableArcStrace\": false,\n  \"enableExternalDirectory\": false,\n  \"enableGlErrorCheck\": false,\n  \"formFactor\": \"phone\",\n  \"fpsLimit\": 60,\n  \"isSlowDebugRun\": false,\n  \"jdbPort\": 0,\n  \"logLoadProgress\": false,\n  \"minimumLaunchDelay\": 0,\n  \"name\": \"\",\n  \"ndkAbi\": \"\",\n  \"orientation\": \"portrait\",\n  \"packageName\": \"org.chromium.arc\",\n  \"resize\": \"disabled\",\n  \"shell\": [],\n  \"stderrLog\": \"S\",\n  \"useGoogleContactsSyncAdapter\": false,\n  \"usePlayServices\": [\n   \"gcm\"\n  ],\n  \"sleepOnBlur\": true\n}\n```\n\n## `file_handlers`\n\nSee https://developer.chrome.com/apps/manifest/file_handlers. \nThis is useful for Chrome OS users. You can experiment opening files with certain Android apps by setting their file handlers. Add to `manifest.json` in your app: \n```\n \"file_handlers\": {\n      \"any\": {\n         \"title\": \"Open with SOME_APP\",\n         \"types\": [ \"*/*\" ]\n      }\n  },\n```\nThis way your file manager will get this option: \n<img src=\"http://i.imgur.com/zTjPaHc.png\" width=\"250px\" />\n"
  },
  {
    "path": "manually-convert.md",
    "content": "# Instructions to convert APKs manually\n> Use this if the command line tool (`chromeos-apk`) fails to parse work for you. \n\n*****\n\n\n- Get the APK that you want to convert. Find the package name of the APK (i.e `com.soundcloud.android`, you can easily find it by looking at the URL in the Play Store). This process will not work without the proper package name.\n- Make a copy of the [_template](https://github.com/vladikoff/chromeos-apk/tree/master/_template) directory. Name the **new directory** `com.soundcloud.android` for instance.\n- Using the new directory, put the APK file into the `crx` directory, like so: [com.soundcloud.android/vendor/chromium/crx](https://github.com/vladikoff/chromeos-apk/tree/master/_template/vendor/chromium/crx)\n- Update the [manifest.json](https://github.com/vladikoff/chromeos-apk/blob/master/_template/manifest.json#L8) file to suite your APK file. You can also change other stuff, such as `formFactor`: (`phone` or `tablet`), `orientation`: (`landscape` or `portrait`) for tablet apps. Note: some apps may crash with `tablet` or `portrait` settings.  \n- Now you can load the new directory and it as an unpacked extension in Chrome Extensions.\n\n## For ARChon runtime\n\n- Remove the `\"key\"` parameter from `manifest.json`.\n"
  },
  {
    "path": "multiple-apps.md",
    "content": "# Running Multiple Apps\n<img src=\"http://v14d.com/g/chromeapks/multiple.png\" width=\"450px\" />\n\n***** \n\n~~Currently you can load up to 4 of your favorite Android applications with the official ARC runtime.~~\n~~By default the `chromeos-apk` tool replaces the Vine application and everytime you load a different app it replaces it. However you can load 3 more apps by replacing Evernote and other apps. For each extra app adjust the `\"key\"` value in the `manifest.json` file of that app, then use `\"Load unpacked extension...\"`.~~\n\n**Chrome OS:** With Chrome 38+ you can now side load as many applications as you want. If you have older apps that\nwere created using `chromeos-apk` tool then re-convert them or remove the `\"key\"` option from `manifest.json`.\n\n**Windows, Linux and OS X:** To load unlimited number of apps on you need a custom runtime, see the [ARChon runtime guide](archon.md) for details.\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"chromeos-apk\",\n  \"version\": \"4.0.2\",\n  \"description\": \"Run Android APKs on Chromebooks\",\n  \"main\": \"chromeos-apk.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"bin\": {\n    \"chromeos-apk\": \"chromeos-apk\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/vladikoff/chromebook-apk-creator.git\"\n  },\n  \"author\": \"Vlad Filippov\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/vladikoff/chromebook-apk-creator/issues\"\n  },\n  \"homepage\": \"https://github.com/vladikoff/chromebook-apk-creator\",\n  \"dependencies\": {\n    \"adbkit-apkreader\": \"^1.0.0\",\n    \"chalk\": \"^0.5.1\",\n    \"commander\": \"^2.3.0\",\n    \"ncp\": \"^0.6.0\"\n  }\n}\n"
  }
]