Skip to content

Commit f298a21

Browse files
Removed all the envrionemtn variable setup related codes. We dont need to setup env variables as we are following isolated setup approach
1 parent ce7054a commit f298a21

1 file changed

Lines changed: 0 additions & 284 deletions

File tree

Framework/install_handler/android/android_sdk.py

Lines changed: 0 additions & 284 deletions
Original file line numberDiff line numberDiff line change
@@ -250,145 +250,6 @@ async def _extract_cmdline_tools(archive_path: Path, sdk_root: Path) -> bool:
250250

251251

252252

253-
async def _set_env_vars(sdk_root: Path) -> None:
254-
print("[installer][android-sdk] Setting environment variables...")
255-
await send_response({
256-
"action": "status",
257-
"data": {
258-
"category": "Android",
259-
"name": "Android SDK",
260-
"status": "installing",
261-
"comment": "Setting ANDROID_HOME and PATH...",
262-
}
263-
})
264-
265-
266-
env_paths = [
267-
str(sdk_root / "platform-tools"),
268-
str(sdk_root / "emulator"),
269-
str(sdk_root / "cmdline-tools" / "latest" / "bin"),
270-
]
271-
272-
273-
if platform.system() == "Windows":
274-
try:
275-
import winreg
276-
# Set ANDROID_HOME in user environment variables (no admin needed)
277-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
278-
r"Environment",
279-
0, winreg.KEY_ALL_ACCESS) as key:
280-
winreg.SetValueEx(key, "ANDROID_HOME", 0, winreg.REG_EXPAND_SZ, str(sdk_root))
281-
print("[installer][android-sdk] ANDROID_HOME set in Windows user environment")
282-
283-
# Update PATH in user environment variables
284-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
285-
r"Environment",
286-
0, winreg.KEY_ALL_ACCESS) as key:
287-
try:
288-
current_path, _ = winreg.QueryValueEx(key, "Path")
289-
except FileNotFoundError:
290-
current_path = ""
291-
292-
parts = current_path.split(";") if current_path else []
293-
updated = False
294-
for p in env_paths:
295-
if p not in parts:
296-
parts.append(p)
297-
updated = True
298-
if updated:
299-
winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, ";".join(parts))
300-
print("[installer][android-sdk] Android SDK paths added to Windows user environment")
301-
except Exception as e:
302-
print(f"[installer][android-sdk] Windows env update failed (continuing for user session): {e}")
303-
elif platform.system() == "Linux":
304-
# Linux - update shell configuration files
305-
user_home = Path.home()
306-
shell_configs = [
307-
user_home / ".bashrc",
308-
user_home / ".zshrc",
309-
user_home / ".profile"
310-
]
311-
312-
export_lines = [
313-
f"export ANDROID_HOME={sdk_root}",
314-
f"export ANDROID_SDK_ROOT={sdk_root}",
315-
f"export PATH={':'.join(env_paths)}:$PATH"
316-
]
317-
318-
updated = False
319-
for config_file in shell_configs:
320-
if config_file.exists():
321-
try:
322-
with open(config_file, 'r') as f:
323-
content = f.read()
324-
needs_update = any(export not in content for export in export_lines)
325-
326-
if needs_update:
327-
with open(config_file, 'a') as f:
328-
f.write("\n# Android SDK environment variables\n" + "\n".join(export_lines) + "\n")
329-
print(f"[installer][android-sdk] Updated {config_file} with Android SDK paths")
330-
updated = True
331-
except Exception as e:
332-
print(f"[installer][android-sdk] Failed to update {config_file}: {e}")
333-
334-
if updated:
335-
print("[!] Please restart your terminal or run 'source ~/.bashrc' (or your shell config)")
336-
elif platform.system() == "Darwin": # iOS/macOS
337-
# iOS/macOS - update shell configuration files
338-
user_home = Path.home()
339-
shell_configs = [
340-
user_home / ".bash_profile",
341-
user_home / ".zshrc",
342-
user_home / ".profile"
343-
]
344-
345-
export_lines = [
346-
f"export ANDROID_HOME={sdk_root}",
347-
f"export ANDROID_SDK_ROOT={sdk_root}",
348-
f"export PATH={':'.join(env_paths)}:$PATH"
349-
]
350-
351-
updated = False
352-
for config_file in shell_configs:
353-
if config_file.exists():
354-
try:
355-
with open(config_file, 'r') as f:
356-
content = f.read()
357-
needs_update = any(export not in content for export in export_lines)
358-
359-
if needs_update:
360-
with open(config_file, 'a') as f:
361-
f.write("\n# Android SDK environment variables\n" + "\n".join(export_lines) + "\n")
362-
print(f"[installer][android-sdk] Updated {config_file} with Android SDK paths")
363-
updated = True
364-
except Exception as e:
365-
print(f"[installer][android-sdk] Failed to update {config_file}: {e}")
366-
367-
if updated:
368-
print("[!] Please restart your terminal or run 'source ~/.zshrc' (or your shell config)")
369-
370-
371-
# Always set for current session (works on all platforms)
372-
os.environ['ANDROID_HOME'] = str(sdk_root)
373-
os.environ['ANDROID_SDK_ROOT'] = str(sdk_root)
374-
current_path = os.environ.get('PATH', '')
375-
376-
if platform.system() == "Windows":
377-
sep = ';'
378-
elif platform.system() == "Linux":
379-
sep = ':'
380-
elif platform.system() == "Darwin": # iOS/macOS
381-
sep = ':'
382-
383-
# Prepend to PATH to ensure sdk tools are found first
384-
for p in reversed(env_paths):
385-
if p not in current_path:
386-
current_path = f"{p}{sep}{current_path}" if current_path else p
387-
os.environ['PATH'] = current_path
388-
389-
390-
391-
392253
def _find_sdkmanager(sdk_root: Path) -> Path | None:
393254
return _find_executable(sdk_root / "cmdline-tools" / "latest" / "bin", "sdkmanager")
394255

