Build the App for Android
Prerequisites
- Apache Ant
- Java JDK 6 with correctly set `JAVA_HOME` environment variable
- Android SDK with API level 19 and the platform tools installed
- Android NDK Revision 9d or newer
See the Android developer documentation for more information.
Build Steps
Check out the SVMP client and protocol side-by-side in a directory of your choice
git clone https://github.com/SVMP/svmp-protocol-def.git git clone https://github.com/SVMP/svmp-android-client.git
Build the client using ant.
cd svmp-android-client ant debug
Additional ant commands are documented here.
Gradle build files are also included, however Ant is recommended. Gradle 1.10, 1.11, or 1.12 is required. To build the application using gradle:
cd svmp-android-client gradle build
Building with Server Certificate Pinning
By default, the client application will use Android’s built-in CA cert store when connecting to TLS-protected servers. To allow only specific server certificates or specific signing CAs, you can add your own set of “pinned” certificates at build time.
Place your chosen certificates into the svmp-android-client/server_certs/
directory in PEM format. The build process will pick up any files with a .pem
extension in that directory and compile them into the pin list.
If you do not wish to use pinning, leave this directory empty. If using your own self-signed certificates, you can either place the cert in the pin list here, or enable allowing untrusted certs from with the application at run-time. See the client configuration guide for more information on the latter.
IDEs
Instructions for setting up projects for SVMP in the Eclipse and IntelliJ IDEA IDEs are included in the README.
Install
First enable installing applications from Unknown Sources on your phone.
- Post the APK on a web site and browser to the link on the phone.
- Attach the APK to an email and send it to the phone.
- Install over USB using the Ant and ADB:
ant installd
… or …
adb install bin/ConnectionList-debug.apk
Note: The SVMP client application does not function correctly in the Android SDK Emulator due to its use of certain OpenGL ES calls.