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,