- Application can be run in a local http server, or emulated/released to Android/iOS
- A lot of useful gulp tasks, like:
gulp- watch for changes + livereload + http server + weinre debuggergulp cordova:emulate:ios- run application in iOS emulatorgulp cordova:run:android- run application on Android's devise
- Useful hooks and tweaks, which allow you to deploy your cordova app out-of-the-box
- SASS + CoffeeScript + Jade combo
- Support for multiple environments, like development, staging, production (configuration available in
gulpfile.coffee) - Tests configured and working: unit (karma + mocha) and end to end (protractor)
- NodeJS
- Cordova 3.5+
- Android or iOS SDK installed and configured (required only if you want to deploy the app to native mobile platforms - you can run
gulpserver without that)
g clone jtomaszewski/ionicstarter-mobile
cd ionicstarter-mobile
# install dependencies
npm install
npm install -g gulp
bower install
brew install imagemagick # or `apt-get install imagemagick`, if you're on linux
gulp # build www/ directory and run http server on 4440 port
Also install the required cordova plugins
cordova plugin add <all of the following>
org.apache.cordova.camera
org.apache.cordova.device
org.apache.cordova.file
org.apache.cordova.file-transfer
org.apache.cordova.geolocation
org.transistorsoft.cordova.background-geolocation
If you get "too many files" error, try: ulimit -n 10000. You may want to add this line to your .bashrc / .zshrc / config.fish.
More or less:
- All .scss, .coffee, .jade files from
app/will be compiled and copied towww/ - All
.ejsfiles fromassets/will be compiled towww/. - All other files from
assets/will be copied towww/.
For detailed description, see gulpfile.coffee.
P.S. www/ is like dist/ directory for Cordova. That's why it's not included in this repository, as it's fully generated with gulp.
Requirements: installed PhantomJS and configured selenium standalone webdriver.
gulp test:unit # using PhantomJS
gulp test:unit --browsers Chrome # or using Google Chrome
cd ../rails && bin/rails s # make sure your rails server is running in the background
gulp # your www/ directory should be built and served at :4400 port
node_modules/.bin/webdriver-manager start & # run selenium server in the background
gulp test:e2e # finally, run e2e tests
I recommend tmux for handling multiple terminal tabs/windows ;)
- Copy
.envrc.android-sampleor.envrc.ios-sampleto.envrcand configure it.
-
Ofcourse, if you're a Mac user and you can compile both Android and iOS on the same machine, you can include all the variables from both of these files in only one
.envrc. -
Also, make sure you have all the keys and certificates needed stored in
keys/android/andkeys/ios/:keys/android/ionicstarter.keystorekeys/ios/ionicstarter_staging.mobileprovisionkeys/ios/ionicstarter_production.mobileprovision
-
Ensure, you have configured ios/android platform with Cordova, f.e. by running
gulp cordova:platform-add:[ios|android]. -
Run
gulp cordova:emulate:[ios|android]orgulp cordova:run:[ios|android].
First, generate the certificate keys:
-
Generate .keystore file:
keytool -genkey -v -keystore keys/android/$ANDROID_KEYSTORE_NAME.keystore -alias $ANDROID_ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000 -
Add proper key hash to Facebook application in android's settings.
You can generate Key Hash using this method:
keytool -exportcert -alias $ANDROID_ALIAS_NAME -keystore keys/android/$ANDROID_KEYSTORE_NAME.keystore | openssl sha1 -binary | openssl base64
To generate debug's Key Hash (using in cordova run), use:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android | openssl sha1 -binary | openssl base64
-
Create a certificate and a provisioning profile, as it's described here.
-
Download the provisioning profile and copy it into
keys/ios/, so it will match theIOS_PROVISIONING_PROFILEfile set up in thegulpfile.coffee.
Then, generate the application and deploy it to the webserver with:
gulp release --env=[staging|production]