From d854df311a04fa94219b7d80169f04562b091093 Mon Sep 17 00:00:00 2001 From: Oleg Demchenko Date: Wed, 19 Sep 2018 15:14:24 -0400 Subject: [PATCH 1/5] Return tools path as opposed to returning tool name It seems like there was a bug in this method` Signed-off-by: Oleg Demchenko --- .../Sdks/AndroidSdkBase.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs index 1ea9121a..99da6e36 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs @@ -160,9 +160,13 @@ static string GetExecutablePath (string dir, string exe) if (string.IsNullOrEmpty (dir)) return exe; - foreach (var e in ProcessUtils.ExecutableFiles (exe)) - if (File.Exists (Path.Combine (dir, e))) - return e; + foreach (var e in ProcessUtils.ExecutableFiles (exe)) { + var toolPath = Path.Combine (dir, e); + + if (File.Exists (toolPath)) + return toolPath; + } + return exe; } } From ca0d7b6e9ce52b44787a5d14b8e255dc4b645869 Mon Sep 17 00:00:00 2001 From: Oleg Demchenko Date: Wed, 19 Sep 2018 15:16:56 -0400 Subject: [PATCH 2/5] Add AndroidToolsBinPath and ApkAnalyzer Signed-off-by: Oleg Demchenko --- src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs index 99da6e36..c46415a0 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs @@ -38,11 +38,13 @@ public AndroidSdkBase (Action logger) public string JavaSdkPath { get; private set; } public string JavaBinPath { get; private set; } public string AndroidToolsPath { get; private set; } + public string AndroidToolsBinPath { get; private set; } public string AndroidPlatformToolsPath { get; private set; } public string AndroidToolsPathShort { get; private set; } public string AndroidPlatformToolsPathShort { get; private set; } public virtual string Adb { get; protected set; } = "adb"; + public virtual string ApkAnalyzer { get; protected set; } = "apkanalyzer"; public virtual string Android { get; protected set; } = "android"; public virtual string Emulator { get; protected set; } = "emulator"; public virtual string Monitor { get; protected set; } = "monitor"; @@ -77,6 +79,7 @@ public virtual void Initialize (string androidSdkPath = null, string androidNdkP if (!string.IsNullOrEmpty (AndroidSdkPath)) { AndroidToolsPath = Path.Combine (AndroidSdkPath, "tools"); + AndroidToolsBinPath = Path.Combine (AndroidToolsPath, "bin"); AndroidToolsPathShort = GetShortFormPath (AndroidToolsPath); AndroidPlatformToolsPath = Path.Combine (AndroidSdkPath, "platform-tools"); AndroidPlatformToolsPathShort = GetShortFormPath (AndroidPlatformToolsPath); @@ -96,6 +99,7 @@ public virtual void Initialize (string androidSdkPath = null, string androidNdkP // we need to look for extensions other than the default .exe|.bat // google have a habbit of changing them. Adb = GetExecutablePath (AndroidPlatformToolsPath, Adb); + ApkAnalyzer = GetExecutablePath (AndroidToolsBinPath, ApkAnalyzer); Android = GetExecutablePath (AndroidToolsPath, Android); Emulator = GetExecutablePath (AndroidToolsPath, Emulator); Monitor = GetExecutablePath (AndroidToolsPath, Monitor); From f072b54b7a1df4edb97d2632a555e13985ef6ee9 Mon Sep 17 00:00:00 2001 From: Oleg Demchenko Date: Wed, 19 Sep 2018 15:17:37 -0400 Subject: [PATCH 3/5] Surface ApkAnalyzerPath in AndroidSdkInfo Signed-off-by: Oleg Demchenko --- src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs b/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs index 5738fb1f..21309186 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs @@ -113,6 +113,10 @@ public bool IsPlatformInstalled (int apiLevel) return apiLevel != 0 && Directory.Exists (GetPlatformDirectory (apiLevel)); } + public string ApkAnalyzerPath { + get { return sdk.ApkAnalyzer; } + } + public string AndroidNdkPath { get { return sdk.AndroidNdkPath; } } From c518af478866034963a46b0057930f8500ffe1b9 Mon Sep 17 00:00:00 2001 From: Oleg Demchenko Date: Wed, 19 Sep 2018 16:22:39 -0400 Subject: [PATCH 4/5] Revert "Return tools path as opposed to returning tool name" This reverts commit d854df311a04fa94219b7d80169f04562b091093. --- .../Sdks/AndroidSdkBase.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs index c46415a0..31d1b893 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/Sdks/AndroidSdkBase.cs @@ -164,13 +164,9 @@ static string GetExecutablePath (string dir, string exe) if (string.IsNullOrEmpty (dir)) return exe; - foreach (var e in ProcessUtils.ExecutableFiles (exe)) { - var toolPath = Path.Combine (dir, e); - - if (File.Exists (toolPath)) - return toolPath; - } - + foreach (var e in ProcessUtils.ExecutableFiles (exe)) + if (File.Exists (Path.Combine (dir, e))) + return e; return exe; } } From 5176caf7c8e18e034696dc6f8098433816e9eed9 Mon Sep 17 00:00:00 2001 From: Oleg Demchenko Date: Wed, 19 Sep 2018 16:23:37 -0400 Subject: [PATCH 5/5] Combine toolname with the actual path --- src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs b/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs index 21309186..24064f99 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/AndroidSdkInfo.cs @@ -114,7 +114,7 @@ public bool IsPlatformInstalled (int apiLevel) } public string ApkAnalyzerPath { - get { return sdk.ApkAnalyzer; } + get { return Path.Combine (sdk.AndroidToolsBinPath, sdk.ApkAnalyzer); } } public string AndroidNdkPath {