@@ -589,151 +450,9 @@ async def _accept_licenses(sdk_root: Path) -> bool:
589450

590451

591452

592-
def _refresh_java_home() -> bool:
593-
"""
594-
Dynamically refresh JAVA_HOME from Windows Registry to current process.
595-
Returns True if JAVA_HOME is available, False otherwise.
596-
"""
597-
system = platform.system()
598-
599-
if system == "Windows":
600-
try:
601-
import winreg
602-
# Try to read JAVA_HOME from user registry
603-
try:
604-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Environment", 0, winreg.KEY_READ) as key:
605-
java_home, _ = winreg.QueryValueEx(key, "JAVA_HOME")
606-
if java_home and os.path.exists(java_home):
607-
os.environ['JAVA_HOME'] = java_home
608-
print(f"[installer][android-sdk] Refreshed JAVA_HOME from registry: {java_home}")
609-
610-
# Add JAVA_HOME/bin to PATH (so java.exe and javac.exe are accessible)
611-
java_bin = os.path.join(java_home, "bin")
612-
current_path = os.environ.get('PATH', '')
613-
if java_bin not in current_path:
614-
os.environ['PATH'] = f"{java_bin};{current_path}"
615-
print(f"[installer][android-sdk] Added Java bin to PATH: {java_bin}")
616-
return True
617-
except FileNotFoundError:
618-
pass
619-
620-
# Fallback: Try system registry
621-
try:
622-
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
623-
r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment",
624-
0, winreg.KEY_READ) as key:
625-
java_home, _ = winreg.QueryValueEx(key, "JAVA_HOME")
626-
if java_home and os.path.exists(java_home):
627-
os.environ['JAVA_HOME'] = java_home
628-
print(f"[installer][android-sdk] Refreshed JAVA_HOME from system registry: {java_home}")
629-
630-
# Add JAVA_HOME/bin to PATH
631-
java_bin = os.path.join(java_home, "bin")
632-
current_path = os.environ.get('PATH', '')
633-
if java_bin not in current_path:
634-
os.environ['PATH'] = f"{java_bin};{current_path}"
635-
return True
636-
except FileNotFoundError:
637-
pass
638-
639-
print("[installer][android-sdk] WARNING: JAVA_HOME not found in registry")
640-
return False
641-
except Exception as e:
642-
print(f"[installer][android-sdk] Failed to refresh JAVA_HOME: {e}")
643-
return False
644-
elif system == "Linux":
645-
# On Linux, JAVA_HOME should already be in os.environ if set
646-
java_home = os.environ.get('JAVA_HOME')
647-
if java_home:
648-
print(f"[installer][android-sdk] JAVA_HOME={java_home}")
649-
return True
650-
else:
651-
print("[installer][android-sdk] WARNING: JAVA_HOME not set")
652-
return False
653-
elif system == "Darwin":
654-
# On macOS, JAVA_HOME should already be in os.environ if set
655-
java_home = os.environ.get('JAVA_HOME')
656-
if java_home:
657-
print(f"[installer][android-sdk] JAVA_HOME={java_home}")
658-
return True
659-
else:
660-
print("[installer][android-sdk] WARNING: JAVA_HOME not set")
661-
return False
662-
663-
return False
664-
665-
666453
async def install() -> bool:
667454
print("[installer][android-sdk] Installing...")
668455

