Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -440,11 +440,12 @@ IList<string> MergeManifest (NativeCodeGenState codeGenState, Dictionary<string,
List<TypeDefinition> allJavaTypes = scanner.GetJavaTypes (assemblies.Values, res);
var javaTypesForJCW = new List<TypeDefinition> ();

// When marshal methods or non-JavaPeerStyle.XAJavaInterop1 are in use we do not want to skip non-user assemblies (such as Mono.Android) - we need to generate JCWs for them during
// application build, unlike in Debug configuration or when marshal methods are disabled, in which case we use JCWs generated during Xamarin.Android
// build and stored in a jar file.
bool shouldSkipNonUserAssemblies = !useMarshalMethods && codeGenerationTarget == JavaPeerStyle.XAJavaInterop1;
foreach (TypeDefinition type in allJavaTypes) {
// When marshal methods are in use we do not want to skip non-user assemblies (such as Mono.Android) - we need to generate JCWs for them during
// application build, unlike in Debug configuration or when marshal methods are disabled, in which case we use JCWs generated during Xamarin.Android
// build and stored in a jar file.
if ((!useMarshalMethods && !userAssemblies.ContainsKey (type.Module.Assembly.Name.Name)) || JavaTypeScanner.ShouldSkipJavaCallableWrapperGeneration (type, cache)) {
if ((shouldSkipNonUserAssemblies && !userAssemblies.ContainsKey (type.Module.Assembly.Name.Name)) || JavaTypeScanner.ShouldSkipJavaCallableWrapperGeneration (type, cache)) {
continue;
}
javaTypesForJCW.Add (type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,10 @@ public void NativeAOT ()
"Should get log message about duplicate IOnClickListenerInvoker!");
}

// Verify that Java stubs for Mono.Android.dll were generated, instead of using mono.android.jar/dex
var onLayoutChangeListenerImplementor = Path.Combine (intermediate, "android", "src", "mono", "android", "view", "View_OnClickListenerImplementor.java");
FileAssert.Exists (onLayoutChangeListenerImplementor);

var dexFile = Path.Combine (intermediate, "android", "bin", "classes.dex");
FileAssert.Exists (dexFile);
foreach (var className in mono_classes) {
Expand Down
14 changes: 10 additions & 4 deletions src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
<AndroidApkSigningAlgorithm Condition=" '$(AndroidApkSigningAlgorithm)' == '' ">SHA256withRSA</AndroidApkSigningAlgorithm>
<AndroidApkDigestAlgorithm Condition=" '$(AndroidApkDigestAlgorithm)' == '' ">SHA-256</AndroidApkDigestAlgorithm>
<AndroidManifestMerger Condition=" '$(AndroidManifestMerger)' == '' ">manifestmerger.jar</AndroidManifestMerger>
<AndroidCodegenTarget Condition=" '$(AndroidCodegenTarget)' == '' ">XAJavaInterop1</AndroidCodegenTarget>

<!-- Default Java heap size to 1GB (-Xmx1G) if not specified-->
<JavaMaximumHeapSize Condition=" '$(JavaMaximumHeapSize)' == '' ">1G</JavaMaximumHeapSize>
Expand Down Expand Up @@ -1371,7 +1372,9 @@ because xbuild doesn't support framework reference assemblies.
<PropertyGroup>
<_AndroidJarAndDexDirectory>$(_XATargetFrameworkDirectories)</_AndroidJarAndDexDirectory>
</PropertyGroup>
<GetMonoPlatformJar Condition=" '$(_AndroidUseMarshalMethods)' != 'True' " TargetFrameworkDirectory="$(_AndroidJarAndDexDirectory)">
<GetMonoPlatformJar
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' and '$(AndroidCodegenTarget)' == 'XAJavaInterop1' "
TargetFrameworkDirectory="$(_AndroidJarAndDexDirectory)">
<Output TaskParameter="MonoPlatformJarPath" PropertyName="MonoPlatformJarPath" />
<Output TaskParameter="MonoPlatformDexPath" PropertyName="MonoPlatformDexPath" />
</GetMonoPlatformJar>
Expand Down Expand Up @@ -1399,12 +1402,12 @@ because xbuild doesn't support framework reference assemblies.
/>

<Copy
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' "
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' and '$(AndroidCodegenTarget)' == 'XAJavaInterop1' "
SourceFiles="$(MonoPlatformJarPath)"
DestinationFiles="$(IntermediateOutputPath)android\bin\mono.android.jar"
SkipUnchangedFiles="true" />
<Touch
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' "
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' and '$(AndroidCodegenTarget)' == 'XAJavaInterop1' "
Files="$(IntermediateOutputPath)android\bin\mono.android.jar" />

<Touch Files="$(_AndroidStaticResourcesFlag)" AlwaysCreate="true" />
Expand All @@ -1413,7 +1416,10 @@ because xbuild doesn't support framework reference assemblies.
<FileWrites Include="$(_AndroidIntermediateJavaSourceDirectory)mono\MonoRuntimeProvider.java" />
<FileWrites Include="$(_AndroidIntermediateJavaSourceDirectory)mono\JavaInteropTypeManager.java" />
<FileWrites Include="$(MonoAndroidIntermediateAssemblyDir)machine.config" />
<FileWrites Condition=" '$(_AndroidUseMarshalMethods)' != 'True' " Include="$(IntermediateOutputPath)android\bin\mono.android.jar" />
<FileWrites
Condition=" '$(_AndroidUseMarshalMethods)' != 'True' and '$(AndroidCodegenTarget)' == 'XAJavaInterop1' "
Include="$(IntermediateOutputPath)android\bin\mono.android.jar"
/>
<FileWrites Include="$(_AndroidStaticResourcesFlag)" />
</ItemGroup>
</Target>
Expand Down
Loading