Web service which converts Open Web Apps into native Android apps
Перейти к файлу
Austin King 31d2b9d0bc Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
bin Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
config Adding Admin CLI. Fixes Bug#986551 2014-03-30 23:32:36 -07:00
docs Moving adminHawk into Controller Only section 2014-03-30 23:39:52 -07:00
int-test Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
lib Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
node_modules Add build queue lock MySQL table. Fixes bug#976170 2014-03-28 15:24:41 -07:00
scripts Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
test Add build queue lock MySQL table. Fixes bug#976170 2014-03-28 15:24:41 -07:00
test-manifests Started reorganizing builder into apk-factory-service 2013-11-20 10:04:57 -08:00
util-templates Started reorganizing builder into apk-factory-service 2013-11-20 10:04:57 -08:00
.gitignore Moving apk-factory-library install path out of node_modules. Fixes Bug#967849 2014-02-04 15:06:44 -08:00
.jshintrc Adding .jshintrc 2014-01-27 16:23:02 -08:00
.travis.yml We're too noisy for #mobile 2014-02-12 14:05:10 -08:00
Gruntfile.js Started reorganizing builder into apk-factory-service 2013-11-20 10:04:57 -08:00
README.md Rework review and release modes. Use ant debug. Fixes Bug#988644 2014-04-01 19:12:53 -07:00
build Bug 979759: run npm rebuild during build process. 2014-03-06 11:44:33 -05:00
install-tools.sh Started reorganizing builder into apk-factory-service 2013-11-20 10:04:57 -08:00
package.json CLI support Bug#962879 2014-02-07 13:09:48 -08:00

README.md

APK Factory Service

Web service which takes Open Web App manifests and produces Synthetic APKs.

This service depends on APK Factory Library.

Build Status

Dependencies

  • GraphicsMagick
  • MySQL
  • Java 7
  • Ant (from the Android SDK)
  • unzip (UnZip, by Info-ZIP will work)

APT-based Linux:

sudo apt-get install graphicsmagick mysql-server
# Android SDK also requires:
sudo apt-get install openjdk-7-jdk ant ia32-libs unzip

Mac OS X with brew:

brew install libtiff graphicsmagick mariadb

Installation

# Clone apk-factory-library
cd lib/ext && git clone https://github.com/mozilla/apk-factory-library.git

# Create the database and an *apk* user with privileges on it.
mysql.server start
mysql -u root < docs/db/schema_up_000.sql
mysql -u root -e "CREATE USER 'apk'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -e "GRANT ALL PRIVILEGES ON apk_factory.* TO 'apk'@'localhost';"

Install the Android SDK. See Notes on Android SDK for common setup instructions. You'll need to expose the SDK path with something like this:

export ANDROID_HOME=~/Downloads/adt-bundle-mac/sdk/
export ANDROID_SDK_HOME=$ANDROID_HOME

You need to have API 19 (or maybe higher?). Check for adt-bundle-mac/sdk/platforms/android-19/.

Please read config/default.js which documents the various configuration paramters and allowable values.

Local development

One time install of development only modules

npm install node-inspector tape

You'll probably want to point your local generator to a local APK Signer. See config/default.js for where to set its URL.

After setting ANDROID_HOME, fire up your local controller and generator servers like:

npm start

If everything is configured you should be able to post a manifest to your controller and get a binary APK response. Try this:

curl -v 'http://127.0.0.1:8080/application.apk?manifestUrl=http://deltron3030.testmanifest.com/manifest.webapp'

curl -v -H "Content-Type: application/json" -X POST -d '{ "installed":{"http://deltron3030.testmanifest.com/manifest.webapp":1394909578}}' https://localhost:8080/app_updates

You can generate manifests at testmanifest.com.

You can attach a debugger via two tabs in Chrome, if you do this instead of npm start

node scripts/development-server.js debug

And then load in Chrome:

CLI

There is a command line interface to create APKs locally.

node  --endpoint=http://localhost:8080 bin/cli.js http://people.mozilla.org/~fdesre/openwebapps/package.manifest application.apk

Testing

Unit tests

$ npm test

Integration tests

 $ INT_TESTING=true npm start
 $ ./node_modules/.bin/tap --timeout=999999 int-test/integration-test.js

or to target a different environment

 $ APK_ENDPOINT='http://dapk.net' tap int-test/integration-test.js

Deployment

Production

Stage

Dev

Dev server is automatically deployed from master after a commit

https://apk-controller.dev.mozaws.net

OLD Dev Server

A former development server is available at http://dapk.net.

Some notes on how its process is started up:

ANDROID_HOME=/data/android-sdk-linux \
CONFIG_FILES='/home/ubuntu/apk-factory-service/config/default.js,/home/ubuntu/apk-factory-service/config/aws.js' \
forever start bin/controller

Command Line Interface

node bin/cli.js