diff --git a/Directory.Build.props b/Directory.Build.props index 47772855b..521e68a47 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -43,10 +43,10 @@ $(MSBuildThisFileDirectory)external\xamarin-android-tools - 1.6 - 1.6 - $([System.IO.Path]::GetDirectoryName('$(JavaCPath)'))\..\jre\lib\rt.jar - <_JavacSourceOptions>-source $(JavacSourceVersion) -target $(JavacTargetVersion) -bootclasspath "$(JreRtJarPath)" + 1.8 + 1.8 + <_BootClassPath Condition=" '$(JreRtJarPath)' != '' ">-bootclasspath "$(JreRtJarPath)" + <_JavacSourceOptions>-source $(JavacSourceVersion) -target $(JavacTargetVersion) $(_BootClassPath) <_XamarinAndroidCecilPath Condition=" '$(CecilSourceDirectory)' != '' And Exists('$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll') ">$(UtilityOutputFullPath)Xamarin.Android.Cecil.dll diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs index 028d35f7c..ea789d86b 100644 --- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs +++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs @@ -17,10 +17,6 @@ namespace Java.Interop.BootstrapTasks { public class JdkInfo : Task { - const string JARSIGNER = "jarsigner.exe"; - const string MDREG_KEY = @"SOFTWARE\Novell\Mono for Android"; - const string MDREG_JAVA_SDK = "JavaSdkDirectory"; - public string JdksRoot { get; set; } public string MaximumJdkVersion { get; set; } @@ -50,13 +46,18 @@ public override bool Execute () return false; } + var rtJarPaths = new[]{ + Path.Combine (Path.GetDirectoryName (jdk.JavacPath), "..", "jre", "lib", "rt.jar"), + }; + var rtJarPath = rtJarPaths.FirstOrDefault (p => File.Exists (p)); + JavaHomePath = jdk.HomePath; Directory.CreateDirectory (Path.GetDirectoryName (PropertyFile.ItemSpec)); Directory.CreateDirectory (Path.GetDirectoryName (MakeFragmentFile.ItemSpec)); - WritePropertyFile (jdk.JarPath, jdk.JavacPath, jdk.JdkJvmPath, jdk.IncludePath); - WriteMakeFragmentFile (jdk.JarPath, jdk.JavacPath, jdk.JdkJvmPath, jdk.IncludePath); + WritePropertyFile (jdk.JarPath, jdk.JavacPath, jdk.JdkJvmPath, rtJarPath, jdk.IncludePath); + WriteMakeFragmentFile (jdk.JarPath, jdk.JavacPath, jdk.JdkJvmPath, rtJarPath, jdk.IncludePath); return !Log.HasLoggedErrors; } @@ -92,7 +93,7 @@ Action CreateLogger () return logger; } - void WritePropertyFile (string jarPath, string javacPath, string jdkJvmPath, IEnumerable includes) + void WritePropertyFile (string jarPath, string javacPath, string jdkJvmPath, string rtJarPath, IEnumerable includes) { var msbuild = XNamespace.Get ("http://schemas.microsoft.com/developer/msbuild/2003"); var project = new XElement (msbuild + "Project", @@ -106,17 +107,28 @@ void WritePropertyFile (string jarPath, string javacPath, string jdkJvmPath, IEn new XElement (msbuild + "JavaCPath", new XAttribute ("Condition", " '$(JavaCPath)' == '' "), javacPath), new XElement (msbuild + "JarPath", new XAttribute ("Condition", " '$(JarPath)' == '' "), - jarPath))); + jarPath), + CreateJreRtJarPath (msbuild, rtJarPath))); project.Save (PropertyFile.ItemSpec); } - void WriteMakeFragmentFile (string jarPath, string javacPath, string jdkJvmPath, IEnumerable includes) + static XElement CreateJreRtJarPath (XNamespace msbuild, string rtJarPath) + { + if (rtJarPath == null) + return null; + return new XElement (msbuild + "JreRtJarPath", + new XAttribute ("Condition", " '$(JreRtJarPath)' == '' "), + rtJarPath); + } + + void WriteMakeFragmentFile (string jarPath, string javacPath, string jdkJvmPath, string rtJarPath, IEnumerable includes) { using (var o = new StreamWriter (MakeFragmentFile.ItemSpec)) { o.WriteLine ($"export JI_JAR_PATH := {jarPath}"); o.WriteLine ($"export JI_JAVAC_PATH := {javacPath}"); o.WriteLine ($"export JI_JDK_INCLUDE_PATHS := {string.Join (" ", includes)}"); o.WriteLine ($"export JI_JVM_PATH := {jdkJvmPath}"); + o.WriteLine ($"export JI_RT_JAR_PATH := {rtJarPath}"); } } } diff --git a/external/xamarin-android-tools b/external/xamarin-android-tools index bfb66f38b..36d7fee5f 160000 --- a/external/xamarin-android-tools +++ b/external/xamarin-android-tools @@ -1 +1 @@ -Subproject commit bfb66f38b77421ac373c06a5f8407e1f9c793cc8 +Subproject commit 36d7fee5f7e0ef6ffa28970687db85b36947a3e6 diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/IJavaInterfaceTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/IJavaInterfaceTests.cs index 0d7492dc5..f1abac9f5 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/IJavaInterfaceTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/IJavaInterfaceTests.cs @@ -16,7 +16,7 @@ public void ClassFile_WithIJavaInterface_class () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 23, AccessFlags = ClassAccessFlags.Interface | ClassAccessFlags.Abstract, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaAnnotationTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaAnnotationTests.cs index 555d1a166..e0ffadc4e 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaAnnotationTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaAnnotationTests.cs @@ -16,7 +16,7 @@ public void ClassFile_WithJavaAnnotation_class () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 23, AccessFlags = ClassAccessFlags.Public | ClassAccessFlags.Interface | ClassAccessFlags.Abstract | ClassAccessFlags.Annotation, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaEnumTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaEnumTests.cs index 03f7c18b0..559e0491e 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaEnumTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaEnumTests.cs @@ -20,7 +20,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 53, AccessFlags = ClassAccessFlags.Final | ClassAccessFlags.Super | ClassAccessFlags.Enum, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.1Tests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.1Tests.cs index 83294c424..35e515c53 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.1Tests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.1Tests.cs @@ -16,7 +16,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 47, AccessFlags = ClassAccessFlags.Super, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.ASCTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.ASCTests.cs index 27e154435..89c4fda3f 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.ASCTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.ASCTests.cs @@ -16,7 +16,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 23, Deprecated = true, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.PSCTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.PSCTests.cs index e52335a45..dd9f4faaf 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.PSCTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.PSCTests.cs @@ -16,7 +16,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 20, AccessFlags = ClassAccessFlags.Public | ClassAccessFlags.Super | ClassAccessFlags.Abstract, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNC.RPNCTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNC.RPNCTests.cs index 85119703f..2af262529 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNC.RPNCTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNC.RPNCTests.cs @@ -16,7 +16,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 46, AccessFlags = ClassAccessFlags.Public | ClassAccessFlags.Super | ClassAccessFlags.Abstract, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNCTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNCTests.cs index d25ddfcdc..87807ccbc 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNCTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaType.RNCTests.cs @@ -16,7 +16,7 @@ public void ClassFileDescription () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 44, AccessFlags = ClassAccessFlags.Public | ClassAccessFlags.Super | ClassAccessFlags.Abstract, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaTypeTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaTypeTests.cs index 00ed89f87..8c828058e 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaTypeTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/JavaTypeTests.cs @@ -18,7 +18,7 @@ public void ClassFile_WithJavaType_class () { var c = LoadClassFile ("JavaType.class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 195, AccessFlags = ClassAccessFlags.Public | ClassAccessFlags.Super, diff --git a/tests/Xamarin.Android.Tools.Bytecode-Tests/NonGenericGlobalTypeTests.cs b/tests/Xamarin.Android.Tools.Bytecode-Tests/NonGenericGlobalTypeTests.cs index 9b8e2b800..c599c791a 100644 --- a/tests/Xamarin.Android.Tools.Bytecode-Tests/NonGenericGlobalTypeTests.cs +++ b/tests/Xamarin.Android.Tools.Bytecode-Tests/NonGenericGlobalTypeTests.cs @@ -16,7 +16,7 @@ public void ClassFile_WithNonGenericGlobalType_class () { var c = LoadClassFile (JavaType + ".class"); new ExpectedTypeDeclaration { - MajorVersion = 0x32, + MajorVersion = 0x34, MinorVersion = 0, ConstantPoolCount = 16, AccessFlags = ClassAccessFlags.Super,