Skip to content

Commit 396aca1

Browse files
[tests, One .NET] emit <uses-sdk/> & use Xamarin.Forms 4.7 (#4948)
Context: dotnet/maui-samples@571e1c0 Xamarin.Forms 4.7.x is required to solve a crash on startup in .NET 5+. We should bump to Xamarin.Forms 4.7 in our MSBuild tests. This requires some additional AndroidX packages to be bumped. However, after doing this I got build warnings such as: warning XA1006: Android API level 30 is higher than the targetSdkVersion (28). Please increase the `android:targetSdkVersion` in the `AndroidManifest.xml` so that the API levels match. The project has a `AndroidManifest.xml` with an empty `<uses-sdk/>` element, but `obj\Debug\android\AndroidManifest.xml` has 28 listed. The projects that the MSBuild tests generate have an empty `<uses-sdk/>` by default. So where does `targetSdkVersion="28"` come from? The `Xamarin.AndroidX.Media` NuGet package brings in: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="androidx.media" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28" /> … This is coming directly from the `.aar` file via: https://maven.google.com/androidx/media/media/1.1.0/media-1.1.0.aar Why do our MSBuild tests even have an `AndroidManifest.xml` file with an empty `<uses-sdk/>`? It seems like almost no developer would do this -- the templates have been defining `minSdkVersion` and `targetSdkVersion` for a long time. To address how the MSBuild tests work: * Move `Builder.GetMaxInstalledPlatform` to `AndroidSdkResolver`, so it can be a `static` method. Add simple caching so we don't query the file system so much. * Add `TargetSdkVersion` and `MinSdkVersion` properties to `XamarinAndroidApplicationProject`. * The new properties impact `<uses-sdk/>` accordingly. You can set them to `""` or `null` to omit them from `AndroidManifest.xml`. Now our MSBuild tests will default to use: <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" /> ...until we add another new API level. The impacted MSBuild tests will now pass under a `dotnet` context.
1 parent 936f8dc commit 396aca1

20 files changed

+170
-80
lines changed

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidDependenciesTests.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ public class AndroidDependenciesTests : BaseTest
1818
public void InstallAndroidDependenciesTest ()
1919
{
2020
AssertCommercialBuild ();
21+
// We need to grab the latest API level *before* changing env vars
22+
var apiLevel = AndroidSdkResolver.GetMaxInstalledPlatform ();
2123
var old = Environment.GetEnvironmentVariable ("ANDROID_SDK_PATH");
2224
try {
2325
string sdkPath = Path.Combine (Root, "temp", TestName, "android-sdk");
2426
Environment.SetEnvironmentVariable ("ANDROID_SDK_PATH", sdkPath);
2527
if (Directory.Exists (sdkPath))
2628
Directory.Delete (sdkPath, true);
2729
Directory.CreateDirectory (sdkPath);
28-
var proj = new XamarinAndroidApplicationProject ();
30+
var proj = new XamarinAndroidApplicationProject {
31+
TargetSdkVersion = apiLevel.ToString (),
32+
};
2933
using (var b = CreateApkBuilder ()) {
3034
b.CleanupAfterSuccessfulBuild = false;
3135
string defaultTarget = b.Target;
@@ -78,6 +82,7 @@ public void GetDependencyWhenBuildToolsAreMissingTest ()
7882
var proj = new XamarinAndroidApplicationProject () {
7983
IsRelease = true,
8084
TargetFrameworkVersion = "v8.0",
85+
TargetSdkVersion = "26",
8186
UseLatestPlatformSdk = false,
8287
};
8388
var parameters = new string [] {
@@ -90,7 +95,7 @@ public void GetDependencyWhenBuildToolsAreMissingTest ()
9095
builder.Target = "GetAndroidDependencies";
9196
Assert.True (builder.Build (proj, parameters: parameters),
9297
string.Format ("First Build should have succeeded"));
93-
int apiLevel = Builder.UseDotNet ? builder.GetMaxInstalledPlatform () : 26;
98+
int apiLevel = Builder.UseDotNet ? AndroidSdkResolver.GetMaxInstalledPlatform () : 26;
9499
StringAssertEx.Contains ($"platforms/android-{apiLevel}", builder.LastBuildOutput, $"platforms/android-{apiLevel} should be a dependency.");
95100
StringAssertEx.Contains ($"build-tools/{buildToolsVersion}", builder.LastBuildOutput, $"build-tools/{buildToolsVersion} should be a dependency.");
96101
StringAssertEx.Contains ("platform-tools", builder.LastBuildOutput, "platform-tools should be a dependency.");
@@ -112,6 +117,7 @@ public void GetDependencyWhenSDKIsMissingTest ([Values (true, false)] bool creat
112117
var proj = new XamarinAndroidApplicationProject () {
113118
IsRelease = true,
114119
TargetFrameworkVersion = "v8.0",
120+
TargetSdkVersion = "26",
115121
UseLatestPlatformSdk = false,
116122
};
117123
var parameters = new string [] {
@@ -125,7 +131,7 @@ public void GetDependencyWhenSDKIsMissingTest ([Values (true, false)] bool creat
125131
builder.Target = "GetAndroidDependencies";
126132
Assert.True (builder.Build (proj, parameters: parameters),
127133
string.Format ("First Build should have succeeded"));
128-
int apiLevel = Builder.UseDotNet ? builder.GetMaxInstalledPlatform () : 26;
134+
int apiLevel = Builder.UseDotNet ? AndroidSdkResolver.GetMaxInstalledPlatform () : 26;
129135
StringAssertEx.Contains ($"platforms/android-{apiLevel}", builder.LastBuildOutput, $"platforms/android-{apiLevel} should be a dependency.");
130136
StringAssertEx.Contains ($"build-tools/{buildToolsVersion}", builder.LastBuildOutput, $"build-tools/{buildToolsVersion} should be a dependency.");
131137
StringAssertEx.Contains ("platform-tools", builder.LastBuildOutput, "platform-tools should be a dependency.");

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/AndroidUpdateResourcesTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,8 @@ public void CheckMaxResWarningIsEmittedAsAWarning([Values (false, true)] bool us
11051105
var path = Path.Combine ("temp", TestName);
11061106
var proj = new XamarinAndroidApplicationProject () {
11071107
TargetFrameworkVersion = "v8.0",
1108+
TargetSdkVersion = "26",
1109+
MinSdkVersion = null,
11081110
UseLatestPlatformSdk = false,
11091111
IsRelease = true,
11101112
OtherBuildItems = {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,8 @@ public void MultiDexCustomMainDexFileList ([Values ("dx", "d8")] string dexTool,
12831283
};
12841284
var proj = CreateMultiDexRequiredApplication ();
12851285
proj.DexTool = dexTool;
1286-
proj.AndroidManifest = proj.AndroidManifest.Replace ("<uses-sdk />", $"<uses-sdk android:minSdkVersion=\"{minSdkVersion}\" />");
1286+
proj.MinSdkVersion = minSdkVersion;
1287+
proj.TargetSdkVersion = null;
12871288
proj.SetProperty ("AndroidEnableMultiDex", "True");
12881289
proj.OtherBuildItems.Add (new BuildItem ("MultiDexMainDexList", "mymultidex.keep") { TextContent = () => "MyTest.class", Encoding = Encoding.ASCII });
12891290
proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaSource", "MyTest.java") { TextContent = () => "public class MyTest {}", Encoding = Encoding.ASCII });
@@ -1851,18 +1852,14 @@ public class MainActivity : Activity
18511852
}
18521853
});
18531854
using (var b = CreateApkBuilder ("temp/CheckLintErrorsAndWarnings", cleanupOnDispose: false)) {
1854-
int maxApiLevel = b.GetMaxInstalledPlatform ();
1855+
int maxApiLevel = AndroidSdkResolver.GetMaxInstalledPlatform ();
18551856
string apiLevel;
18561857
proj.TargetFrameworkVersion = b.LatestTargetFrameworkVersion (out apiLevel);
18571858
if (int.TryParse (apiLevel, out int a) && a < maxApiLevel)
18581859
disabledIssues += ",OldTargetApi";
18591860
proj.SetProperty ("AndroidLintDisabledIssues", disabledIssues);
1860-
proj.AndroidManifest = @"<?xml version=""1.0"" encoding=""utf-8""?>
1861-
<manifest xmlns:android=""http://schemas.android.com/apk/res/android"" android:versionCode=""1"" android:versionName=""1.0"" package=""UnamedProject.UnamedProject"">
1862-
<uses-sdk android:minSdkVersion=""24"" android:targetSdkVersion=""{APILEVEL}"" />
1863-
<application android:label=""${PROJECT_NAME}"">
1864-
</application >
1865-
</manifest> ".Replace ("{APILEVEL}", apiLevel);
1861+
proj.MinSdkVersion = "24";
1862+
proj.TargetSdkVersion = apiLevel;
18661863
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
18671864
StringAssertEx.DoesNotContain ("XA0102", b.LastBuildOutput, "Output should not contain any XA0102 warnings");
18681865
StringAssertEx.DoesNotContain ("XA0103", b.LastBuildOutput, "Output should not contain any XA0103 errors");
@@ -1908,14 +1905,14 @@ public void CheckLintConfigMerging ()
19081905
}
19091906

19101907
[Test]
1908+
[Category ("dotnet")]
19111909
/// <summary>
19121910
/// Reference https://bugzilla.xamarin.com/show_bug.cgi?id=29568
19131911
/// </summary>
19141912
public void BuildLibraryWhichUsesResources ([Values (false, true)] bool isRelease)
19151913
{
1916-
var proj = new XamarinAndroidLibraryProject () { IsRelease = isRelease };
1917-
proj.PackageReferences.Add (KnownPackages.AndroidSupportV4_27_0_2_1);
1918-
proj.PackageReferences.Add (KnownPackages.SupportV7AppCompat_27_0_2_1);
1914+
var proj = new XamarinAndroidLibraryProject { IsRelease = isRelease };
1915+
proj.PackageReferences.Add (KnownPackages.AndroidXAppCompat);
19191916
proj.AndroidResources.Add (new AndroidItem.AndroidResource ("Resources\\values\\Styles.xml") {
19201917
TextContent = () => @"<?xml version=""1.0"" encoding=""UTF-8"" ?>
19211918
<resources>
@@ -3181,6 +3178,7 @@ public void IfAndroidJarDoesNotExistThrowXA5207 ()
31813178
var proj = new XamarinAndroidApplicationProject () {
31823179
IsRelease = true,
31833180
TargetFrameworkVersion = "v8.1",
3181+
TargetSdkVersion = "27",
31843182
UseLatestPlatformSdk = false,
31853183
};
31863184
using (var builder = CreateApkBuilder (Path.Combine (path, proj.ProjectName), false, false)) {
@@ -3830,8 +3828,10 @@ public void WarningForMinSdkVersion ()
38303828
{
38313829
int minSdkVersion = XABuildConfig.NDKMinimumApiAvailable;
38323830
int tooLowSdkVersion = minSdkVersion - 1;
3833-
var proj = new XamarinAndroidApplicationProject ();
3834-
proj.AndroidManifest = proj.AndroidManifest.Replace ("<uses-sdk />", $"<uses-sdk android:minSdkVersion=\"{tooLowSdkVersion}\" />");
3831+
var proj = new XamarinAndroidApplicationProject {
3832+
MinSdkVersion = tooLowSdkVersion.ToString (),
3833+
TargetSdkVersion = null,
3834+
};
38353835
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
38363836
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
38373837
Assert.IsTrue (
@@ -4010,6 +4010,7 @@ public void AbiDelimiters ([Values ("armeabi-v7a%3bx86", "armeabi-v7a,x86")] str
40104010
}
40114011

40124012
[Test]
4013+
[Category ("dotnet")]
40134014
public void WorkManager ()
40144015
{
40154016
var proj = new XamarinFormsAndroidApplicationProject ();
@@ -4027,7 +4028,8 @@ public MyWorker (Context c, WorkerParameters p) : base (c, p) { }
40274028
}
40284029
"
40294030
});
4030-
proj.PackageReferences.Add (KnownPackages.Android_Arch_Work_Runtime);
4031+
proj.PackageReferences.Add (
4032+
Builder.UseDotNet ? KnownPackages.AndroidXWorkRuntime : KnownPackages.Android_Arch_Work_Runtime);
40314033
using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) {
40324034
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");
40334035
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/IncrementalBuildTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,6 +1131,7 @@ public void AndroidAssetMissing ()
11311131
}
11321132

11331133
[Test]
1134+
[Category ("dotnet")]
11341135
[NonParallelizable]
11351136
public void AndroidXMigrationBug ()
11361137
{

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/ManifestTest.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Linq;
33
using NUnit.Framework;
44
using Xamarin.ProjectTools;
@@ -427,6 +427,7 @@ public void VersionCodeTests (bool seperateApk, string abis, string versionCode,
427427
{
428428
var proj = new XamarinAndroidApplicationProject () {
429429
IsRelease = true,
430+
MinSdkVersion = null,
430431
};
431432
proj.SetProperty ("Foo", "1");
432433
proj.SetProperty (proj.ReleaseProperties, KnownProperties.AndroidCreatePackagePerAbi, seperateApk);
@@ -847,9 +848,9 @@ public void Queries_API30 ([Values (true, false)] bool useAapt2)
847848
var proj = new XamarinAndroidApplicationProject {
848849
AndroidUseSharedRuntime = true,
849850
EmbedAssembliesIntoApk = false,
851+
TargetSdkVersion = "30",
850852
};
851853
proj.SetProperty ("AndroidUseAapt2", useAapt2.ToString ());
852-
proj.AndroidManifest = proj.AndroidManifest.Replace ("<uses-sdk />", "<uses-sdk android:targetSdkVersion=\"30\" />");
853854
using (var b = CreateApkBuilder ()) {
854855
Assert.IsTrue (b.Build (proj), "Build should have succeeded");
855856

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/Aapt2Tests.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,7 @@ public void Aapt2Link ([Values (true, false)] bool compilePerFile)
154154
items.Add (new TaskItem (file));
155155
}
156156
}
157-
int platform = 0;
158-
using (var b = new Builder ()) {
159-
platform = b.GetMaxInstalledPlatform ();
160-
}
157+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
161158
var outputFile = Path.Combine (path, "resources.apk");
162159
var task = new Aapt2Link {
163160
BuildEngine = engine,
@@ -435,10 +432,7 @@ public void Aapt2AndroidResgenExtraArgsAreInvalid ()
435432
var archives = new List<ITaskItem>();
436433
CallAapt2Compile (engine, resPath, archivePath, flatFilePath);
437434
var outputFile = Path.Combine (path, "resources.apk");
438-
int platform = 0;
439-
using (var b = new Builder ()) {
440-
platform = b.GetMaxInstalledPlatform ();
441-
}
435+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
442436
var task = new Aapt2Link {
443437
BuildEngine = engine,
444438
ToolPath = GetPathToAapt2 (),
@@ -478,12 +472,9 @@ public void Aapt2AndroidResgenExtraArgsAreSplit ()
478472
var archives = new List<ITaskItem>();
479473
CallAapt2Compile (engine, resPath, archivePath, flatFilePath);
480474
var outputFile = Path.Combine (path, "resources.apk");
481-
int platform = 0;
475+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
482476
string emitids = Path.Combine (path, "emitids.txt");
483477
string Rtxt = Path.Combine (path, "R.txt");
484-
using (var b = new Builder ()) {
485-
platform = b.GetMaxInstalledPlatform ();
486-
}
487478
var task = new Aapt2Link {
488479
BuildEngine = engine,
489480
ToolPath = GetPathToAapt2 (),

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/ManagedResourceParserTests.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -486,10 +486,7 @@ public void CompareAapt2AndManagedParserOutput ()
486486
};
487487

488488
Assert.IsTrue (aapt2Compile.Execute (), $"Aapt2 Compile should have succeeded. {string.Join (" ", errors.Select (x => x.Message))}");
489-
int platform = 0;
490-
using (var b = new Builder ()) {
491-
platform = b.GetMaxInstalledPlatform ();
492-
}
489+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
493490
string resPath = Path.Combine (Root, path, "res");
494491
string rTxt = Path.Combine (Root, path, "R.txt");
495492
var aapt2Link = new Aapt2Link {
@@ -556,10 +553,7 @@ public void CompareAaptAndManagedParserOutputWithCustomIds ()
556553
File.WriteAllText (Path.Combine (Root, path, "foo.map"), @"a\nb");
557554
Directory.CreateDirectory (Path.Combine (Root, path, "java"));
558555
string resPath = Path.Combine (Root, path, "res");
559-
int platform = 0;
560-
using (var b = new Builder ()) {
561-
platform = b.GetMaxInstalledPlatform ();
562-
}
556+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
563557
IBuildEngine engine = new MockBuildEngine (TestContext.Out);
564558
var aapt = new Aapt () {
565559
BuildEngine = engine,
@@ -644,10 +638,7 @@ public void CheckPerformanceOfManagedParser ()
644638
IBuildEngine engine = new MockBuildEngine (TestContext.Out);
645639
TaskLoggingHelper loggingHelper = new TaskLoggingHelper (engine, nameof (ManagedResourceParser));
646640
string resPath = Path.Combine (Root, path, "res");
647-
int platform = 0;
648-
using (var b = new Builder ()) {
649-
platform = b.GetMaxInstalledPlatform ();
650-
}
641+
int platform = AndroidSdkResolver.GetMaxInstalledPlatform ();
651642
var flagFile = Path.Combine (Root, path, "AndroidResgen.flag");
652643
var lp = new string [] { Path.Combine (Root, path, "lp", "res") };
653644
Stopwatch sw = new Stopwatch ();

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/ResolveSdksTaskTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ public void LatestTFV_OldTargetSdkVersion ()
419419
var proj = new XamarinAndroidApplicationProject {
420420
UseLatestPlatformSdk = false,
421421
};
422-
proj.AndroidManifest = proj.AndroidManifest.Replace ("<uses-sdk />", "<uses-sdk android:targetSdkVersion=\"19\" />");
422+
proj.TargetSdkVersion = "19";
423423
using (var b = CreateApkBuilder ()) {
424424
proj.TargetFrameworkVersion = b.LatestTargetFrameworkVersion ();
425425
Assert.IsTrue (b.Build (proj), "Build should have succeeded.");

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/AndroidSdkResolver.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,25 @@ static string RunPathsTargets (string target)
7777
return Directory.Exists (path) ? path : null;
7878
}
7979
}
80+
81+
static int? maxInstalled;
82+
83+
public static int GetMaxInstalledPlatform ()
84+
{
85+
if (maxInstalled != null)
86+
return maxInstalled.Value;
87+
88+
string sdkPath = GetAndroidSdkPath ();
89+
foreach (var dir in Directory.EnumerateDirectories (Path.Combine (sdkPath, "platforms"))) {
90+
int version;
91+
string v = Path.GetFileName (dir).Replace ("android-", "");
92+
if (!int.TryParse (v, out version))
93+
continue;
94+
if (version < maxInstalled)
95+
continue;
96+
maxInstalled = version;
97+
}
98+
return maxInstalled ?? 0;
99+
}
80100
}
81101
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownPackages.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,14 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
222222
},
223223
}
224224
};
225-
public static Package XamarinForms_4_5_0_617 = new Package {
225+
public static Package XamarinForms_4_7_0_1142 = new Package {
226226
Id = "Xamarin.Forms",
227-
Version = "4.5.0.617",
227+
Version = "4.7.0.1142",
228+
TargetFramework = "MonoAndroid10.0",
229+
};
230+
public static Package XamarinFormsMaps_4_7_0_1142 = new Package {
231+
Id = "Xamarin.Forms.Maps",
232+
Version = "4.7.0.1142",
228233
TargetFramework = "MonoAndroid10.0",
229234
};
230235
/* additional packages for XForms 4.5 on NET5 */
@@ -301,12 +306,12 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
301306
};
302307
public static Package AndroidXAppCompat = new Package {
303308
Id = "Xamarin.AndroidX.AppCompat",
304-
Version = "1.1.0",
309+
Version = "1.1.0.1",
305310
TargetFramework = "MonoAndroid10",
306311
};
307312
public static Package AndroidXBrowser = new Package {
308313
Id = "Xamarin.AndroidX.Browser",
309-
Version = "1.0.0",
314+
Version = "1.2.0.1",
310315
TargetFramework = "MonoAndroid90",
311316
References = {
312317
new BuildItem.Reference ("Xamarin.AndroidX.Browser") {
@@ -316,7 +321,7 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
316321
};
317322
public static Package AndroidXMediaRouter = new Package {
318323
Id = "Xamarin.AndroidX.MediaRouter",
319-
Version = "1.1.0",
324+
Version = "1.1.0.1",
320325
TargetFramework = "MonoAndroid90",
321326
References = {
322327
new BuildItem.Reference ("Xamarin.AndroidX.MediaRouter") {
@@ -326,7 +331,7 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
326331
};
327332
public static Package AndroidXLegacySupportV4 = new Package {
328333
Id = "Xamarin.AndroidX.Legacy.Support.V4",
329-
Version = "1.0.0",
334+
Version = "1.0.0.1",
330335
TargetFramework = "MonoAndroid90",
331336
References = {
332337
new BuildItem.Reference ("Xamarin.AndroidX.Legacy.Support.V4") {
@@ -336,7 +341,7 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
336341
};
337342
public static Package AndroidXLifecycleLiveData = new Package {
338343
Id = "Xamarin.AndroidX.Lifecycle.LiveData",
339-
Version = "2.1.0",
344+
Version = "2.2.0.1",
340345
TargetFramework = "MonoAndroid90",
341346
References = {
342347
new BuildItem.Reference ("Xamarin.AndroidX.Lifecycle.LiveData") {
@@ -354,9 +359,19 @@ public static void AddDotNetCompatPackages (this IShortFormProject project)
354359
},
355360
}
356361
};
362+
public static Package AndroidXWorkRuntime = new Package {
363+
Id = "Xamarin.AndroidX.Work.Runtime",
364+
Version = "2.3.4.3",
365+
TargetFramework = "MonoAndroid90",
366+
References = {
367+
new BuildItem.Reference("Xamarin.AndroidX.Work.Runtime") {
368+
MetadataValues = "HintPath=..\\packages\\Xamarin.AndroidX.Work.Runtime.2.3.4.3\\lib\\MonoAndroid90\\Xamarin.AndroidX.Work.Runtime.dll"
369+
}
370+
}
371+
};
357372
public static Package XamarinGoogleAndroidMaterial = new Package {
358373
Id = "Xamarin.Google.Android.Material",
359-
Version = "1.0.0",
374+
Version = "1.0.0.1",
360375
TargetFramework = "MonoAndroid90",
361376
References = {
362377
new BuildItem.Reference ("Xamarin.Google.Android.Material") {

0 commit comments

Comments
 (0)