So here's the thing, all of the three approaches you mentioned are inherently insecure for one main reason: If/when your app gets reverse-engineered, the private key will be compromised. This is the nature of storing keys/sensitive information in apps and there's nothing you can do about that. This of course also means that if you hash the private key to a file, well now that your app is compromised reverse-hashing it will be trivial.
Now that we got that out the way, here's what you can do (in the Android context). Store the private key in
SharePreferences (private mode) and use it as needed. SharedPreferences in private mode sort of translates to a separate memory space where the data cannot be accessed by the user or other apps.
Again, I need to point out that this isn't a secure way of getting this done because devices could be rooted, app reverse engineered, etc. This scheme works when you have a way to recover from a breach.
For example, if each user of your app (somehow) had a separate private key, and you find out that user
X's key was compromised, well it would be a simple matter of updating
X's private key from the server and you're on your way.