mamoc-repos / MAMoC-Client

A framework for offloading parts of an Android mobile application to nearby Android mobile devices using Wifi-Direct , edge devices (cloudlets), and remote clouds

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MAMoC-Android Offloading Framework

This is a mobile computation offloading framework that offloads the compute-intensive tasks in mobile devices to more powerful surrogates (nearby Android devices, edge devices or public cloud servers).

Citation

If you use this offloading library in your work, don't forget to cite the following paper please:

D. Sulaiman and A. Barker, "MAMoC-Android: Multisite Adaptive Computation Offloading for Android Applications,"
2019 7th IEEE International Conference on Mobile Cloud Computing, Services, and Engineering (MobileCloud), Newark, CA, USA, 2019, pp. 68-75.

Link to the paper

Usage

We have provided some initial demo applications together with instructions on how to use the framework.

Check them on the MAMoC Demo repository.

Test

We have written a few simple Android JUnit tests to test the different components of the framework.

Make sure that you have both JAVA_SDK and ANDROID_SDK_ROOT variables in your environment.

git clone https://github.com/dawand/MAMoC-Android
cd MAMoC-Android
./gradlew clean build
./gradlew connectedAndroidTest

Server component installation

In order to allow offloading from mobile devices to servers, we need to first setup the servers.

We have created two Docker images for you to deploy on your edge devices (laptops, desktops, edge routers, etc.) or public cloud instances (AWS, Azure, etc.).

You can run the following commands in the terminal of your server machine:

docker pull dawan/mamoc_router
docker run -it -d --name "mamoc-router" -p 8080:8080 dawan/mamoc_router

docker pull dawan/mamoc_server
docker run --rm -it --name "mamoc-server" --network="host" dawan/mamoc_server

If you want to get the source code of the server and host it on bare metal. Navigate to MAMoC-Server for setting up the router and the server components.

Third party libraries

Dex Decompiling

We have performed some modifications to Jadx Decompiler to make it callable within our framework. We decompile all the classes and methods which are annotated with @Offloadable to allow them to be offloaded to external resource providers.

Annotation Indexing

We use Annotation Indexing from classindex library to index all the classes annotated with @Offloadable annotation.

Web Application Messaging Protocol

We use crossbar + autobahn to manage the Remote Procedure Calls and Publish/Subscribe events. The reason we have included the source code of the library is its incompatibility with Android API < 24. We have used streamsupport to get the necessary functional interfaces used in Autobahn for older Android versions.

About

A framework for offloading parts of an Android mobile application to nearby Android mobile devices using Wifi-Direct , edge devices (cloudlets), and remote clouds


Languages

Language:Java 100.0%