Release Content
The 0.2 version contains:- mbs.apk - the updated version of mBS for Android
- mconsole-proff-6.1.41.zip - ProSyst mConsole remote management tool
- demo.zip - Bundles demonstrating the use of OSGi services on top of Android
- readme.htm - Detailed installation instruction for the release and the demos
- License_Eula_ProSyst.txt
The changes made to mBS for Android
Classloading Changes
The Android platform does not allow to define classes usingClassLoader.defineClass(byte[])
. Therefore the classloading mechanisms in
mBS for Android had to be updated.
The Android platform provides special
utility class for loading classes from external DEX files, class name is
dalvik.system.DexFile
. For this purpose new Class Provider was implemented,
which uses the Android DexFile utility. When we start the mBS for Android
application the starting process goes through the following steps:
- The Android platform activates the main activity of the mBS Android application.
- The main activity loads /res/raw/mbs_image.zip as resource and extracts it in the data directory of the application. The data directory is /data/data/com.prosyst.mbs.android.starter/app_mbs.
- When the mBS image is extracted in the file system of the Android platform the main activity creates special
java.lang.ClassLoader
, which uses thedalvik.system.DexFile
for loading classes from the serverjvm15.jar. - After the class loader is created the main activity loads the
Start
class of the mBedded Server and invokes itsmain(String[])
method in separated thread. - The the main method call is finished the mBedded Server application is started on the Android platform and the main activity updates the status of the provided information, the startup time and the used memory.
Network Permissions
In the previous version of the mBS Android application there was no need to add any permissions to the application for its normal work. In Android v1.0 the mBS needs special permissions for opening any server sockets. Therefore the following line was added in the AndroidManifest.xml file:
...
<uses-permission android:name="android.permission.INTERNET" />
...