Skip to content

Commit e308768

Browse files
committed
[WIP] Support for NET6 builds of the Java runtime
1 parent 1802827 commit e308768

File tree

11 files changed

+58
-16
lines changed

11 files changed

+58
-16
lines changed

.external

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
xamarin/monodroid:main@2e93b630e47701dae56f426fe5934846d571832b
1+
grendello/monodroid:net6-native@9f5d2e031c207a0174f2f6d126835311ba58754d
22
mono/mono:2020-02@c66141a8c7ba2566c578c2dd012b2b723e006213

build-tools/create-pkg/create-pkg.targets

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
<MSBuildFrameworksDir>$(XAFrameworkDir)\lib\xamarin.android\xbuild-frameworks\MonoAndroid</MSBuildFrameworksDir>
2828
</PropertyGroup>
2929
<RemoveDir Directories="$(PayloadDir)" />
30+
<!-- Remove items with '%(ExcludeFromLegacy)' == 'true' metadata -->
31+
<MSBuildItemsUnix Remove="@(MSBuildItemsUnix)" Condition=" '%(MSBuildItemsUnix.ExcludeFromLegacy)' == 'true' " />
3032
<Copy
3133
SourceFiles="@(FrameworkItemsUnix)"
3234
DestinationFiles="@(FrameworkItemsUnix->'$(MSBuildFrameworksDir)\%(RelativePath)')"

build-tools/create-vsix/create-vsix.targets

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
<ReferenceAssemblies Include="@(FrameworkItemsWin)" >
3333
<VSIXSubPath>Microsoft/Framework/MonoAndroid/$([System.IO.Path]::GetDirectoryName(%(RelativePath)))</VSIXSubPath>
3434
</ReferenceAssemblies>
35+
<!-- Remove items with '%(ExcludeFromLegacy)' == 'true' metadata -->
36+
<MSBuildItemsWin Remove="@(MSBuildItemsWin)" Condition=" '%(MSBuildItemsWin.ExcludeFromLegacy)' == 'true' " />
3537
<MSBuild Include="@(MSBuildItemsWin)" >
3638
<VSIXSubPath>Xamarin/Android/$([System.IO.Path]::GetDirectoryName(%(RelativePath)))</VSIXSubPath>
3739
</MSBuild>

build-tools/installers/create-installers.targets

+8-4
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,14 @@
227227
<_MSBuildFiles Include="$(MSBuildSrcDir)\startup-xf.aotprofile" />
228228
<_MSBuildFiles Include="$(MSBuildSrcDir)\r8.jar" />
229229
<_MSBuildFiles Include="$(MSBuildSrcDir)\bundletool.jar" ExcludeFromAndroidNETSdk="true" />
230-
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime.jar" />
231-
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev.jar" />
232-
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime.dex" />
233-
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev.dex" />
230+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime.jar" ExcludeFromAndroidNETSdk="true" />
231+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev.jar" ExcludeFromAndroidNETSdk="true" />
232+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime.dex" ExcludeFromAndroidNETSdk="true" />
233+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev.dex" ExcludeFromAndroidNETSdk="true" />
234+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_net6.jar" ExcludeFromLegacy="true" />
235+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev_net6.jar" ExcludeFromLegacy="true" />
236+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_net6.dex" ExcludeFromLegacy="true" />
237+
<_MSBuildFiles Include="$(MSBuildSrcDir)\java_runtime_fastdev_net6.dex" ExcludeFromLegacy="true" />
234238
<_MSBuildFiles Include="$(MSBuildSrcDir)\manifestmerger.jar" />
235239
<_MSBuildFiles Include="$(MSBuildSrcDir)\protobuf-net.dll" />
236240
<_MSBuildFiles Include="$(MSBuildSrcDir)\SgmlReaderDll.dll" />

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

+5-2
Original file line numberDiff line numberDiff line change
@@ -1259,8 +1259,11 @@ because xbuild doesn't support framework reference assemblies.
12591259

12601260
<Target Name="_CollectRuntimeJarFilenames">
12611261
<PropertyGroup>
1262-
<_RuntimeJar>$(MSBuildThisFileDirectory)\java_runtime.jar</_RuntimeJar>
1263-
<_RuntimeDex>$(MSBuildThisFileDirectory)\java_runtime.dex</_RuntimeDex>
1262+
<_RuntimeJar Condition=" '$(UsingAndroidNETSdk)' != 'True' ">$(MSBuildThisFileDirectory)\java_runtime.jar</_RuntimeJar>
1263+
<_RuntimeDex Condition=" '$(UsingAndroidNETSdk)' != 'True' ">$(MSBuildThisFileDirectory)\java_runtime.dex</_RuntimeDex>
1264+
1265+
<_RuntimeJar Condition=" '$(UsingAndroidNETSdk)' == 'True' ">$(MSBuildThisFileDirectory)\java_runtime_net6.jar</_RuntimeJar>
1266+
<_RuntimeDex Condition=" '$(UsingAndroidNETSdk)' == 'True' ">$(MSBuildThisFileDirectory)\java_runtime_net6.dex</_RuntimeDex>
12641267
</PropertyGroup>
12651268
</Target>
12661269

