Как запустить переносную установку Android Studio напрямую, минуя мастер установки, в скрипте Powershell? - PullRequest
0 голосов
/ 30 января 2019

Так что всем нравится потрясающая мобильность Android Studio, не так ли?

Я установил SDK и все его компоненты на переносной накопитель и могу использовать его где угодно.Быстрый скрипт Powershell - это все, что мне нужно, чтобы запустить его.Сценарий устанавливает все мои переменные среды и запускает Studio и эмулятор, сохраненный на моем диске.

Но ... Каждый раз, когда Studio запускается в новой среде (например, на новом компьютере), она запускаетсясо встроенным мастером настройки.Раздражает.Поэтому, если я отменю установку, мне будет предложено пропустить мастер при следующем запуске.После выбора этой опции, Studio запускается нормально.

Может ли сообщество помочь мне с выходом мастера установки при первом запуске?Вот сценарий:

#***************************************************************************************#
#***************************************************************************************#
#                                                                                       #
#                       Portable Android SDK Environment Setup                          #
#                                 Powershell Script                                     #
#                                                                                       #
#                                   By: sh7411usa                                       #
#                                                                                       #
#                      For Use With Portable Drive Installation                         #
#                                                                                       #
#                                                                                       #
#***************************************************************************************#
#***************************************************************************************#

#Configure Execution Policy
Set-ExecutionPolicy Bypass -Scope Process -Force

#Display Welcome to User
Write-Output ""
Write-Output "**************************************************************************"
Write-Output "**************************************************************************"
Write-Output "**                                                                      **"
Write-Output "**                                                                      **"
Write-Output "**                    Android SDK Environment Setup                     **"
Write-Output "**                                                                      **"
Write-Output "**                                                                      **"
Write-Output "**************************************************************************"
Write-Output "**************************************************************************"
Write-Output `n

#Advise of Execution Policy
$outStr = (get-ExecutionPolicy) | Out-String
Write-Host -NoNewline "Checking Execution Policy... "
Write-Host $outStr

#Set Working Directory (containing path to Android SDK installation):
$BpathTo = (Get-Item -Path ".\").FullName

#Update for User Specific data, (usually found under "C:\Users\User\"):
#ANDROID_SDK_HOME
#ANDROID_EMULATOR_HOME
#ANDROID_AVD_HOME 
$pathTo = "$BpathTo\User"
Write-Host -NoNewline "Setting ANDROID_SDK_HOME to:      $pathTo"
[Environment]::SetEnvironmentVariable("ANDROID_SDK_HOME", $pathTo, "Machine")
Write-Output "              ...Done"
$pathTo+="\.android"
Write-Host -NoNewline "Setting ANDROID_EMULATOR_HOME to: $pathTo"
[Environment]::SetEnvironmentVariable("ANDROID_EMULATOR_HOME", $pathTo, "Machine")
Write-Output "     ...Done"
$pathTo+="\avd"
Write-Host -NoNewline "Setting ANDROID_AVD_HOME to:      $pathTo"
[Environment]::SetEnvironmentVariable("ANDROID_AVD_HOME", $pathTo, "Machine")
Write-Output " ...Done"
#Create/Update ANDOID_HOME environmental variable:
### The Program data, usually found under "C:\Program Files (x86)\Android Studio\"
$pathTo = "$BpathTo\SDK"
Write-Host -NoNewline "Setting ANDROID_SDK_ROOT to:      $pathTo"
[Environment]::SetEnvironmentVariable("ANDROID_SDK_ROOT", $pathTo, "Machine")
Write-Output "               ...Done"
Write-Host -NoNewline "Setting ANDROID_HOME to:          $pathTo"
[Environment]::SetEnvironmentVariable("ANDROID_HOME", $pathTo, "Machine")
Write-Output "               ...Done
"
Write-Output "Keep up to date on Android Studio's environmental variables:
https://developer.android.com/studio/command-line/variables
"

#Update PATH environmental variable:
Write-Output "Updating PATH:"
$pathTo = "$BpathTo\SDK"
$new1="$pathTo"+"\tools;"
$new2="$pathTo"+"\tools\bin;"
$new3="$pathTo"+"\platform-tools;"
$newPath=";"+$new1+$new2+$new3
Write-Output "Adding: $new1"
Write-Output "Adding: $new2"
Write-Output "Adding: $new3"
$new4="$BpathTo"+"\User;"
Write-Output "Adding: $new4"
$newPath+=$new4
$env:Path+=$newPath
Write-Output ""
Write-Output "Done... Environment Setup Has Finished."
Write-Output ""

#Install Chocolatey and choco packages:
$InstallChoco = $False
##TODO:##if (Get-Command choco.exe -ErrorAction SilentlyContinue) {$InstallChoco = $true} #tests if choco.exe exists
If(Test-Path -Path "$env:ProgramData\Chocolatey") {} Else {$InstallChoco=$true} #tests if choco exists in $env:
if ($InstallChoco){ #Installs choco if not already installed
    Write-Output "Installing 'Chocolatey Installer'"
    iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    Write-Output `n}
