Difference between revisions of "Moodle Mobile Building the app for Android"

Jump to: navigation, search
(Build the official Moodle Mobile app on a Mac)
(Build the official Moodle Mobile app on a Mac)
Line 91: Line 91:
# Edit the AndroidManifest.xml
# Edit the AndroidManifest.xml
#* increment ''android:versionCode="359" android:versionName=""''
#* increment ''android:versionCode="359" android:versionName=""''
#* ''android:debuggable="false"'' - this reduce the apk size file from 7M to less than 1M!
#* ''android:debuggable="false"'' - this reduce the apk size file from 7M to less than 1M!
# Clean up the app to reduce apk file size
# Clean up the app to reduce apk file size

Revision as of 05:53, 26 March 2013

Installing the Android SDK

Building the app for Android is easy once you have successfully installed all the required software.

Since we are using Phonegap as framework for creating the app, the documentation you have to follow is just in this link plus additional steps for installing plugins: http://docs.phonegap.com/en/2.5.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android

Notice the following:

  • You must read carefully the document and not use white spaces in some names and ids. (It's adviced in the document)
  • You can optionally not use Eclipse and instead use adb command line or cordova script tools
  • In the "4. Setup New Project" The package_name is the app id that your app will have in the Android Market (Play Store), so it must be unique. If you are going to develop for the official app you have to use com.moodle.moodlemobile, if you are going to develop a custom app, you will have to add your own unique id.
  • If you want to connect a Device to your Eclipse and you are using Windows, you must install the Android USB Drivers, see http://developer.android.com/tools/extras/oem-usb.html#InstallingDriver

Add the Mobile app HTML5 files

Go to your project folder, assets/www and add just there all the files from https://github.com/moodlehq/moodlemobile

Installing additional Phonegap plugins

The Android app requires two additional Phonegap plugins to be installed:


For opening files according their mime type: https://github.com/phonegap/phonegap-plugins/tree/master/Android/WebIntent

For installing the plugin follow this instructions: https://github.com/phonegap/phonegap-plugins/blob/master/Android/WebIntent/README.md#adding-the-plugin-to-your-project


For opening external browsers: https://github.com/alunny/ChildBrowser

For installing this plugin you need to use: https://github.com/imhotep/plugman (read the README and also http://shazronatadobe.wordpress.com/2012/11/07/cordova-plugins-put-them-in-your-own-repo-2/)

Note that if you are going to use Cordova 2.4, it has core support for plugman (see https://github.com/apache/cordova-cli/blob/master/README.md#project-commands) so you will not have to install plugman

Build, compile, test your app

We suggest you to use Eclipse tools for testing, deploying the app

In any case, you can allways use the Cordova command line tools, see: http://docs.phonegap.com/en/2.5.0/guide_command-line_index.md.html#Command-Line%20Usage

The cli tools are in your project folder, directory cordova

Signing your app

The Android system requires that all installed applications be digitally signed with a certificate whose private key is held by the application's developer. The Android system uses the certificate as a means of identifying the author of an application and establishing trust relationships between applications. The certificate is not used to control which applications the user can install. The certificate does not need to be signed by a certificate authority: it is perfectly allowable, and typical, for Android applications to use self-signed certificates. See: http://developer.android.com/tools/publishing/app-signing.html

And also for Eclipse: http://developer.android.com/tools/publishing/app-signing.html#ExportWizard

Uploading your custom app to the Google Play Store

Build the official Moodle Mobile app on a Mac

  1. Install SDK
  2. Add the SDK tools/platform-tools folders to your PATH
  3. Install NodeJs
  4. Install cordova-cli
    • sudo npm install -g cordova - it will install cordova. Note that on my machine I have some warnings about the android bootstrap process being skipped but all the following steps seem to work ok anyway...
  5. Create a Android project
    • /usr/local/lib/node_modules/cordova/bin/cordova create ~/Apps/moodlemobile_android_cordova com.moodle.moodlemobile MoodleMobileBeta
    • cd ~/Apps/moodlemobile_android_cordova
    • sudo /usr/local/lib/node_modules/cordova/bin/cordova platform add android
    • sudo /usr/local/lib/node_modules/cordova/bin/cordova build - not necessary, just check the build works.
  6. In Finder change the permission on ~/Apps/moodlemobile_android_cordova folder: Read + Write to everyone
  7. Open eclipse, add a new Android project from existing source pointing to /Users/jerome/Apps/moodlemobile_android_cordova/platforms/android. Test you can build the default Cordova app on your phone.
  8. Copy the Moodle mobile app into assests/www folder
    • git clone git://github.com/moodlehq/moodlemobile.git ./moodlemobile
    • mv platforms/android/assets/www/ platforms/android/assets/www_old/
    • mv ./moodlemobile/ platforms/android/assets/www/
    • cp platforms/android/assets/www_old/cordova.js platforms/android/assets/www/
  9. Add the cordova plugins
    • git clone git://github.com/alunny/ChildBrowser.git ./ChildBrowser - we are now going to install cordova compatible plugin with the plugin install command line.
    • sudo /usr/local/lib/node_modules/cordova/bin/cordova plugin add ChildBrowser/
  10. Add manually phonegap plugins
    • https://github.com/phonegap/phonegap-plugins/tree/master/Android/WebIntent/ - manually install it as described in the README
    • git clone git://github.com/phonegap/phonegap-plugins.git ./phonegap-plugins
    • cp phonegap-plugins/Android/WebIntent/webintent.js platforms/android/assets/www/
    • mkdir platforms/android/src/com/borismus
    • mkdir platforms/android/src/com/borismus/webintent
    • cp phonegap-plugins/Android/WebIntent/WebIntent.java platforms/android/src/com/borismus/webintent
    • In Eclipse, add a package to src folder. The value should be com.borismus.webintent
    • In your res/xml/config.xml file, add <plugin name="WebIntent" value="com.borismus.webintent.WebIntent" /> where you define the plugins.
  11. copy the icons
    • cp platforms/android/assets/www/img/icon/android/icon-36-ldpi.png platforms/android/res/drawable-ldpi/icon.png
    • cp platforms/android/assets/www/img/icon/android/icon-48-mdpi.png platforms/android/res/drawable-mdpi/icon.png
    • cp platforms/android/assets/www/img/icon/android/icon-72-hdpi.png platforms/android/res/drawable-hdpi/icon.png
    • cp platforms/android/assets/www/img/icon/android/icon-96-xhdpi.png platforms/android/res/drawable-xhdpi/icon.png
  12. Edit the AndroidManifest.xml
    • increment android:versionCode="359" android:versionName=""
    • android:debuggable="false" - this reduce the apk size file from 7M to less than 1M!
  13. Clean up the app to reduce apk file size
    • rm -rf platforms/android/assets/www_old/
  14. In Eclispe, build and test the app.
  15. In Eclipse, File > Export the app with the Moodle HQ Google Play keystore. Then upload the APK to Google Play.