我正在尝试在两台独立的Windows计算机上将Android Studio从0.5.1更新到0.5.2,一台使用Windows 7 Pro 64位,另一台使用Windows 7 Enterprise 64位。
我收到正常的更新提示:
...如果我选择“更新并重新启动”,则会下载补丁并退出IDE,但随后会出现以下对话框:
我无法更改任何“解决方案”列条目。如果我单击“继续”,我会收到如下所示的消息(图像和文本,因此其复制/粘贴/搜索友好):
Temp. directory: C:\Users\Sean\AppData\Local\Temp\
java.io.FileNotFoundException: C:\Program Files (x86)\Android\android-studio\lib\jsch.agentproxy.usocket-nc.jar (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.intellij.updater.Utils.copyStreamToFile(Utils.java:135)
at com.intellij.updater.CreateAction.doApply(CreateAction.java:52)
at com.intellij.updater.PatchAction.apply(PatchAction.java:140)
at com.intellij.updater.Patch$3.forEach(Patch.java:198)
at com.intellij.updater.Patch.forEach(Patch.java:248)
at com.intellij.updater.Patch.apply(Patch.java:194)
at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86)
at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77)
at com.intellij.updater.Runner.doInstallImpl(Runner.java:307)
at com.intellij.updater.Runner.doInstall(Runner.java:268)
at com.intellij.updater.Runner.access$000(Runner.java:18)
at com.intellij.updater.Runner$2.execute(Runner.java:258)
at com.intellij.updater.SwingUpdaterUI$7.run(SwingUpdaterUI.java:230)
at java.lang.Thread.run(Thread.java:744)
当我点击“退出”时,Android Studio会重新打开,并告诉我更新仍然可用。
我之前在两台机器上使用相同的方法更新了Android Studio,没有任何问题。
由于我认为这是针对较新版本的Android Studio的某种错误,因此我在AOSP问题跟踪器上打开了Issue 67794。
修改
我今天能够在两台机器上从0.5.2更新到0.5.3而不会遇到这个问题。我在以前的成功更新中看到了JetBrains安装程序的Windows安全提示,并且更新已成功完成,而无需启动具有提升权限的Android Studio。所以,问题似乎是0.5.1或0.5.2补丁特有的。
修改
尝试从Android Studio 0.6.0更新到0.6.1时遇到了类似的错误:
温度。目录:C:\ Users \ barbeau \ AppData \ Local \ Temp \
+ ---------------- 文件操作失败。 这可能是由于文件被另一个文件锁定 应用。请尝试关闭任何申请 使用正在更新的文件然后按“重试”。 + ----------------
com.intellij.updater.RetryException:无法删除文件C:\ Program Files(x86)\ Android \ android-studio1 \ lib \ openapi.jar 在com.intellij.updater.BaseUpdateAction.replaceUpdated(BaseUpdateAction.java:40) 在com.intellij.updater.UpdateZipAction.doApply(UpdateZipAction.java:199) 在com.intellij.updater.PatchAction.apply(PatchAction.java:140) 在com.intellij.updater.Patch $ 3.forEach(Patch.java:198) 在com.intellij.updater.Patch.forEach(Patch.java:248) 在com.intellij.updater.Patch.apply(Patch.java:194) 在com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86) 在com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77) 在com.intellij.updater.Runner.doInstallImpl(Runner.java:307) 在com.intellij.updater.Runner.doInstall(Runner.java:268) 在com.intellij.updater.Runner.access $ 000(Runner.java:18) 在com.intellij.updater.Runner $ 2.execute(Runner.java:258) 在com.intellij.updater.SwingUpdaterUI $ 7.run(SwingUpdaterUI.java:230) 在java.lang.Thread.run(Thread.java:745)
如果您在Gradle构建过程仍在运行时尝试运行更新(例如,在您启动Android Studio之后),这似乎就会发生。
答案 0 :(得分:28)
解决方法:
我意识到在从0.5.1到0.5.2的几次失败更新尝试之后,我不再获得Windows安全提示以允许JetBrains IntellJ安装程序继续进行,正如我在之前的成功更新中看到的那样。我不确定以前的更新有什么变化,但显然更新过程没有成功尝试访问没有适当权限的文件。通过上述过程将Android Studio升级为管理员解决了这个问题。
如上面的问题所述,从0.5.2到0.5.3的更新似乎不再出现此问题。
修改强>
为了解决我在Android 0.6.0到Android 0.6.1更新时遇到的下一个错误,我关闭了Studio然后重新启动它,让它一夜之间(更巧合而不是设计)。当我早上回到机器并运行更新时,它成功了。因此,似乎存在某种长时间运行的进程在某些条件下阻止更新(可能在启动后立即 - 可能是Gradle构建进程?)。 @Daniel Wilson在下面的回答也适用于这种情况。
答案 1 :(得分:14)
这发生在我从0.6.0更新到0.6.1。我试图在管理模式下打开AS,其他所有应用程序都关闭但更新仍然失败了。我也尝试删除Temp文件夹。
最终我注意到在任务管理器关闭所有内容时,由于某种原因,我仍然在后台运行了一个相当大的java.exe。
我所做的是在管理员模式下打开AS,运行更新并让它失败,声称文件被锁定/访问被拒绝或类似的东西。打开任务管理器,我注意到有2个java.exe进程在运行。对我来说,较小的(约200k)是AS更新器实用程序本身。但是如果我杀死了较大的那个(大约600k)并且重试了,那么更新就没有问题了。
答案 2 :(得分:8)
虽然在管理员模式下运行可能会使更新生效,但它也可能会影响在添加和/或更新的任何文件上设置的权限,以便Android工作室中使用此类文件的未来操作需要提升(管理员) )正常工作。
执行此操作将导致许多操作无法正常工作,除非Android Studio已在高架模式下运行。
尝试删除所有java.exe实例(在任务管理器或进程资源管理器中),然后重新尝试更新,但不以管理员身份运行。
每次我使用Process Explorer(在Windows上)检查哪个应用程序锁定了其中一个阻止Android Studio更新的文件时,它始终是Java的。
对我有用(在Windows上):
jsch.agentproxy.usocket-nc.jar
,然后输入文件名)答案 3 :(得分:4)
您也可以尝试授予用户该文件夹的权限。
你已经完成了。
答案 4 :(得分:2)
禁用防病毒并再次尝试更新....为我工作。
答案 5 :(得分:2)
我的Windows机器后台运行的Java进程在我的任务管理器中没有显示。这将确保Java被杀死:
taskkill / F / IM java.exe
答案 6 :(得分:0)
我遇到了同样的问题,但我通过在高架控制台中运行此脚本解决了这个问题: Program Files \ Android \ android-studio \ bin \ update_studio.bat
答案 7 :(得分:0)
我在更新Android Studio时解决了类似的问题,只需关闭所有其他正在运行的应用程序,例如Firefox,然后重新启动更新过程。
似乎某个文件只是由另一个程序启动而且Android Studio无法访问它。
解决此问题的另一种方法是删除相应文件夹中的所有文件,例如:User / AppData / Local / Temp
答案 8 :(得分:0)
我有同样的问题 - 从0.6.0更新到0.6.1 按下“更新”按钮后,Android工作室重新启动并开始更新。在此之后我得到了“错误信息”。我按了“重试”按钮 - 它没有成功。然后我等了大约2分钟(在Gradle开始工作后在我的工作室里)并再次按下“重试” - 完成! :) 一切都更新了。所以在我的情况下,问题的原因是Gradle在Android工作室启动后有效。
答案 9 :(得分:0)
我有同样的问题从2.2更新到2.2.1。 我的解决方案是下车然后再次进入:重新启动Windows
答案 10 :(得分:0)
我使用LockHunter查看锁定文件的内容。结果:Adb锁定了其中一些(我在移动电话中通过wifi测试应用程序)。我杀了adb服务器,重新启动Android Studio,我就能更新它了。
祝他人好运!