What is mdeb SDK
Modern Linux based mobile environments share almost all of their components with normal desktop Linux distributions. Still many Linux devices are build on top of heavily customized often more or less crippled set of software. What if this would be changed and target platforms would be generic Linux distributions like Ubuntu or Debian.
Basically mdeb is a SDK model which assumes that we have generic Linux distribution which can be build fully functional for multiple target architectures. When we make this assumption we can fully gain from the fact that Linux distributions have all abstractions you need to hide actual hardware architecture and you can do your application development on normal PC instead of even emulating target hardware. Of course sometimes you need to emulate some specific parts, but it is quite simple to implement needed simulators for those components which brings further gains by allowing automated tests.
Development model
- Mdeb has very simple development model. Basically all software development is done inside a virtualized development environment and UI can be tested for example by using device emulator (see below).
- After application is finalized and tested, it is build into target binaries by using emulated target environment (this can be either cross-compilation environment or for example Qemu based system emulation).
- When target binaries are ready those can be installed into actual device where acceptance testing and end user tests can be run
Reason why development is mostly done in normal virtualized PC environment is that mobile devices share all the same abstraction layers as normal desktop Linux distribution so there isn't really that much difference between PC and target environments. Reasoning behind using PC environment for most of the development is that those are much faster than mobile hardware or emulated environment and this improves productivity since waiting time is reduced. PC environments have better debugging and analysis tools available which allows better quality control.
Components
SDK is build from three different components (four if you count actual target device):
- Virtualized Development Environment
- Device Emulator
- Binary Builder
Each of these components have their own simple use which is described below.
Virtualized Development Environment
This is just normal Linux environment running inside virtual machine. By separating development environment into virtual machine we make sure that developer can mess-up as much as he or she wants without breaking desktop environment which he or she uses normally. Through virtualization we allow also development inside non-Linux environments such as Windows or OS X.
Currently we are using Virtualbox as virtual machine, but also KVM and VMWare are being used. Especially VMWare was used when testing SDK in OS X and Windows.
Device Emulator
Device emulator is simple VNC client which has capability of building decorations around VNC window. Idea is that this VNC client can be made to look like actual device supporting rotation and even sliders (for example mobile phones where you have sliding cover on top of keyboard).
This VNC client is available as open source and it is a Qt application which can be used also under Windows and OS X environments.
Binary Builder
Binary builder is a environment which is used only for building target binaries and to generate system images (such as flashable root filesystems, etc...). This environment is not used for testing or debugging software since it can be as easily tested on actual hardware, once it is properly tested in development environment.
Installing SDK components
Attachments
-
Development_Process.png
(48.0 KB) - added by https://openid.nomovok.info/miko.nieminen@…
9 months ago.
