11using Microsoft . Build . Framework ;
2- using Microsoft . Build . Utilities ;
32using System . Collections . Generic ;
43using System . IO ;
54using System . Text ;
65using Xamarin . Android . Build . Utilities ;
76
87namespace Xamarin . Android . BuildTools . PrepTasks
98{
10- public class JdkInfo : Task
9+ public class JdkInfo : JavaPaths
1110 {
1211 [ Required ]
1312 public ITaskItem Output { get ; set ; }
1413
15- public string AndroidNdkPath { get ; set ; }
16-
17- public string AndroidSdkPath { get ; set ; }
18-
19- public string JavaSdkPath { get ; set ; }
20-
21- public override bool Execute ( )
14+ protected override void LogMessages ( )
2215 {
2316 Log . LogMessage ( MessageImportance . Low , $ "Task { nameof ( JdkInfo ) } ") ;
2417 Log . LogMessage ( MessageImportance . Low , $ " { nameof ( Output ) } : { Output } ") ;
2518 Log . LogMessage ( MessageImportance . Low , $ " { nameof ( AndroidNdkPath ) } : { AndroidNdkPath } ") ;
2619 Log . LogMessage ( MessageImportance . Low , $ " { nameof ( AndroidSdkPath ) } : { AndroidSdkPath } ") ;
2720 Log . LogMessage ( MessageImportance . Low , $ " { nameof ( JavaSdkPath ) } : { JavaSdkPath } ") ;
21+ }
2822
29- AndroidLogger . Error += ErrorHandler ;
30- AndroidLogger . Warning += WarningHandler ;
31- AndroidLogger . Info += InfoHandler ;
32- try {
33- AndroidSdk . Refresh ( AndroidSdkPath , AndroidNdkPath , JavaSdkPath ) ;
34-
35- var javaSdkPath = AndroidSdk . JavaSdkPath ;
36- if ( string . IsNullOrEmpty ( javaSdkPath ) ) {
37- Log . LogError ( "JavaSdkPath is blank" ) ;
38- return false ;
39- }
40-
41- Log . LogMessage ( MessageImportance . Low , $ " { nameof ( AndroidSdk . JavaSdkPath ) } : { javaSdkPath } ") ;
42-
43- var jvmPath = Path . Combine ( javaSdkPath , "jre" , "bin" , "server" , "jvm.dll" ) ;
44- if ( ! File . Exists ( jvmPath ) ) {
45- Log . LogError ( $ "JdkJvmPath not found at { jvmPath } ") ;
46- return false ;
47- }
23+ protected override bool SetOutput ( string javaSdkPath )
24+ {
25+ var jvmPath = Path . Combine ( javaSdkPath , "jre" , "bin" , "server" , "jvm.dll" ) ;
26+ if ( ! File . Exists ( jvmPath ) ) {
27+ Log . LogError ( $ "JdkJvmPath not found at { jvmPath } ") ;
28+ return false ;
29+ }
4830
49- var javaIncludePath = Path . Combine ( javaSdkPath , "include" ) ;
50- var includes = new List < string > { javaIncludePath } ;
51- includes . AddRange ( Directory . GetDirectories ( javaIncludePath ) ) ; //Include dirs such as "win32"
31+ var javaIncludePath = Path . Combine ( javaSdkPath , "include" ) ;
32+ var includes = new List < string > { javaIncludePath } ;
33+ includes . AddRange ( Directory . GetDirectories ( javaIncludePath ) ) ; //Include dirs such as "win32"
5234
53- var includeXmlTags = new StringBuilder ( ) ;
54- foreach ( var include in includes ) {
55- includeXmlTags . AppendLine ( $ "<JdkIncludePath Include=\" { include } \" />") ;
56- }
35+ var includeXmlTags = new StringBuilder ( ) ;
36+ foreach ( var include in includes ) {
37+ includeXmlTags . AppendLine ( $ "<JdkIncludePath Include=\" { include } \" />") ;
38+ }
5739
58- Directory . CreateDirectory ( Path . GetDirectoryName ( Output . ItemSpec ) ) ;
59- File . WriteAllText ( Output . ItemSpec , $@ "<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
40+ Directory . CreateDirectory ( Path . GetDirectoryName ( Output . ItemSpec ) ) ;
41+ File . WriteAllText ( Output . ItemSpec , $@ "<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
6042 <Choose>
6143 <When Condition="" '$(JdkJvmPath)' == '' "">
6244 <PropertyGroup>
@@ -69,28 +51,7 @@ public override bool Execute ()
6951 </Choose>
7052</Project>" ) ;
7153
72- return ! Log . HasLoggedErrors ;
73- }
74- finally {
75- AndroidLogger . Error -= ErrorHandler ;
76- AndroidLogger . Warning -= WarningHandler ;
77- AndroidLogger . Info -= InfoHandler ;
78- }
79- }
80-
81- private void ErrorHandler ( string task , string message )
82- {
83- Log . LogError ( $ "{ task } : { message } ") ;
84- }
85-
86- private void WarningHandler ( string task , string message )
87- {
88- Log . LogWarning ( $ "{ task } : { message } ") ;
89- }
90-
91- private void InfoHandler ( string task , string message )
92- {
93- Log . LogMessage ( MessageImportance . Low , $ "{ task } : { message } ") ;
54+ return ! Log . HasLoggedErrors ;
9455 }
9556 }
9657}
0 commit comments