669-
# Dynamically refresh JAVA_HOME before installation (critical for sdkmanager)
670-
if not _refresh_java_home():
671-
print("[installer][android-sdk] ERROR: Java/JDK is required to install Android SDK")
672-
await send_response({
673-
"action": "status",
674-
"data": {
675-
"category": "Android",
676-
"name": "Android SDK",
677-
"status": "not installed",
678-
"comment": "Java/JDK is required. Please install Java or JDK first.",
679-
}
680-
})
681-
return False
682-
683-
# Dynamically refresh ANDROID_HOME from registry on Windows
684-
if platform.system() == "Windows":
685-
try:
686-
import winreg
687-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Environment", 0, winreg.KEY_READ) as key:
688-
try:
689-
android_home_reg, _ = winreg.QueryValueEx(key, "ANDROID_HOME")
690-
if android_home_reg:
691-
# Expand environment variables before setting
692-
android_home_expanded = os.path.expandvars(android_home_reg)
693-
os.environ['ANDROID_HOME'] = android_home_expanded
694-
except FileNotFoundError:
695-
pass
696-
697-
# Also check ANDROID_SDK_ROOT if ANDROID_HOME not found
698-
if 'ANDROID_HOME' not in os.environ or not os.environ.get('ANDROID_HOME'):
699-
try:
700-
android_sdk_root_reg, _ = winreg.QueryValueEx(key, "ANDROID_SDK_ROOT")
701-
if android_sdk_root_reg:
702-
# Expand environment variables before setting
703-
android_sdk_root_expanded = os.path.expandvars(android_sdk_root_reg)
704-
os.environ['ANDROID_SDK_ROOT'] = android_sdk_root_expanded
705-
except FileNotFoundError:
706-
pass
707-
except Exception:
708-
pass
709-
710-
# Check if ANDROID_HOME is set
711-
android_home = os.environ.get('ANDROID_HOME') or os.environ.get('ANDROID_SDK_ROOT')
712-
713-
# Expand environment variables in the path (e.g., %USERPROFILE% -> C:\Users\Username)
714-
if android_home:
715-
android_home = os.path.expandvars(android_home)
716-
717-
if android_home:
718-
# ANDROID_HOME is set - check if directory exists
719-
if os.path.exists(android_home):
720-
print(f"[installer][android-sdk] SDK already installed at {android_home}")
721-
await send_response({
722-
"action": "status",
723-
"data": {
724-
"category": "Android",
725-
"name": "Android SDK",
726-
"status": "installed",
727-
"comment": f"Android SDK available at {android_home}",
728-
}
729-
})
730-
return True
731-
else:
732-
print(f"[installer][android-sdk] ANDROID_HOME is set but directory does not exist: {android_home}")
733-
print("[installer][android-sdk] Proceeding with fresh installation...")
734-
else:
735-
print("[installer][android-sdk] ANDROID_HOME not set, proceeding with installation...")
736-
737456
sdk_root = _get_sdk_root()
738457

739458

@@ -752,9 +471,6 @@ async def install() -> bool:
752471
return False
753472

754473

755-
await _set_env_vars(sdk_root)
756-
757-
758474
# Accept licenses
759475
await send_response({
760476
"action": "status",

0 commit comments

Comments
 (0)