Granted the newest OsmAnd requires Android 6 so I'm still using the older 4.0.9 release of that application and side-loading map updates since the built-in map update UI broke:
https://f-droid.org/archive/net.osmand.plus_409.apk
wget -mkEpnp --accept-regex 'Us_' --content-disposition -e robots=off "http://download.osmand.net/list.php"
I haven't used it but an app called Navit supports all the way back to Android Gingerbread (2.3): https://f-droid.org/packages/org.navitproject.navit/