Moodle Mobile Automatic Building System

Jump to: navigation, search

Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.


An automatic building system helps developers a lot, they can focus on writing good code and forget all about building/compiling and all the boring stuff.

Phonegap Build is an example of a powerful build system, but it has a big limitation for Moodle Mobile; it doesn't support some Phonegap plugins we use for the Android app.

Implementing an automatic building system for Android is quite simple using 3rd party applications as described bellow:

Automatic Build System for Android


  • The MoodleMobile .apk file or your custom app .apk file. You need to perform an initial build on Android. See Moodle Mobile Building the app for Android for more info or obtain the current .apk file from Google Play using software like real apk leecher
  • jarsigner - Part of the Java JDK


1 Extract your .apk file template in a directory (apktool d path/to/yourApp.apk path/to/output-folder)

2 Download from moodlehq/moodlemobile repository the last files to -> path/to/output-folder/assets/www directory (where all the html, css, js files are stored)

3 Re-build the .apk file (apktool b path/to/output-folder path/to/yourAppV2.apk )

4 Re-sign the .apk file (jarsigner -verbose -keystore ~/.android/debug.keystore path/to/yourAppV2.apk androiddebugkey)

That's all, as you can see once you haven an original .apk file, extract, add your modifications and re-package is very simple

Automatic script

Say you have:

1 /opt/moodlemobile/repository/...
2 /opt/moodlemobile/apk-templates/myapp.apk
3 /opt/moodlemobile/tmpdir
4 /opt/moodlemobile/certificates

1 A cloned git repository of your code

2 Your original .apk file built with Android SDK

3 An empty dir

4 Certificate key store dir. The keystore is created using keytool, see Also see: and

The script

cd /opt/moodlemobile
rm -rf tmpdir/*
cd repository
git pull
cd ../
apktool d apk-templates/myapp.apk tmpdir/
cp -r repository/* tmpdir/assets/www/

vi tmpdir/AndroidManifest.xml (debug must be false, bump version code and change version name)

apktool b tmpdir mynewapp.apk
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore certificates/keystore mynewapk.apk mycertificatealiasinsidekeystore
jarsigner -verbose -verify -keystore certificates/keystore mynewapk.apk ** Optional
zipalign -v 4 mynewapk.apk mynewapkReadyForPlayStore.apk

See also For sample code