Skip to content

Commit da09a6f

Browse files
Log what is happening during path selection
Downstream, in the proprietary parts of Xamarin.Android, there is some strange errors occurring, such as: Task "InstallPackageAssemblies" InstallPackageAssemblies Task ... AndroidSdkPath: /Users/builder/android-toolchain/sdk AndroidNdkPath: /Users/builder/android-toolchain/ndk JavaSdkPath: /usr Xamarin.Android.Common.Debugging.targets(479,2): error ADB0000: Error finding Android/Java SDKs [/Users/builder/jenkins/workspace/monodroid-pr/monodroid/tests/runtime/Xamarin.Android.RuntimeTests.csproj] Xamarin.Android.Common.Debugging.targets(479,2): error ADB0000: System.InvalidOperationException: Could not determine Android SDK location. Please provide `androidSdkPath`. [/Users/builder/jenkins/workspace/monodroid-pr/monodroid/tests/runtime/Xamarin.Android.RuntimeTests.csproj] Xamarin.Android.Common.Debugging.targets(479,2): error ADB0000: at Xamarin.Android.Tools.AndroidSdkInfo..ctor (System.Action`2[T1,T2] logger, System.String androidSdkPath, System.String androidNdkPath, System.String javaSdkPath) [0x0004b] in <5fd439f4454d4cc18bc8c35d2b4c840c>:0 [/Users/builder/jenkins/workspace/monodroid-pr/monodroid/tests/runtime/Xamarin.Android.RuntimeTests.csproj] Xamarin.Android.Common.Debugging.targets(479,2): error ADB0000: at Xamarin.AndroidTools.AndroidSdk.Refresh (System.String androidSdkPath, System.String androidNdkPath, System.String javaSdkPath) [0x00000] in <9cb77bd2eef54f10a4aa7622ee40470d>:0 [/Users/builder/jenkins/workspace/monodroid-pr/monodroid/tests/runtime/Xamarin.Android.RuntimeTests.csproj] We are having a lot of trouble even figuring out what is going on, since the EXACT SAME paths worked earlier in the same build. Earlier in the log `ResolveSdks` worked just fine! I'm hoping this logging information will help us troubleshoot this issue and other scenarios in teh future.
1 parent 3ef860b commit da09a6f

File tree

1 file changed

+39
-9
lines changed

1 file changed

+39
-9
lines changed

src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,37 @@ public AndroidSdkBase (Action<TraceLevel, string> logger)
6161

6262
public virtual void Initialize (string androidSdkPath = null, string androidNdkPath = null, string javaSdkPath = null)
6363
{
64-
androidSdkPath = androidSdkPath ?? PreferedAndroidSdkPath;
65-
androidNdkPath = androidNdkPath ?? PreferedAndroidNdkPath;
66-
javaSdkPath = javaSdkPath ?? PreferedJavaSdkPath;
64+
if (string.IsNullOrEmpty (androidSdkPath)) {
65+
androidSdkPath = PreferedAndroidSdkPath;
66+
Logger (TraceLevel.Info, $"Trying {nameof (PreferedAndroidSdkPath)}: {androidSdkPath}");
67+
}
68+
if (string.IsNullOrEmpty (androidNdkPath)) {
69+
androidNdkPath = PreferedAndroidNdkPath;
70+
Logger (TraceLevel.Info, $"Trying {nameof (PreferedAndroidNdkPath)}: {androidNdkPath}");
71+
}
72+
if (string.IsNullOrEmpty (javaSdkPath)) {
73+
javaSdkPath = PreferedJavaSdkPath;
74+
Logger (TraceLevel.Info, $"Trying {nameof (PreferedJavaSdkPath)}: {javaSdkPath}");
75+
}
6776

68-
AndroidSdkPath = ValidateAndroidSdkLocation (androidSdkPath) ? androidSdkPath : AllAndroidSdks.FirstOrDefault ();
69-
AndroidNdkPath = ValidateAndroidNdkLocation (androidNdkPath) ? androidNdkPath : AllAndroidNdks.FirstOrDefault ();
70-
JavaSdkPath = ValidateJavaSdkLocation (javaSdkPath) ? javaSdkPath : GetJavaSdkPath ();
77+
if (ValidateAndroidSdkLocation (androidSdkPath)) {
78+
AndroidSdkPath = androidSdkPath;
79+
} else {
80+
AndroidSdkPath = AllAndroidSdks.FirstOrDefault ();
81+
Logger (TraceLevel.Info, $"Falling back to {nameof (AllAndroidSdks)}: {AndroidSdkPath}");
82+
}
83+
if (ValidateAndroidNdkLocation (androidNdkPath)) {
84+
AndroidNdkPath = androidNdkPath;
85+
} else {
86+
AndroidNdkPath = AllAndroidNdks.FirstOrDefault ();
87+
Logger (TraceLevel.Info, $"Falling back to {nameof (AllAndroidNdks)}: {AndroidNdkPath}");
88+
}
89+
if (ValidateJavaSdkLocation (javaSdkPath)) {
90+
JavaSdkPath = javaSdkPath;
91+
} else {
92+
JavaSdkPath = GetJavaSdkPath ();
93+
Logger (TraceLevel.Info, $"Falling back to {nameof (GetJavaSdkPath)}: {JavaSdkPath}");
94+
}
7195

7296
if (!string.IsNullOrEmpty (JavaSdkPath)) {
7397
JavaBinPath = Path.Combine (JavaSdkPath, "bin");
@@ -122,23 +146,29 @@ public string NdkHostPlatform {
122146
/// </summary>
123147
public bool ValidateAndroidSdkLocation (string loc)
124148
{
125-
return !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (Path.Combine (loc, "platform-tools"), Adb).Any ();
149+
bool result = !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (Path.Combine (loc, "platform-tools"), Adb).Any ();
150+
Logger (TraceLevel.Info, $"{nameof (ValidateAndroidSdkLocation)}: {loc}, result={result}");
151+
return result;
126152
}
127153

128154
/// <summary>
129155
/// Checks that a value is the location of a Java SDK.
130156
/// </summary>
131157
public virtual bool ValidateJavaSdkLocation (string loc)
132158
{
133-
return !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (Path.Combine (loc, "bin"), JarSigner).Any ();
159+
bool result = !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (Path.Combine (loc, "bin"), JarSigner).Any ();
160+
Logger (TraceLevel.Info, $"{nameof (ValidateJavaSdkLocation)}: {loc}, result={result}");
161+
return result;
134162
}
135163

136164
/// <summary>
137165
/// Checks that a value is the location of an Android SDK.
138166
/// </summary>
139167
public bool ValidateAndroidNdkLocation (string loc)
140168
{
141-
return !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (loc, NdkStack).Any ();
169+
bool result = !string.IsNullOrEmpty (loc) && ProcessUtils.FindExecutablesInDirectory (loc, NdkStack).Any ();
170+
Logger (TraceLevel.Info, $"{nameof (ValidateAndroidNdkLocation)}: {loc}, result={result}");
171+
return result;
142172
}
143173

144174
protected static string NullIfEmpty (string s)

0 commit comments

Comments
 (0)