20
20
21
21
using Xamarin . Android . Tools ;
22
22
using Microsoft . Android . Build . Tasks ;
23
+ using Java . Interop . Tools . JavaCallableWrappers . Adapters ;
23
24
24
25
namespace Xamarin . Android . Tasks
25
26
{
@@ -463,6 +464,16 @@ bool CreateJavaSources (IEnumerable<JavaType> newJavaTypes, TypeDefinitionCache
463
464
bool hasExportReference = ResolvedAssemblies . Any ( assembly => Path . GetFileName ( assembly . ItemSpec ) == "Mono.Android.Export.dll" ) ;
464
465
bool generateOnCreateOverrides = int . Parse ( AndroidSdkPlatform ) <= 10 ;
465
466
467
+ var reader_options = new CallableWrapperReaderOptions {
468
+ DefaultApplicationJavaClass = ApplicationJavaClass ,
469
+ DefaultGenerateOnCreateOverrides = generateOnCreateOverrides ,
470
+ DefaultMonoRuntimeInitialization = monoInit ,
471
+ MethodClassifier = classifier ,
472
+ } ;
473
+ var writer_options = new CallableWrapperWriterOptions {
474
+ CodeGenerationTarget = JavaPeerStyle . XAJavaInterop1
475
+ } ;
476
+
466
477
bool ok = true ;
467
478
foreach ( JavaType jt in newJavaTypes ) {
468
479
TypeDefinition t = jt . Type ; // JCW generator doesn't care about ABI-specific types or token ids
@@ -473,23 +484,21 @@ bool CreateJavaSources (IEnumerable<JavaType> newJavaTypes, TypeDefinitionCache
473
484
474
485
using ( var writer = MemoryStreamPool . Shared . CreateStreamWriter ( ) ) {
475
486
try {
476
- var jti = new JavaCallableWrapperGenerator ( t , Log . LogWarning , cache , classifier ) {
477
- GenerateOnCreateOverrides = generateOnCreateOverrides ,
478
- ApplicationJavaClass = ApplicationJavaClass ,
479
- MonoRuntimeInitialization = monoInit ,
480
- } ;
487
+ var jcw_type = CecilImporter . CreateType ( t , cache , reader_options ) ;
488
+
489
+ jcw_type . Generate ( writer , writer_options ) ;
481
490
482
- jti . Generate ( writer ) ;
483
491
if ( useMarshalMethods ) {
484
492
if ( classifier . FoundDynamicallyRegisteredMethods ( t ) ) {
485
493
Log . LogWarning ( $ "Type '{ t . GetAssemblyQualifiedName ( cache ) } ' will register some of its Java override methods dynamically. This may adversely affect runtime performance. See preceding warnings for names of dynamically registered methods.") ;
486
494
}
487
495
}
496
+
488
497
writer . Flush ( ) ;
489
498
490
- var path = jti . GetDestinationPath ( outputPath ) ;
499
+ var path = jcw_type . GetDestinationPath ( outputPath ) ;
491
500
Files . CopyIfStreamChanged ( writer . BaseStream , path ) ;
492
- if ( jti . HasExport && ! hasExportReference )
501
+ if ( jcw_type . HasExport && ! hasExportReference )
493
502
Diagnostic . Error ( 4210 , Properties . Resources . XA4210 ) ;
494
503
} catch ( XamarinAndroidException xae ) {
495
504
ok = false ;
0 commit comments