Tips and tricks while developing Xamarin.Android.
When a Xamarin.Android app launches on an Android device, and the app was
built in the Debug configuration, it will create an "update" directory
during process startup, printing the created directory to adb logcat:
W/monodroid( 2796): Creating public update directory: `/data/data/Mono.Android_Tests/files/.__override__`
When the app needs to resolve native libraries and assemblies, it will look for those files within the update directory first. This includes the Mono runtime library and BCL assemblies.
Note that the update directory is per-app. The above mentioned Mono.Android_Tests
directory is created when running the
Mono.Android-Tests.csproj
unit tests.
The update directory is not used in Release configuration builds.
(Note: Release configuration for the app itself, not for xamarin-android.)
For example, if you're working on a mono/x86 bug and need to quickly update
the app on the device to test libmonosgen-2.0.so changes:
$ make -C src/mono-runtimes/obj/Debug/x86 && \
adb push src/mono-runtimes/obj/Debug/x86/mono/mini/.libs/libmonosgen-2.0.so \
/data/data/Mono.Android_Tests/files/.__override__
Alternatively, if you're working on an mscorlib.dll bug:
$ make -C external/mono/mcs/class/corlib PROFILE=monodroid && \
adb push external/mono/mcs/class/lib/monodroid/mscorlib.dll \
/data/data/Mono.Android_Tests/files/.__override__