The development of open source spatial tools is amazing. A while ago I wrote how one could create mobile maps using a range of tools, including GRASS or QGIS, Maptiler, and Mobile Atlas Creator (MOBAC).
If you are using an app that works with MBtiles, there is an easier way, especially if you want to create a map made up of different data layers. Tilemill is a tool that allows you to make relatively easily great looking maps. Relative as in: you shouldn’t be afraid for a little bit of css type of coding. But really, the required code is extremely easy as shown in the figure below.
The resulting map can be exported in mapnik xml, svg, png, pdf, and MBtiles. The latter is supported by my favourite Android map viewer (not open source, but there is a free version available) and OSMdroid and I am sure there are more apps. You can also create web-based maps that use MBtiles, e.g., with Openlayers as in the example here. And with gdal getting MBtiles read support in the upcoming GDAL, many many more applications will be able to read this format soon.