$Packages = 'ADB', 'NotepadPlusPlus' #<-- Add packages here
ForEach ($PackageName in $Packages){ #installs choco packages listed above, one by one.
    Write-Output "Attempting Chocolatey Install: $PackageName"
    choco install --force $PackageName -y 
    Write-Output `n}

#Launch the Studio:
$pathTo = "$BpathTo\android-studio\bin\studio64.exe"
Write-Output "Starting Process: ANDROID STUDIO (x64)"
Write-Output "Initiating @ $pathTo"
Start-Process $pathTo
Write-Output `n

#Startup the Emulator:
##TODO:##See above link regarding setting emulator variables.
##First, update the emulator's *.ini to match the current directory:
$avdPath="$BpathTo\User\.android\avd\Nexus_x86.ini"
Write-Host -NoNewline "Updating Emulator: $avdPath..."
if (Test-Path $avdPath){Remove-Item $avdPath}
New-Item $avdPath | Out-Null
Clear-Content $avdPath
Set-Content $avdPath "avd.ini.encoding=UTF-8
path=$BpathTo\User\.android\avd\Nexus_x86.avd
path.rel=avd\Nexus_x86.avd
target=android-24"
Write-Output "Done"

##Second, Launch the emulator:
Write-Output "Launching: 'Nexus_x86' Emulator..."
$arg="-avd Nexus_x86"
$pathTo = "$Bpathto\localInstall\emulator\emulator.exe"
SDK\emulator\emulator.exe -avd Nexus_x86
Write-Output `n

#Wait for user response to close the window
Write-Host -NoNewLine "Script Finished. Press any key to close this window..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

На этом рисунке я подробно описал шаги, описанные выше, чтобы отменить мастер установки.

Я собираюсь пропустить этот шаг и перейти прямо в студию.,Любая помощь приветствуется.

Cancelling The Setup Wizard:

1 Ответ

0 голосов
/ 31 января 2019

Дальнейшие исследования - и я снова отвечаю на свой вопрос.

Android Studio запускается из папки \ bin.Это папка, в которой находится настоящий исполняемый файл студии.В этой папке находится файл idea.properties, который, помимо прочего, указывает IDE на пользовательские папки System и Config, обычно расположенные в C: \ USERS \ User.AndroidStudio3.x.

Добавьтеследующий код к сценарию для запуска Studio, чтобы обновить этот файл с текущим каталогом drive / для действительно переносимой - без установки - установки studio:

$BpathTo = (Get-Item -Path ".\").FullName
$pathTo = "$BpathTo\android-studio\bin\idea.properties"
$newCont="
idea.config.path=$BpathTo/User/.AndroidStudio/config
idea.system.path=$BpathTo/User/.AndroidStudio/system
idea.max.intellisense.filesize=2500
idea.max.content.load.filesize=20000
idea.cycle.buffer.size=1024
idea.no.launcher=false
idea.dynamic.classpath=false
idea.popup.weight=heavy
sun.java2d.d3d=false
swing.bufferPerWindow=true
sun.java2d.pmoffscreen=false
sun.java2d.uiScale.enabled=true
javax.swing.rebaseCssSizeMap=true
idea.xdebug.key=-Xdebug
idea.fatal.error.notification=disabled
"
Clear-Content $pathTo
Set-Content $pathTo $newCont

(дополнительные добавленные строки необходимы для гладкойработа студии.)

...