src/java-runtime/java-runtime.targets

+17-2
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,29 @@
77
<OutputDex>$(OutputPath)java_runtime.dex</OutputDex>
88
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release</IntermediateRuntimeOutputPath>
99
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release.txt</IntermediateRuntimeClassesTxt>
10-
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug\BuildConfig.java</RemoveItems>
10+
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java</RemoveItems>
1111
</_RuntimeOutput>
1212
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev.jar">
1313
<OutputJar>$(OutputPath)java_runtime_fastdev.jar</OutputJar>
1414
<OutputDex>$(OutputPath)java_runtime_fastdev.dex</OutputDex>
1515
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)fastdev</IntermediateRuntimeOutputPath>
1616
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)fastdev.txt</IntermediateRuntimeClassesTxt>
17-
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release\BuildConfig.java</RemoveItems>
17+
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java</RemoveItems>
18+
</_RuntimeOutput>
19+
20+
<_RuntimeOutput Include="$(OutputPath)java_runtime_net6.jar">
21+
<OutputJar>$(OutputPath)java_runtime_net6.jar</OutputJar>
22+
<OutputDex>$(OutputPath)java_runtime_net6.dex</OutputDex>
23+
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release-net6</IntermediateRuntimeOutputPath>
24+
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release-net6.txt</IntermediateRuntimeClassesTxt>
25+
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\release\BuildConfig.java</RemoveItems>
26+
</_RuntimeOutput>
27+
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev_net6.jar">
28+
<OutputJar>$(OutputPath)java_runtime_fastdev_net6.jar</OutputJar>
29+
<OutputDex>$(OutputPath)java_runtime_fastdev_net6.dex</OutputDex>
30+
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)fastdev-net6</IntermediateRuntimeOutputPath>
31+
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)fastdev-net6.txt</IntermediateRuntimeClassesTxt>
32+
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\debug\BuildConfig.java</RemoveItems>
1833
</_RuntimeOutput>
1934
</ItemGroup>
2035

src/java-runtime/java/mono/android/MonoPackageManager.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,15 @@ public static void LoadApplication (Context context, ApplicationInfo runtimePack
7979
}
8080
System.loadLibrary("xamarin-app");
8181

82-
// .net5+ APKs don't contain `libmono-native.so` but we can't just perform a file existence check
83-
// because we might be running with embedded DSOs enabled in which case the check would fail and we
84-
// would have to catch the exception anyway in this case.
85-
try {
86-
System.loadLibrary("mono-native");
87-
} catch (java.lang.UnsatisfiedLinkError ex) {
88-
Log.i ("monodroid", "Failed to preload libmono-native.so (may not exist), ignoring", ex);
82+
if (!BuildConfig.DotNetRuntime) {
83+
// .net5+ APKs don't contain `libmono-native.so` but we can't just perform a file existence check
84+
// because we might be running with embedded DSOs enabled in which case the check would fail and we
85+
// would have to catch the exception anyway in this case.
86+
try {
87+
System.loadLibrary("mono-native");
88+
} catch (java.lang.UnsatisfiedLinkError ex) {
89+
Log.i ("monodroid", "Failed to preload libmono-native.so (may not exist), ignoring", ex);
90+
}
8991
}
9092

9193
System.loadLibrary("monodroid");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mono.android;
2+
3+
public class BuildConfig {
4+
public static boolean Debug = true;
5+
public static boolean DotNetRuntime = true;
6+
}

src/java-runtime/java/mono/android/debug/BuildConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
public class BuildConfig {
44
public static boolean Debug = true;
5+
public static boolean DotNetRuntime = false;
56
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package mono.android;
2+
3+
public class BuildConfig {
4+
public static boolean Debug = false;
5+
public static boolean DotNetRuntime = true;
6+
}

src/java-runtime/java/mono/android/release/BuildConfig.java

+1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
public class BuildConfig {
44
public static boolean Debug = false;
5+
public static boolean DotNetRuntime = false;
56
}

0 commit comments

Comments
 (0)