From 3d6a67a5106e0d141636fa287e99327cf217c2dd Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 5 Apr 2017 13:18:08 +0200 Subject: [PATCH] [nunit] build X.A.NUnitLite.dll with API level 19 - current NUnitLite was built with latest API level. that was problematic, because it was referencing BaseBundle class, which is only available in API >= 21, see https://developer.android.com/reference/android/os/BaseBundle.html - so instead of using latest API, we now build it with API 19. that's the lowes API level we can use, because src/Xamarin.Android.NUnitLite/Gui/Instrumentations/TestSuiteInstrumentation.cs is using global::Android.OS.Environment.DirectoryDocuments which is avalable in API level >= 19, see https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_DOCUMENTS - also the X.A.Build.Tasks project reference is now conditional, because it requires API level >= 24. it is OK, because we build it in leeroy-all rule with latest API level and default build uses latest API level too. the project reference itself is there to ensure the build ordering, so we can safely make it conditional - it fixes bugs #53418 and #53884 --- build-tools/scripts/BuildEverything.mk | 3 +++ .../Gui/Instrumentations/TestSuiteInstrumentation.cs | 6 +++++- .../Xamarin.Android.NUnitLite.csproj | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build-tools/scripts/BuildEverything.mk b/build-tools/scripts/BuildEverything.mk index a36fe024504..1de5d195ed1 100644 --- a/build-tools/scripts/BuildEverything.mk +++ b/build-tools/scripts/BuildEverything.mk @@ -103,6 +103,9 @@ framework-assemblies: $(MSBUILD) $(MSBUILD_FLAGS) src/Mono.Android/Mono.Android.csproj /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=$${a} /p:AndroidFrameworkVersion=$${CUR_VERSION} /p:AndroidPreviousFrameworkVersion=$${PREV_VERSION}; ) \ PREV_VERSION=$${CUR_VERSION}; \ done + $(foreach conf, $(CONFIGURATIONS), \ + rm -f bin/$(conf)/lib/xbuild-frameworks/MonoAndroid/v1.0/Xamarin.Android.NUnitLite.dll; \ + $(MSBUILD) $(MSBUILD_FLAGS) src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=19 /p:AndroidFrameworkVersion=v4.4; ) runtime-libraries: $(foreach conf, $(CONFIGURATIONS), \ diff --git a/src/Xamarin.Android.NUnitLite/Gui/Instrumentations/TestSuiteInstrumentation.cs b/src/Xamarin.Android.NUnitLite/Gui/Instrumentations/TestSuiteInstrumentation.cs index f8b55fcc899..eb11ce66e29 100644 --- a/src/Xamarin.Android.NUnitLite/Gui/Instrumentations/TestSuiteInstrumentation.cs +++ b/src/Xamarin.Android.NUnitLite/Gui/Instrumentations/TestSuiteInstrumentation.cs @@ -93,7 +93,11 @@ public override void OnStart () string GetResultsPath () { - var resultsPathFile = Context.GetExternalFilesDir (global::Android.OS.Environment.DirectoryDocuments); + Java.IO.File resultsPathFile = null; +#if __ANDROID_19__ + if (((int)Build.VERSION.SdkInt) >= 19) + resultsPathFile = Context.GetExternalFilesDir (global::Android.OS.Environment.DirectoryDocuments); +#endif var usePathFile = resultsPathFile != null && resultsPathFile.Exists (); var resultsPath = usePathFile ? resultsPathFile.AbsolutePath diff --git a/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj b/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj index 484a1863aac..9eba814f71f 100644 --- a/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj +++ b/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj @@ -353,7 +353,7 @@ Mono.Android False - + {3F1F2F50-AF1A-4A5A-BEDB-193372F068D7} Xamarin.Android.Build.Tasks False