aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Day <steve@mysociety.org>2016-04-21 18:31:17 +0100
committerSteven Day <steve@mysociety.org>2016-04-22 13:42:33 +0100
commitf10b55c1d13f57c7a614407b97032bb313141a8f (patch)
tree966277688c56a5089ade52ba0c6dc28b38f098e1
parent6f0364baeb2d9a3b7934589c61c14f81392d334d (diff)
Upgrade to Cordova 6
This updates the whole app (ios and android) to use Cordova 6 and the latest android/ios platforms and plugins. In addition I've added the necessary new icons and splash screens, as well as updating the whitelist to work with AppTransportSecurity in iOS9. I've also updated the instructions in the README to be more useful.
-rw-r--r--README.md137
-rw-r--r--config.xml-example113
-rwxr-xr-xres/android/drawable-hdpi/icon.pngbin0 -> 2838 bytes
-rw-r--r--res/android/drawable-hdpi/screen.9.pngbin0 -> 13153 bytes
-rwxr-xr-xres/android/drawable-ldpi/icon.pngbin0 -> 1332 bytes
-rw-r--r--res/android/drawable-ldpi/screen.9.pngbin0 -> 6369 bytes
-rwxr-xr-xres/android/drawable-mdpi/icon.pngbin0 -> 1878 bytes
-rw-r--r--res/android/drawable-mdpi/screen.9.pngbin0 -> 8531 bytes
-rwxr-xr-xres/android/drawable-xhdpi/icon.pngbin0 -> 3785 bytes
-rw-r--r--res/android/drawable-xhdpi/screen.9.pngbin0 -> 17322 bytes
-rwxr-xr-xres/android/drawable-xxhdpi/icon.pngbin0 -> 6152 bytes
-rw-r--r--res/android/drawable-xxhdpi/screen.9.pngbin0 -> 27116 bytes
-rwxr-xr-xres/android/drawable-xxxhdpi/icon.pngbin0 -> 8090 bytes
-rw-r--r--res/android/drawable-xxxhdpi/screen.9.pngbin0 -> 34139 bytes
-rw-r--r--res/android/hdpi.pngbin4867 -> 0 bytes
-rw-r--r--res/android/ldpi.pngbin1103 -> 0 bytes
-rw-r--r--res/android/mdpi.pngbin1448 -> 0 bytes
-rw-r--r--res/android/xhdpi.pngbin6954 -> 0 bytes
-rw-r--r--res/ios/Default-568h@2x.pngbin12832 -> 0 bytes
-rw-r--r--res/ios/Default.pngbin6002 -> 0 bytes
-rw-r--r--res/ios/Default@2x.pngbin12206 -> 0 bytes
-rw-r--r--res/ios/Icon-120.pngbin5584 -> 0 bytes
-rw-r--r--res/ios/Icon.pngbin1580 -> 0 bytes
-rw-r--r--res/ios/Icon@2x.pngbin3690 -> 0 bytes
-rwxr-xr-xres/ios/icons/Icon-40.pngbin0 -> 1480 bytes
-rwxr-xr-xres/ios/icons/Icon-40@2x.pngbin0 -> 3081 bytes
-rwxr-xr-xres/ios/icons/Icon-50.pngbin0 -> 1844 bytes
-rwxr-xr-xres/ios/icons/Icon-50@2x.pngbin0 -> 3909 bytes
-rwxr-xr-xres/ios/icons/Icon-60.pngbin0 -> 2238 bytes
-rwxr-xr-xres/ios/icons/Icon-60@2x.pngbin0 -> 7144 bytes
-rwxr-xr-xres/ios/icons/Icon-60@3x.pngbin0 -> 16181 bytes
-rwxr-xr-xres/ios/icons/Icon-72.pngbin0 -> 2838 bytes
-rwxr-xr-xres/ios/icons/Icon-72@2x.pngbin0 -> 5944 bytes
-rwxr-xr-xres/ios/icons/Icon-76.pngbin0 -> 2917 bytes
-rwxr-xr-xres/ios/icons/Icon-76@2x.pngbin0 -> 10844 bytes
-rwxr-xr-xres/ios/icons/Icon-Small.pngbin0 -> 1169 bytes
-rwxr-xr-xres/ios/icons/Icon-Small@2x.pngbin0 -> 3006 bytes
-rwxr-xr-xres/ios/icons/Icon.pngbin0 -> 2095 bytes
-rwxr-xr-xres/ios/icons/Icon@2x.pngbin0 -> 4428 bytes
-rwxr-xr-xres/ios/icons/iTunesArtwork.pngbin0 -> 23611 bytes
-rwxr-xr-xres/ios/icons/iTunesArtwork@2x.pngbin0 -> 50691 bytes
-rwxr-xr-xres/ios/splash/Default-1242@3x~iphone6s-portrait_1242x2208.pngbin0 -> 60048 bytes
-rwxr-xr-xres/ios/splash/Default-568h@2x~iphone_640x1136.pngbin0 -> 24453 bytes
-rwxr-xr-xres/ios/splash/Default-750@2x~iphone6-portrait_750x1334.pngbin0 -> 29917 bytes
-rwxr-xr-xres/ios/splash/Default-Portrait@2x~ipad_1536x2008.pngbin0 -> 55523 bytes
-rwxr-xr-xres/ios/splash/Default-Portrait@2x~ipad_1536x2048.pngbin0 -> 57013 bytes
-rwxr-xr-xres/ios/splash/Default-Portrait~ipad_768x1024.pngbin0 -> 21988 bytes
-rwxr-xr-xres/ios/splash/Default@2x~iphone_640x960.pngbin0 -> 19954 bytes
-rwxr-xr-xres/ios/splash/Default~iphone.pngbin0 -> 8610 bytes
49 files changed, 184 insertions, 66 deletions
diff --git a/README.md b/README.md
index db480fe..6250e94 100644
--- a/README.md
+++ b/README.md
@@ -31,53 +31,32 @@ This project uses Apache Cordova to produce Android and iOS apps. There is
some mildly complicated configuration and setup required to be able to develop
with it. The following all assumes you're working on a Mac.
-1. Make sure you have the latest versions of XCode, the Android SDK, node and
+1. Make sure you have the latest versions of XCode, JDK 1.8, the Android SDK, node and
npm installed. It's a very good idea to have installed the Intel HAXM versions
of the Android emulator because they're about 100 times faster to run. You need
to download it from the Android SDK Manager (run `android` on the command line)
-and then actually run the `.dmg` that this creates in your sdk folder.
+and then actually run the `.dmg` that this creates in your sdk folder. (Alternatively `brew cask install intel-haxm` if you use [Homebrew Cask](http://caskroom.io).)
2. Install the cordova CLI with npm: `npm install -g cordova`
Note that this is not the same as the phonegap CLI and the two should not be
mixed up. The latter gives you access to Adobe's proprietary phonegap build
service, which we **don't** use!
-3. Checkout the project, copy `config.xml-example` to `config.xml` and edit to suit.
+3. Install the latest android api and build tools packages within the Android
+SDK Manager (run `android` on the command line to launch it)
-4. `cd` into the project directory and install the Cordova platforms you need:
-`cordova platform add android` and `cordova platform add ios`
+4. Checkout the project
-5. Add the cordova plugins we use. As of writing the list is: (from `cordova plugin list`)
+5. `cd` into the project directory and run `cordova prepare` to load up the
+cordova platforms and plugins we use.
- ```
- cordova-plugin-camera 1.2.0 "Camera"
- cordova-plugin-device 1.0.1 "Device"
- cordova-plugin-dialogs 1.1.1 "Notification"
- cordova-plugin-file 2.1.0 "File"
- cordova-plugin-file-transfer 1.2.1 "File Transfer"
- cordova-plugin-geolocation 1.0.1 "Geolocation"
- cordova-plugin-inappbrowser 1.0.1 "InAppBrowser"
- cordova-plugin-media 1.0.1 "Media"
- cordova-plugin-media-capture 1.0.1 "Capture"
- cordova-plugin-network-information 1.0.1 "Network Information"
- cordova-plugin-splashscreen 2.1.0 "Splashscreen"
- cordova-plugin-statusbar 1.0.1 "StatusBar"
- cordova-plugin-whitelist 1.0.0 "Whitelist"
- ```
+7. Install Apache Ant (`brew install ant`, if you use Homebrew) for Android build support, and `ios-sim` (`npm install -g ios-sim`) for iOS simulator support.
- So to install them: `cordova plugin add cordova-plugin-camera cordova-plugin-device cordova-plugin-dialogs cordova-plugin-file cordova-plugin-file-transfer cordova-plugin-geolocation cordova-plugin-inappbrowser cordova-plugin-media cordova-plugin-media-capture cordova-plugin-network-information cordova-plugin-splashscreen cordova-plugin-statusbar cordova-plugin-whitelist`
+8. Create a new 'Android Virtual Device' for emulating a real device by running `android avd` and using one of the 'Device Definitions' on the second tab as a template. It doesn't matter which one, but set the CPU type to 'Atom (x86)' otherwise it will be very very slow. Enable 'Use Host GPU', if available, to massively speed up the UI. Ticking 'Hardware keyboard present' will allow you to use your keyboard instead of hunting-and-pecking the on-screen keyboard.
-6. Copy `www/js/config.js-example` to `www/js/config.js` and edit if needed
+9. Copy `www/js/config.js-example to www/js/config.js` and edit if needed
-7. To run the project on one of the platforms, use: `cordova emulate ios` or `cordova emulate android`
-(You might need to `npm install -g ios-sim` to run it on ios)
-
-You should then be able to build and run it like any other Cordova project.
-
-- The `platforms`, `plugins` and `hooks` folders are auto-generated by Cordova
-no need to check them in (hence why they're .gitignored), you should only need
-to check in the `www` folder and `config.xml`, plus possibly `/merges` if you
-ever use that functionality.
+10. To run the project on one of the platforms, use: `cordova emulate ios` or `cordova emulate android`
Basic structure
---------------
@@ -124,3 +103,97 @@ a set of .po files for each language under locales, which in turn generate a set
template files for use in the app. For more details see the translating file.
The app only supports one language at a time at the moment.
+
+Tips and Tricks
+--------------
+- Make sure you read the documentation for Cordova from http://cordova.apache.org/
+**not the Phonegap site** - the two vary in infuriating and subtle ways and much
+of the stackoverflow-esque info on the web is confused about which one it's for.
+Particularly in the options for things in `config.xml` which is where all the
+magic happens.
+- You can use `ios-sim` to launch the iOS emulator directly with something like:
+`ios-sim launch platforms/ios/build/emulator/FixMyStreet.app --devicetypeid "com.apple.CoreSimulator.SimDeviceType.iPhone-6, 8.0"` after you've built the project via a previous
+emulator run or a direct build via `cordova build ios`. This allows you to
+specify a different device than the default one. To see the available options
+for `--devicetypeid` run `ios-sim showdevicetypes`.
+- You can open the iOS project in XCode if you prefer to run it that way, the
+project file is in `platforms/ios`
+- To check the console log output when emulating iOS, run: `tail -f console.log`
+Cordova by default writes it out to that file in your project root
+- To check the console log output when emulating Android, cd to
+`platforms/android/cordova` and run `./log`. I found that I needed to be in the
+directory for it to actually print anything, YMMV.
+- Leave the emulators running once they start, it's much quicker!
+
+Upgrading
+---------
+Cordova now includes version numbers for the platforms and plugins in
+`config.xml` so it's possible to use the command line tools to update
+everything.
+
+1. Update the CLI: `npm update cordova`
+2. Update each platform: `cordova platform update ios --save`, `cordova platform update android --save`
+3. Update each plugin. Unfortunately, it doesn't seem possible to upgrade all
+ of the plugins in one go, so you'll have to type out
+ `cordova plugin update cordova-plugin-name --save` for every single one.
+ You can get a list that's easy to edit into a script from
+ `cordova plugin list`.
+4. Refer to the upgrade guides:
+ https://cordova.apache.org/docs/en/latest/guide/platforms/android/upgrade.html
+ and
+ https://cordova.apache.org/docs/en/latest/guide/platforms/ios/upgrade.html
+ for anything you need to change between versions. The plugins helpfully
+ print notices for some things that have changed when you install them.
+5. Test the changes
+
+Releasing
+---------
+### Android
+To release the app on Android, you need to do the following:
+
+1. Change your config.js to include production settings
+2. Bump the version code in config.xml, both the main one and the android specific one
+2. Build a release version of the app: `cordova build android --release`
+3. Sign that `.apk` (the cordova command tells you where it put it):
+ 1. Clone the mySociety keys repository
+ 2. `cd` into the folder containing your new release `.apk`
+ 3. Sign the .apk with our key: `jarsigner -verbose -keystore <path-to-keys-repo>keys/android/android_keystore -sigalg SHA1withRSA -digestalg SHA1 ZuriWieNeu-release-unsigned.apk fixmyzurich` Double check that you're signing the right .apk here as there
+ will be debug ones too.
+
+ This will ask first for a password for the keystore (it's in the usual place
+ if you're a mysociety developer), then a password for the app specific key,
+ (`fixmyzurich` in the command above is a special shortname for the app that
+ identifies which key to use.)
+4. Verify that the signing was ok: `jarsigner -verify -verbose -certs ZuriWieNeu-release-unsigned.apk` (The signing doesn't change the name of your `.apk`). You should
+see `sm` next to every file.
+5. Align the `.apk` using `zipalign` (Note, you might have to manually find `zipalign` in `build-tools` inside the sdk-folder): `zipalign -v 4 ZuriWieNeu-release-unsigned.apk ZuriWieNeu.apk`
+
+Note: most of this comes from: http://developer.android.com/tools/publishing/app-signing.html#signing-manually, you can also do it via Eclipse or Android Studio if you wish.
+
+### iOS
+
+#### App Store
+
+To release the app in the iTunes App Store you need to do the following:
+
+1. Change your config.js to include production settings
+2. Bump the version code in config.xml, both the main one and the android specific one
+3. Run the emulator to make sure you've built the latest version of the app: `cordova emulate ios`
+4. Open the app in XCode (the xcodeproj project file you need is in `platforms/ios`)
+5. Select `Product > Archive` from the XCode menu
+6. In the "navigator" window that pops up, select the latest build and then hit "Validate" in the top right. It'll ask to access your keychain, so you'll need to make sure you've installed the latest certificates there already.
+7. Once the validation has finished, hit "Submit" and pick the certificate again to actually send it to Apple.
+8. Now you need to log into iTunes Connect and add a new version of the app for this build, then submit it for review.
+
+#### Ad-Hoc Distribution
+
+iOS allows you to distribute builds of your app directly to selected testers, either by sending them the `.ipa` file for installation via iTunes or via a specially-crafted web page they visit from their device. [More info](http://help.apple.com/deployment/ios/#/apda0e3426d7).
+
+ 1. Gather the device UDIDs from testers and add them to the ['devices' section](https://developer.apple.com/account/ios/device/) of the developer center.
+ 2. You'll probably have to re-download the provisioning profile for the app into Xcode so subsequent builds include the new device UDIDs.
+ 3. Open the `.xcodeproj` file in Xcode and run `Product > Archive`
+ 4. Select the archive in the Organizer window that subsequently pops up, then click `Export` and select `Save for Ad Hoc Deployment`.
+ 5. Follow the wizard, selecting `Export one app for all compatible devices`, and `Include manifest for over-the-air installation`.
+ 6. The wizard will ask you to provide values for the App URL, and a couple of image URLs. Put dummy values in if you don't know the final URLs for the `.ipa` and images yet, you can edit the output manifest file later.
+ 7. Copy the resulting `.ipa` and manifest to your webserver. Make sure they're served over HTTPS or iOS will refuse to install the app.
+ 8. Users can install the app on their devices by going to a URL of the form `itms-services://?action=download-manifest&url=[MANIFEST URL HERE]`
diff --git a/config.xml-example b/config.xml-example
index 81dedb5..b6ca77d 100644
--- a/config.xml-example
+++ b/config.xml-example
@@ -1,55 +1,100 @@
<?xml version='1.0' encoding='utf-8'?>
-<widget id="org.mysociety.FixMyStreet" android-versionCode="41" version="2.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget android-versionCode="42" id="org.mysociety.FixMyStreet" version="2.0.7" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>FixMyStreet</name>
<description>
Report problems on FixMyStreet
</description>
-
- <author href="http://mysociety.org" email="team@mysociety.org">
+ <author email="team@mysociety.org" href="http://mysociety.org">
mySociety
</author>
<content src="index.html" />
-
- <access origin=".*.tile.openstreetmap.org"/>
- <access origin="tilma.mysociety.org"/>
- <access origin="a.tilma.mysociety.org"/>
- <access origin="b.tilma.mysociety.org"/>
- <access origin="c.tilma.mysociety.org"/>
- <access origin="dev.virtualearth.net"/>
- <access origin="ecn.t0.tiles.virtualearth.net"/>
- <access origin="ecn.t1.tiles.virtualearth.net"/>
- <access origin="ecn.t2.tiles.virtualearth.net"/>
- <access origin="ecn.t3.tiles.virtualearth.net"/>
- <access origin="mapit.mysociety.org"/>
-
+ <access origin="http://127.0.0.1*" />
+ <access origin="*://*.openstreetmap.org" />
+ <access origin="*://*.opencyclemap.org" />
+ <access origin="*://tilma.mysociety.org" />
+ <access origin="*://a.tilma.mysociety.org" />
+ <access origin="*://b.tilma.mysociety.org" />
+ <access origin="*://c.tilma.mysociety.org" />
+ <access origin="*://dev.virtualearth.net" />
+ <access origin="*://ecn.t0.tiles.virtualearth.net" />
+ <access origin="*://ecn.t1.tiles.virtualearth.net" />
+ <access origin="*://ecn.t2.tiles.virtualearth.net" />
+ <access origin="*://ecn.t3.tiles.virtualearth.net" />
+ <access origin="*://mapit.mysociety.org" />
<!-- Replace this with the hostname of your FMS installation -->
- <access origin="fixmystreet.example.org"/>
-
+ <access origin="*://fixmystreet.example.org" />
<preference name="android-minSdkVersion" value="16" />
<preference name="orientation" value="portrait" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarStyle" value="default" />
-
+ <preference name="AndroidPersistentFileLocation" value="Compatibility" />
<!-- If you change the background colour of the app, change this value to match. -->
<preference name="StatusBarBackgroundColor" value="#F6BE41" />
-
+ <preference name="deployment-target" value="6.0" />
<platform name="android">
- <icon src="res/android/ldpi.png" density="ldpi" />
- <icon src="res/android/mdpi.png" density="mdpi" />
- <icon src="res/android/hdpi.png" density="hdpi" />
- <icon src="res/android/xhdpi.png" density="xhdpi" />
+ <icon density="ldpi" src="res/android/drawable-ldpi/icon.png" />
+ <icon density="mdpi" src="res/android/drawable-mdpi/icon.png" />
+ <icon density="hdpi" src="res/android/drawable-hdpi/icon.png" />
+ <icon density="xhdpi" src="res/android/drawable-xhdpi/icon.png" />
+ <icon density="xxhdpi" src="res/android/drawable-xxhdpi/icon.png" />
+ <icon density="xxxhdpi" src="res/android/drawable-xxxhdpi/icon.png" />
+ <splash density="ldpi" src="res/android/drawable-ldpi/screen.9.png" />
+ <splash density="mdpi" src="res/android/drawable-mdpi/screen.9.png" />
+ <splash density="hdpi" src="res/android/drawable-hdpi/screen.9.png" />
+ <splash density="xhdpi" src="res/android/drawable-xhdpi/screen.9.png" />
+ <splash density="xxhdpi" src="res/android/drawable-xxhdpi/screen.9.png" />
+ <splash density="xxxhdpi" src="res/android/drawable-xxxhdpi/screen.9.png" />
</platform>
-
<platform name="ios">
+ <!-- iOS 8.0+ -->
+ <!-- iPhone 6 Plus -->
+ <icon src="res/ios/icons/Icon-60@3x.png" width="180" height="180" />
+ <!-- iOS 7.0+ -->
+ <!-- iPhone / iPod Touch -->
+ <icon src="res/ios/icons/Icon-60.png" width="60" height="60" />
+ <icon src="res/ios/icons/Icon-60@2x.png" width="120" height="120" />
+ <!-- iPad -->
+ <icon src="res/ios/icons/Icon-76.png" width="76" height="76" />
+ <icon src="res/ios/icons/Icon-76@2x.png" width="152" height="152" />
+ <!-- iOS 6.1 -->
+ <!-- Spotlight Icon -->
+ <icon src="res/ios/icons/Icon-40.png" width="40" height="40" />
+ <icon src="res/ios/icons/Icon-40@2x.png" width="80" height="80" />
<!-- iPhone / iPod Touch -->
- <icon src="res/ios/Icon.png" width="57" height="57" />
- <icon src="res/ios/Icon@2x.png" width="114" height="114" />
+ <icon src="res/ios/icons/Icon.png" width="57" height="57" />
+ <icon src="res/ios/icons/Icon@2x.png" width="114" height="114" />
<!-- iPad -->
- <icon src="res/ios/Icon-120.png" width="120" height="120" />
-
- <!-- Splash Screens -->
- <splash src="res/ios/Default.png" width="320" height="480"/>
- <splash src="res/ios/Default@2x.png" width="640" height="960"/>
- <splash src="res/ios/Default-568h@2x.png" width="640" height="1136"/>
- </platform>
+ <icon src="res/ios/icons/Icon-72.png" width="72" height="72" />
+ <icon src="res/ios/icons/Icon-72@2x.png" width="144" height="144" />
+ <!-- iPhone Spotlight and Settings Icon -->
+ <icon src="res/ios/icons/Icon-Small.png" width="29" height="29" />
+ <icon src="res/ios/icons/Icon-Small@2x.png" width="58" height="58" />
+ <!-- iPad Spotlight and Settings Icon -->
+ <icon src="res/ios/icons/Icon-50.png" width="50" height="50" />
+ <icon src="res/ios/icons/Icon-50@2x.png" width="100" height="100" />
+ <splash src="res/ios/splash/Default~iphone.png" width="320" height="480"/>
+ <splash src="res/ios/splash/Default@2x~iphone_640x960.png" width="640" height="960"/>
+ <splash src="res/ios/splash/Default-Portrait~ipad_768x1024.png" width="768" height="1024"/>
+ <splash src="res/ios/splash/Default-Portrait@2x~ipad_1536x2048.png" width="1536" height="2048"/>
+ <splash src="res/ios/splash/Default-Portrait@2x~ipad_1536x2008.png" width="1536" height="2008"/>
+ <splash src="res/ios/splash/Default-568h@2x~iphone_640x1136.png" width="640" height="1136"/>
+ <splash src="res/ios/splash/Default-750@2x~iphone6-portrait_750x1334.png" width="750" height="1334"/>
+ <splash src="res/ios/splash/Default-1242@3x~iphone6s-portrait_1242x2208.png" width="1242" height="2208"/>
+ </platform>
+ <engine name="ios" spec="~4.1.1" />
+ <plugin name="cordova-plugin-camera" spec="~2.1.1" />
+ <plugin name="cordova-plugin-device" spec="~1.1.1" />
+ <plugin name="cordova-plugin-dialogs" spec="~1.2.0" />
+ <plugin name="cordova-plugin-file" spec="~4.1.1" />
+ <plugin name="cordova-plugin-file-transfer" spec="~1.5.0" />
+ <plugin name="cordova-plugin-geolocation" spec="~2.1.0" />
+ <plugin name="cordova-plugin-inappbrowser" spec="~1.3.0" />
+ <plugin name="cordova-plugin-media" spec="~2.2.0" />
+ <plugin name="cordova-plugin-media-capture" spec="~1.2.0" />
+ <plugin name="cordova-plugin-network-information" spec="~1.2.0" />
+ <plugin name="cordova-plugin-splashscreen" spec="~3.2.1" />
+ <plugin name="cordova-plugin-statusbar" spec="~2.1.2" />
+ <plugin name="cordova-plugin-whitelist" spec="~1.2.1" />
+ <engine name="android" spec="~5.1.1" />
</widget>
+
diff --git a/res/android/drawable-hdpi/icon.png b/res/android/drawable-hdpi/icon.png
new file mode 100755
index 0000000..d4cbd78
--- /dev/null
+++ b/res/android/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/android/drawable-hdpi/screen.9.png b/res/android/drawable-hdpi/screen.9.png
new file mode 100644
index 0000000..af75f97
--- /dev/null
+++ b/res/android/drawable-hdpi/screen.9.png
Binary files differ
diff --git a/res/android/drawable-ldpi/icon.png b/res/android/drawable-ldpi/icon.png
new file mode 100755
index 0000000..ac57785
--- /dev/null
+++ b/res/android/drawable-ldpi/icon.png
Binary files differ
diff --git a/res/android/drawable-ldpi/screen.9.png b/res/android/drawable-ldpi/screen.9.png
new file mode 100644
index 0000000..07a81e5
--- /dev/null
+++ b/res/android/drawable-ldpi/screen.9.png
Binary files differ
diff --git a/res/android/drawable-mdpi/icon.png b/res/android/drawable-mdpi/icon.png
new file mode 100755
index 0000000..3905f1f
--- /dev/null
+++ b/res/android/drawable-mdpi/icon.png
Binary files differ
diff --git a/res/android/drawable-mdpi/screen.9.png b/res/android/drawable-mdpi/screen.9.png
new file mode 100644
index 0000000..894e53e
--- /dev/null
+++ b/res/android/drawable-mdpi/screen.9.png
Binary files differ
diff --git a/res/android/drawable-xhdpi/icon.png b/res/android/drawable-xhdpi/icon.png
new file mode 100755
index 0000000..896c0c7
--- /dev/null
+++ b/res/android/drawable-xhdpi/icon.png
Binary files differ
diff --git a/res/android/drawable-xhdpi/screen.9.png b/res/android/drawable-xhdpi/screen.9.png
new file mode 100644
index 0000000..fcf0511
--- /dev/null
+++ b/res/android/drawable-xhdpi/screen.9.png
Binary files differ
diff --git a/res/android/drawable-xxhdpi/icon.png b/res/android/drawable-xxhdpi/icon.png
new file mode 100755
index 0000000..88adbf1
--- /dev/null
+++ b/res/android/drawable-xxhdpi/icon.png
Binary files differ
diff --git a/res/android/drawable-xxhdpi/screen.9.png b/res/android/drawable-xxhdpi/screen.9.png
new file mode 100644
index 0000000..7937a9c
--- /dev/null
+++ b/res/android/drawable-xxhdpi/screen.9.png
Binary files differ
diff --git a/res/android/drawable-xxxhdpi/icon.png b/res/android/drawable-xxxhdpi/icon.png
new file mode 100755
index 0000000..3dbe2ef
--- /dev/null
+++ b/res/android/drawable-xxxhdpi/icon.png
Binary files differ
diff --git a/res/android/drawable-xxxhdpi/screen.9.png b/res/android/drawable-xxxhdpi/screen.9.png
new file mode 100644
index 0000000..eb7a044
--- /dev/null
+++ b/res/android/drawable-xxxhdpi/screen.9.png
Binary files differ
diff --git a/res/android/hdpi.png b/res/android/hdpi.png
deleted file mode 100644
index 6883466..0000000
--- a/res/android/hdpi.png
+++ /dev/null
Binary files differ
diff --git a/res/android/ldpi.png b/res/android/ldpi.png
deleted file mode 100644
index 846e193..0000000
--- a/res/android/ldpi.png
+++ /dev/null
Binary files differ
diff --git a/res/android/mdpi.png b/res/android/mdpi.png
deleted file mode 100644
index 6f7a862..0000000
--- a/res/android/mdpi.png
+++ /dev/null
Binary files differ
diff --git a/res/android/xhdpi.png b/res/android/xhdpi.png
deleted file mode 100644
index 29af593..0000000
--- a/res/android/xhdpi.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Default-568h@2x.png b/res/ios/Default-568h@2x.png
deleted file mode 100644
index a56b662..0000000
--- a/res/ios/Default-568h@2x.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Default.png b/res/ios/Default.png
deleted file mode 100644
index 9c373ff..0000000
--- a/res/ios/Default.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Default@2x.png b/res/ios/Default@2x.png
deleted file mode 100644
index 92fe138..0000000
--- a/res/ios/Default@2x.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Icon-120.png b/res/ios/Icon-120.png
deleted file mode 100644
index f019a23..0000000
--- a/res/ios/Icon-120.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Icon.png b/res/ios/Icon.png
deleted file mode 100644
index 6a045b6..0000000
--- a/res/ios/Icon.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/Icon@2x.png b/res/ios/Icon@2x.png
deleted file mode 100644
index 8ff853c..0000000
--- a/res/ios/Icon@2x.png
+++ /dev/null
Binary files differ
diff --git a/res/ios/icons/Icon-40.png b/res/ios/icons/Icon-40.png
new file mode 100755
index 0000000..0f7be76
--- /dev/null
+++ b/res/ios/icons/Icon-40.png
Binary files differ
diff --git a/res/ios/icons/Icon-40@2x.png b/res/ios/icons/Icon-40@2x.png
new file mode 100755
index 0000000..5fbf89a
--- /dev/null
+++ b/res/ios/icons/Icon-40@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon-50.png b/res/ios/icons/Icon-50.png
new file mode 100755
index 0000000..d5ae255
--- /dev/null
+++ b/res/ios/icons/Icon-50.png
Binary files differ
diff --git a/res/ios/icons/Icon-50@2x.png b/res/ios/icons/Icon-50@2x.png
new file mode 100755
index 0000000..5727ab8
--- /dev/null
+++ b/res/ios/icons/Icon-50@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon-60.png b/res/ios/icons/Icon-60.png
new file mode 100755
index 0000000..8670077
--- /dev/null
+++ b/res/ios/icons/Icon-60.png
Binary files differ
diff --git a/res/ios/icons/Icon-60@2x.png b/res/ios/icons/Icon-60@2x.png
new file mode 100755
index 0000000..fe9f27b
--- /dev/null
+++ b/res/ios/icons/Icon-60@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon-60@3x.png b/res/ios/icons/Icon-60@3x.png
new file mode 100755
index 0000000..3936bab
--- /dev/null
+++ b/res/ios/icons/Icon-60@3x.png
Binary files differ
diff --git a/res/ios/icons/Icon-72.png b/res/ios/icons/Icon-72.png
new file mode 100755
index 0000000..d4cbd78
--- /dev/null
+++ b/res/ios/icons/Icon-72.png
Binary files differ
diff --git a/res/ios/icons/Icon-72@2x.png b/res/ios/icons/Icon-72@2x.png
new file mode 100755
index 0000000..99d7ccd
--- /dev/null
+++ b/res/ios/icons/Icon-72@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon-76.png b/res/ios/icons/Icon-76.png
new file mode 100755
index 0000000..8aee2db
--- /dev/null
+++ b/res/ios/icons/Icon-76.png
Binary files differ
diff --git a/res/ios/icons/Icon-76@2x.png b/res/ios/icons/Icon-76@2x.png
new file mode 100755
index 0000000..c46bddb
--- /dev/null
+++ b/res/ios/icons/Icon-76@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon-Small.png b/res/ios/icons/Icon-Small.png
new file mode 100755
index 0000000..85f4601
--- /dev/null
+++ b/res/ios/icons/Icon-Small.png
Binary files differ
diff --git a/res/ios/icons/Icon-Small@2x.png b/res/ios/icons/Icon-Small@2x.png
new file mode 100755
index 0000000..08e9bcb
--- /dev/null
+++ b/res/ios/icons/Icon-Small@2x.png
Binary files differ
diff --git a/res/ios/icons/Icon.png b/res/ios/icons/Icon.png
new file mode 100755
index 0000000..465a1d1
--- /dev/null
+++ b/res/ios/icons/Icon.png
Binary files differ
diff --git a/res/ios/icons/Icon@2x.png b/res/ios/icons/Icon@2x.png
new file mode 100755
index 0000000..cd028d4
--- /dev/null
+++ b/res/ios/icons/Icon@2x.png
Binary files differ
diff --git a/res/ios/icons/iTunesArtwork.png b/res/ios/icons/iTunesArtwork.png
new file mode 100755
index 0000000..01a2163
--- /dev/null
+++ b/res/ios/icons/iTunesArtwork.png
Binary files differ
diff --git a/res/ios/icons/iTunesArtwork@2x.png b/res/ios/icons/iTunesArtwork@2x.png
new file mode 100755
index 0000000..c166da1
--- /dev/null
+++ b/res/ios/icons/iTunesArtwork@2x.png
Binary files differ
diff --git a/res/ios/splash/Default-1242@3x~iphone6s-portrait_1242x2208.png b/res/ios/splash/Default-1242@3x~iphone6s-portrait_1242x2208.png
new file mode 100755
index 0000000..e60610d
--- /dev/null
+++ b/res/ios/splash/Default-1242@3x~iphone6s-portrait_1242x2208.png
Binary files differ
diff --git a/res/ios/splash/Default-568h@2x~iphone_640x1136.png b/res/ios/splash/Default-568h@2x~iphone_640x1136.png
new file mode 100755
index 0000000..a9acffc
--- /dev/null
+++ b/res/ios/splash/Default-568h@2x~iphone_640x1136.png
Binary files differ
diff --git a/res/ios/splash/Default-750@2x~iphone6-portrait_750x1334.png b/res/ios/splash/Default-750@2x~iphone6-portrait_750x1334.png
new file mode 100755
index 0000000..4926f98
--- /dev/null
+++ b/res/ios/splash/Default-750@2x~iphone6-portrait_750x1334.png
Binary files differ
diff --git a/res/ios/splash/Default-Portrait@2x~ipad_1536x2008.png b/res/ios/splash/Default-Portrait@2x~ipad_1536x2008.png
new file mode 100755
index 0000000..6504a06
--- /dev/null
+++ b/res/ios/splash/Default-Portrait@2x~ipad_1536x2008.png
Binary files differ
diff --git a/res/ios/splash/Default-Portrait@2x~ipad_1536x2048.png b/res/ios/splash/Default-Portrait@2x~ipad_1536x2048.png
new file mode 100755
index 0000000..33a18fc
--- /dev/null
+++ b/res/ios/splash/Default-Portrait@2x~ipad_1536x2048.png
Binary files differ
diff --git a/res/ios/splash/Default-Portrait~ipad_768x1024.png b/res/ios/splash/Default-Portrait~ipad_768x1024.png
new file mode 100755
index 0000000..20c5109
--- /dev/null
+++ b/res/ios/splash/Default-Portrait~ipad_768x1024.png
Binary files differ
diff --git a/res/ios/splash/Default@2x~iphone_640x960.png b/res/ios/splash/Default@2x~iphone_640x960.png
new file mode 100755
index 0000000..facda8e
--- /dev/null
+++ b/res/ios/splash/Default@2x~iphone_640x960.png
Binary files differ
diff --git a/res/ios/splash/Default~iphone.png b/res/ios/splash/Default~iphone.png
new file mode 100755
index 0000000..50741df
--- /dev/null
+++ b/res/ios/splash/Default~iphone.png
Binary files differ