I have some scripts which allow you to easily setup your /boot/config.txt to load the correct audio injector device tree. The raspbian inastallable .deb package is attached, first unarchive it and then install the deb package.

Mixer settings
Turn up the manual volume control knobs on the card - to a desired level !
Included are also two reference alsa mixer files which will allow you to setup default output with either line input or microphone input :
* asound.state.MIC.thru.test : This will setup the microphone as the input and also setup the output. Run

Testing
There is a test script which plays a pulsing 10 kHz tone at high volume through the system. To use it, make sure you don't have speakers plugged in ! Plug in an RCA cable from input to output (Red to Red, White to White). Also plug cheap headphones into the headphone jack and place them near to the Audio Injector so that the microphone can hear them. Lastly run the script :

Hi, I set up my sound card using your manual instructions. Updated kernel and commented out dtparam=audio=on and added dtoverlay=audioinjector-wm8731-audio. After rebooting I ran aplay -l and the sound card showed up as the only audio device, hw:0,0, which was a promising sign.

I tried to play a wave file with aplay to test it but I got the following error:

aplay: pcm_write:1939: write error: Input/output error

I tried a lot of different flags for aplay (manually setting sample rate, channels, output device, etc) but all got the same result. No audio out. Is there something I am missing?

Thanks for pointing out this step I missed in the manual setup option ... Easy problem to solve I think.
It isn't mentioned anywhere nor is it clear, but the codec has a DAPM control which needs to be enabled to enable playback. The automatic installation method does this for you ...

If you setup using the manual method, you also need to enable "Output Mixer HiFi" in the playback alsamixer setttings, see this post :viewtopic.php?f=5&t=5

I think your card is registering at boot, but something else is happening which is unloading it for some reason ?
This line : "audioinjector-audio soc wm8731-hifi <-> 3f203000.i2s mapping ok" indicates that it is setup up and ready to go.

When you start your system, can you run and capture the output of dmesg ?
dmesg > /tmp/dmesg.txt
If you don't see anything of note, please post here.