@@ -167,12 +167,17 @@ private void PreserveCustomHttpClientHandler (
167167 string handlerAssembly ,
168168 string testProjectName ,
169169 string assemblyPath ,
170- TrimMode trimMode )
170+ TrimMode trimMode ,
171+ AndroidRuntime runtime )
171172 {
173+ const bool isRelease = true ;
174+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
175+ return ;
176+ }
172177 testProjectName += trimMode . ToString ( ) ;
173178
174179 var class_library = new XamarinAndroidLibraryProject {
175- IsRelease = true ,
180+ IsRelease = isRelease ,
176181 ProjectName = "MyClassLibrary" ,
177182 Sources = {
178183 new BuildItem . Source ( "MyCustomHandler.cs" ) {
@@ -189,20 +194,22 @@ class MyCustomHandler : System.Net.Http.HttpMessageHandler
189194 }
190195 }
191196 } ;
197+ class_library . SetRuntime ( runtime ) ;
192198 using ( var libBuilder = CreateDllBuilder ( $ "{ testProjectName } /{ class_library . ProjectName } ") ) {
193199 Assert . IsTrue ( libBuilder . Build ( class_library ) , $ "Build for { class_library . ProjectName } should have succeeded.") ;
194200 }
195201
196202 var proj = new XamarinAndroidApplicationProject {
197203 ProjectName = "MyApp" ,
198- IsRelease = true ,
204+ IsRelease = isRelease ,
199205 TrimModeRelease = trimMode ,
200206 Sources = {
201207 new BuildItem . Source ( "Foo.cs" ) {
202208 TextContent = ( ) => "public class Foo : Bar { }" ,
203209 }
204210 }
205211 } ;
212+ proj . SetRuntime ( runtime ) ;
206213 proj . AddReference ( class_library ) ;
207214 proj . AddReferences ( "System.Net.Http" ) ;
208215 string handlerTypeFullName = string . IsNullOrEmpty ( handlerAssembly ) ? handlerType : handlerType + ", " + handlerAssembly ;
@@ -218,19 +225,22 @@ class MyCustomHandler : System.Net.Http.HttpMessageHandler
218225 }
219226
220227 [ Test ]
221- public void PreserveCustomHttpClientHandlers ( [ Values ( TrimMode . Partial , TrimMode . Full ) ] TrimMode trimMode )
228+ public void PreserveCustomHttpClientHandlers ( [ Values ( TrimMode . Partial , TrimMode . Full ) ] TrimMode trimMode , [ Values ] AndroidRuntime runtime )
222229 {
223230 PreserveCustomHttpClientHandler ( "Xamarin.Android.Net.AndroidMessageHandler" , "" ,
224- "temp/PreserveAndroidMessageHandler" , "android-arm64/linked/Mono.Android.dll" , trimMode ) ;
231+ $ "temp/PreserveAndroidMessageHandler{ trimMode } { runtime } ", "android-arm64/linked/Mono.Android.dll" , trimMode , runtime ) ;
225232 PreserveCustomHttpClientHandler ( "System.Net.Http.SocketsHttpHandler" , "System.Net.Http" ,
226- "temp/PreserveSocketsHttpHandler" , "android-arm64/linked/System.Net.Http.dll" , trimMode ) ;
233+ $ "temp/PreserveSocketsHttpHandler{ trimMode } { runtime } ", "android-arm64/linked/System.Net.Http.dll" , trimMode , runtime ) ;
227234 PreserveCustomHttpClientHandler ( "MyCustomHandler" , "MyClassLibrary" ,
228- "temp/MyCustomHandler" , "android-arm64/linked/MyClassLibrary.dll" , trimMode ) ;
235+ $ "temp/MyCustomHandler{ trimMode } { runtime } ", "android-arm64/linked/MyClassLibrary.dll" , trimMode , runtime ) ;
229236 }
230237
231238 [ Test ]
232- public void WarnAboutAppDomains ( [ Values ( true , false ) ] bool isRelease )
239+ public void WarnAboutAppDomains ( [ Values ] bool isRelease , [ Values ] AndroidRuntime runtime )
233240 {
241+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
242+ return ;
243+ }
234244 if ( isRelease ) {
235245 // NOTE: trimmer warnings are hidden by default in .NET 7 rc1
236246 Assert . Ignore ( "https://github.com/dotnet/linker/issues/2982" ) ;
@@ -246,8 +256,10 @@ public void WarnAboutAppDomains ([Values (true, false)] bool isRelease)
246256 }
247257 }
248258 } ;
259+ lib . SetRuntime ( runtime ) ;
249260
250261 var app = new XamarinAndroidApplicationProject { IsRelease = isRelease } ;
262+ app . SetRuntime ( runtime ) ;
251263 app . SetAndroidSupportedAbis ( "arm64-v8a" ) ;
252264 app . AddReference ( lib ) ;
253265 using var libBuilder = CreateDllBuilder ( Path . Combine ( path , lib . ProjectName ) ) ;
@@ -366,10 +378,14 @@ public void LinkDescription ([Values (true, false)] bool useAssemblyStore, [Valu
366378 }
367379
368380 [ Test ]
369- public void LinkWithNullAttribute ( )
381+ public void LinkWithNullAttribute ( [ Values ] AndroidRuntime runtime )
370382 {
383+ const bool isRelease = true ;
384+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
385+ return ;
386+ }
371387 var proj = new XamarinAndroidApplicationProject {
372- IsRelease = true ,
388+ IsRelease = isRelease ,
373389 OtherBuildItems = {
374390 new BuildItem ( "Compile" , "NullAttribute.cs" ) { TextContent = ( ) => @"
375391using System;
@@ -402,6 +418,7 @@ public AttributedButtonStub (Context context) : base (context)
402418 }
403419 } ;
404420
421+ proj . SetRuntime ( runtime ) ;
405422 proj . MainActivity = proj . DefaultMainActivity . Replace ( "//${AFTER_ONCREATE}" ,
406423$@ " var myButton = new AttributedButtonStub (this);
407424 myButton.Text = ""Bug #35710"";
@@ -416,7 +433,7 @@ static IEnumerable<object[]> Get_AndroidAddKeepAlivesData ()
416433 {
417434 var ret = new List < object [ ] > ( ) ;
418435
419- foreach ( AndroidRuntime runtime in new [ ] { AndroidRuntime . MonoVM , AndroidRuntime . CoreCLR } ) {
436+ foreach ( AndroidRuntime runtime in Enum . GetValues ( typeof ( AndroidRuntime ) ) ) {
420437 // Debug configuration
421438 AddTestData ( isRelease : false , setAndroidAddKeepAlivesTrue : false , setLinkModeNone : false , shouldAddKeepAlives : false , runtime ) ;
422439
@@ -448,6 +465,10 @@ void AddTestData (bool isRelease, bool setAndroidAddKeepAlivesTrue, bool setLink
448465 [ TestCaseSource ( nameof ( Get_AndroidAddKeepAlivesData ) ) ]
449466 public void AndroidAddKeepAlives ( bool isRelease , bool setAndroidAddKeepAlivesTrue , bool setLinkModeNone , bool shouldAddKeepAlives , AndroidRuntime runtime )
450467 {
468+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
469+ return ;
470+ }
471+
451472 if ( runtime == AndroidRuntime . CoreCLR && isRelease && ! setAndroidAddKeepAlivesTrue && setLinkModeNone && shouldAddKeepAlives ) {
452473 // This currently fails with the following exception:
453474 //
@@ -512,7 +533,12 @@ public unsafe bool MyMethod (Android.OS.IBinder windowToken, [global::Android.Ru
512533 var assemblyFile = "UnnamedProject.dll" ;
513534 if ( ! isRelease || setLinkModeNone ) {
514535 foreach ( string abi in proj . GetRuntimeIdentifiersAsAbis ( ) ) {
515- CheckAssembly ( b . Output . GetIntermediaryPath ( Path . Combine ( "android" , "assets" , abi , assemblyFile ) ) , projectDir ) ;
536+ string assemblyDir = runtime switch {
537+ AndroidRuntime . NativeAOT => Path . Combine ( MonoAndroidHelper . AbiToRid ( abi ) , "linked" ) ,
538+ _ => Path . Combine ( "android" , "assets" , abi )
539+ } ;
540+
541+ CheckAssembly ( b . Output . GetIntermediaryPath ( Path . Combine ( assemblyDir , assemblyFile ) ) , projectDir ) ;
516542 }
517543 } else {
518544 CheckAssembly ( BuildTest . GetLinkedPath ( b , true , assemblyFile ) , projectDir ) ;
@@ -553,9 +579,15 @@ void CheckAssembly (string assemblyPath, string projectDir)
553579 }
554580
555581 [ Test ]
556- public void AndroidUseNegotiateAuthentication ( [ Values ( true , false , null ) ] bool ? useNegotiateAuthentication )
582+ public void AndroidUseNegotiateAuthentication ( [ Values ( true , false , null ) ] bool ? useNegotiateAuthentication , [ Values ] AndroidRuntime runtime )
557583 {
584+ bool isRelease = runtime == AndroidRuntime . NativeAOT ;
585+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
586+ return ;
587+ }
588+
558589 var proj = new XamarinAndroidApplicationProject { IsRelease = true } ;
590+ proj . SetRuntime ( runtime ) ;
559591 proj . AddReferences ( "System.Net.Http" ) ;
560592 proj . MainActivity = proj . DefaultMainActivity . Replace (
561593 "base.OnCreate (bundle);" ,
@@ -585,9 +617,14 @@ public void AndroidUseNegotiateAuthentication ([Values (true, false, null)] bool
585617 }
586618
587619 [ Test ]
588- public void PreserveIX509TrustManagerSubclasses ( [ Values ( true , false ) ] bool hasServerCertificateCustomValidationCallback )
620+ public void PreserveIX509TrustManagerSubclasses ( [ Values ] bool hasServerCertificateCustomValidationCallback , [ Values ] AndroidRuntime runtime )
589621 {
590- var proj = new XamarinAndroidApplicationProject { IsRelease = true } ;
622+ const bool isRelease = true ;
623+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
624+ return ;
625+ }
626+ var proj = new XamarinAndroidApplicationProject { IsRelease = isRelease } ;
627+ proj . SetRuntime ( runtime ) ;
591628 proj . AddReferences ( "System.Net.Http" ) ;
592629 proj . MainActivity = proj . DefaultMainActivity . Replace (
593630 "base.OnCreate (bundle);" ,
@@ -619,15 +656,21 @@ public void PreserveIX509TrustManagerSubclasses ([Values(true, false)] bool hasS
619656 }
620657
621658 [ Test ]
622- public void PreserveServices ( )
659+ public void PreserveServices ( [ Values ] AndroidRuntime runtime )
623660 {
661+ const bool isRelease = true ;
662+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
663+ return ;
664+ }
665+
624666 var proj = new XamarinAndroidApplicationProject {
625- IsRelease = true ,
667+ IsRelease = isRelease ,
626668 TrimModeRelease = TrimMode . Full ,
627669 PackageReferences = {
628670 new Package { Id = "Plugin.Firebase.CloudMessaging" , Version = "3.0.0" } ,
629671 }
630672 } ;
673+ proj . SetRuntime ( runtime ) ;
631674 proj . MainActivity = proj . DefaultMainActivity
632675 . Replace ( "//${FIELDS}" ,
633676 """
@@ -759,9 +802,15 @@ void Assert64Bit(string rid, bool expected64)
759802 }
760803
761804 [ Test ]
762- public void WarnWithReferenceToPreserveAttribute ( )
805+ public void WarnWithReferenceToPreserveAttribute ( [ Values ] AndroidRuntime runtime )
763806 {
764- var proj = new XamarinAndroidApplicationProject { IsRelease = true } ;
807+ const bool isRelease = true ;
808+ if ( IgnoreUnsupportedConfiguration ( runtime , release : isRelease ) ) {
809+ return ;
810+ }
811+
812+ var proj = new XamarinAndroidApplicationProject { IsRelease = isRelease } ;
813+ proj . SetRuntime ( runtime ) ;
765814 proj . AddReferences ( "System.Net.Http" ) ;
766815 proj . MainActivity = proj . DefaultMainActivity . Replace (
767816 "protected override void OnCreate" ,
0 commit comments