1 #ifndef _Android_Android_h_ 2 #define _Android_Android_h_ 3 4 #include <Core/Core.h> 5 #include <ide/Core/Core.h> 6 7 #include "Executables.h" 8 #include "Devices.h" 9 10 namespace Upp { 11 12 class Android { 13 public: 14 static String GetScriptExt(); 15 static String GetCmdExt(); 16 17 static void NormalizeVersions(Vector<String>& versions); 18 static void RemoveVersionsNormalization(Vector<String>& versions); 19 20 private: 21 static String FindVersionsPrefix(const Vector<String>& versions); 22 static String FindLongestVersion(const Vector<String>& versions); 23 24 private: 25 Android(); 26 Android(const Android&); 27 Android& operator=(const Android&); 28 virtual ~Android(); 29 }; 30 31 class AndroidSDK { 32 public: 33 static String GetDownloadUrl(); 34 35 public: 36 AndroidSDK(); 37 AndroidSDK(const String& path, bool deduceValues = false); 38 virtual ~AndroidSDK(); 39 40 void DeducePathReleatedValues(); 41 void DeducePlatform(); 42 void DeduceBuildToolsRelease(); 43 44 bool Validate() const; 45 bool ValidatePlatform() const; 46 bool ValidateBuildTools() const; 47 48 Vector<String> FindPlatforms() const; 49 Vector<String> FindBuildToolsReleases() const; 50 String FindDefaultPlatform() const; 51 String FindDefaultBuildToolsRelease() const; 52 53 Vector<AndroidDevice> FindDevices() const; 54 Vector<AndroidVirtualDevice> FindVirtualDevices() const; 55 56 public: MakeAdb()57 Adb MakeAdb() const { return Adb(AdbPath()); } 58 59 public: 60 String BinDir() const; 61 String BuildToolsDir() const; 62 String PlatformsDir() const; 63 String ConcreteBuildToolsDir() const; 64 String ConcretePlatformDir() const; 65 String PlatformToolsDir() const; 66 String ToolsDir() const; 67 AaptPath()68 String AaptPath() const { return ConcreteBuildToolsDir() + DIR_SEPS + "aapt" + GetExeExt(); } DxPath()69 String DxPath() const { return ConcreteBuildToolsDir() + DIR_SEPS + "dx" + Android::GetScriptExt(); } ZipalignPath()70 String ZipalignPath() const { return ConcreteBuildToolsDir() + DIR_SEPS + "zipalign" + GetExeExt(); } AndroidJarPath()71 String AndroidJarPath() const { return ConcretePlatformDir() + DIR_SEPS + "android.jar"; } AdbPath()72 String AdbPath() const { return PlatformToolsDir() + DIR_SEPS + "adb" + GetExeExt(); } AndroidPath()73 String AndroidPath() const { return ToolsDir() + DIR_SEPS + "android" + Android::GetScriptExt(); } EmulatorPath()74 String EmulatorPath() const { return ToolsDir() + DIR_SEPS + "emulator" + GetExeExt(); } MonitorPath()75 String MonitorPath() const { return ToolsDir() + DIR_SEPS + "monitor" + Android::GetScriptExt(); } 76 77 public: GetLauchSDKManagerCmd()78 String GetLauchSDKManagerCmd() const { return NormalizeExePath(AndroidPath()) + " sdk"; } GetLauchAVDManagerCmd()79 String GetLauchAVDManagerCmd() const { return NormalizeExePath(AndroidPath()) + " avd"; } 80 81 public: GetPath()82 String GetPath() const { return this->path; } GetPlatform()83 String GetPlatform() const { return this->platform; } GetBuildToolsRelease()84 String GetBuildToolsRelease() const { return this->buildToolsRelease; } 85 SetPath(const String & path)86 void SetPath(const String& path) { this->path = path; } SetPlatform(const String & platform)87 void SetPlatform(const String& platform) { this->platform = platform; } SetBuildToolsRelease(const String & buildToolsRelease)88 void SetBuildToolsRelease(const String& buildToolsRelease) { this->buildToolsRelease = buildToolsRelease; } 89 90 private: 91 String path; 92 String platform; 93 String buildToolsRelease; 94 }; 95 96 class AndroidNDK { 97 public: 98 static String GetDownloadUrl(); 99 100 public: 101 AndroidNDK(); 102 AndroidNDK(const String& path); 103 virtual ~AndroidNDK(); 104 105 bool Validate() const; 106 107 String FindDefaultPlatform() const; 108 String FindDefaultToolchain() const; 109 String FindDefaultCppRuntime() const; 110 111 Vector<String> FindPlatforms() const; 112 Vector<String> FindToolchains() const; 113 Vector<String> FindCppRuntimes() const; 114 115 public: 116 String GetIncludeDir() const; 117 String GetCppIncludeDir(const String& cppRuntime) const; 118 GetPlatformsDir()119 String GetPlatformsDir() const { return path + DIR_SEPS + "platforms"; } GetToolchainsDir()120 String GetToolchainsDir() const { return path + DIR_SEPS + "toolchains"; } GetSourcesDir()121 String GetSourcesDir() const { return path + DIR_SEPS + "sources"; } 122 GetNdkBuildPath()123 String GetNdkBuildPath() const { return path + DIR_SEPS + "ndk-build" + Android::GetCmdExt(); } GetGdbPath()124 String GetGdbPath() const { return path + DIR_SEPS + "ndk-gdb"; } 125 126 public: GetPath()127 String GetPath() const { return this->path; } 128 SetPath(const String & path)129 void SetPath(const String& path) { this->path = path; } 130 131 private: 132 String path; 133 }; 134 135 class Apk { 136 public: 137 Apk(const String& path, const AndroidSDK& androidSDK); 138 virtual ~Apk(); 139 140 String FindPackageName() const; 141 String FindLaunchableActivity() const; 142 143 private: 144 String FindValueInAndroidManifest(const String& badge, const String& tag) const; 145 String FindBadgeTagValue(const String& badge, const String& tag) const; 146 147 private: 148 String path; 149 AndroidSDK sdk; 150 }; 151 152 class AndroidManifest { 153 public: 154 AndroidManifest(); 155 virtual ~AndroidManifest(); 156 157 private: 158 159 }; 160 161 } 162 163 #endif 164