I do not know of any on-device ZPL rendering engines. But here are a couple ideas:
Most of our network enabled printers have a built-in viewer, including mobile printers. But in order to use it, you need a TCPIP connection to the Zebra printer to access the ZPL rendering page. But it will render 100% of the ZPL it can support. To play with it, access the printer via its IP address + "/index.html",(http://111.222.333.444/index.html), select 'directory listing', then click 'create new script', then click 'edit' and you will get an ZPL input box, paste your valid ZPL code then click 'preview label'.
I have found an online viewer that does something similar, but it is third party, not Zebra owned, so use at your own risk: http://labelary.com/viewer.html , if your Android app has access to the web, you could push your ZPL to the page some how. And it seems to handle about 90% of ZPL code.
Labelary.com is for online. But we are building our own Android app(could be any Android device) to print it to GX420d(or Bluetooth printer). We have ZPL commands built for which I need to show the preview on my Android app.
Can you please guide me if you have come across any?