Thanks for reporting this issue and the workaround. Obviously this shouldn’t be breaking Print3D so we’ll have a look at what’s going on and I’ll post here when I know more.
According to the OpenGL ES spec, the only legal value to pass to the glMaterialf function is GL_FRONT_AND_BACK. Anything else will cause glGetError() to return a value.
Print3D calls glGetError() after its call to glDrawElements() and if it is a value it gives out the message that you've seen. But if glError is already set by the call to glMaterialf then the message will appear anyway, even if Print3D is fine and so it does.
This would happen if any of the GL calls in your program fail. You're solution is correct, but the message from Print3D is misleading and I'll look at improving this.