Windows/Android开发环境搭建:绕过权限陷阱的极速配置
|
V2EX上又有人问Android Studio装不上去是不是网络问题——我关掉页面的时候外卖盒还歪在左手边,汤渗出来半圈,在键盘右下角聚成一滩,像没擦干净的adb logcat缓冲区。 去年11月,我在三里屯某楼B座7层那间没窗的格子间里,给三个实习生搭Windows+Android开发环境。不是远程,是真·蹲在工位后头看他们点下一步。王磊先装JDK,他鼠标悬停在“Accept License Agreement”上整整二十一秒——这我敢打包票,因为窗外正下着那种带灰的雨,雨滴斜砸在玻璃上,每一道水痕都拉得比Gradle同步失败时的堆栈还长。他点下去之后,UAC弹窗没出,但那个小蓝盾图标闪了一下,跟机房空调外机启动前继电器“咔”的一声同时响。 李婷直接跳过Android SDK Manager,手动解压commandlinetools,她用的是zip工具自带的“解压到当前文件夹”,结果路径里多了个重复的sdk\\sdk\\tools。这不是权限问题,是她把压缩包名字错当成父目录名了——但没人指出。当时张工接了个电话,说了句“对,就放D盘根目录”,然后挂了,转身去调投影仪,线没插稳,画面一直在绿屏和雪花之间抽搐。我原以为只要避开管理员模式、绕开Windows Defender实时防护、禁用SmartScreen就能通——结果发现Android Emulator启动时根本不是缺权限,是Hyper-V和WSL2冲突报错,而错误提示硬生生被系统日志截断在第204行,连“failed to initialize”都没打全。 最邪门的是那台Surface Pro 7,出厂预装的McAfee居然把platform-tools/adb.exe当可疑进程锁死了,不是杀,是锁——你double-click它就弹窗说“此程序已被安全策略阻止”,但你把它拖进PowerShell里敲adb devices,它又能动。查注册表HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\System\\ConsentPromptBehaviorAdmin,值是5;可HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System\\EnableLUA却是1——俩地方打架,谁赢算谁的。我说不准这算不算微软故意留的灰区,反正去年11月那周,我们组六台新机五台卡在这儿,剩下那台能跑是因为它出厂前被IT重装过,但重装记录被删了,只剩一个没标签的USB-A接口,插进去有电流声。 所以我说“优胜劣汰”站得住,真不是修辞。不是谁更懂签名机制、谁更会改gradle.properties,是扛不住反复UAC弹窗、受不了adb server莫名重启、顶不了emulator -gpu swiftshader_indirect黑屏三十秒的人,自己就退了。活下来那批人现在都在用WSL2里跑build,Windows只当壳——上周三陈哲在茶水间煮咖啡,水还没开,他掏出手机连上公司WiFi,adb connect过去就编译好了。他没装Android Studio,只配了sdk cmdline + neovim + gradle wrapper。我说这哪是开发环境?他说:“加载优化师同志,你不也靠cURL+awk切JS chunk?” 说到加载……上个月我把一台Win11设备的Windows Update服务改成manual,禁掉Windows Push Notifications,结果Android Studio首次启动时间从二百零七秒压到八十三。但这数字我没截图,不敢放V2EX,怕被人扒出是那台显示器右下角贴着“已换新背光”便签纸的机器。那天下午四点十七分,运维老刘端着搪瓷缸路过,缸沿磕在门框上,“当”一声。他缸里泡的是枸杞加决明子,漂着三颗已经胀发的,沉底那颗没破。 我不屑讲什么“最佳实践”。什么叫最佳?让所有新人在PowerShell里一行行敲Set-ExecutionPolicy RemoteSigned?还是教他们把C:\\Users\\%username%\\AppData\\Local\\Android\\Sdk\\platform-tools加进PATH时别漏掉最后那个反斜杠?——去年11月第二周,有个实习生照文档做了十六遍,每次失败原因都不一样:一次是防毒软件劫持了adb.exe的dll加载顺序;一次是他同事顺手清了DNS缓存,把dl.google.com的本地解析搞丢了;还有一次,纯粹因为他在cmd窗口标题栏上右键点了“属性”,然后勾了“快速编辑模式”,导致Ctrl+C复制中断了Gradle daemon。这种事没法归因,就像你没法说清楚为什么那个红色UAC弹窗,有时候出现在屏幕正中,有时候飘在任务栏上方两像素的位置。 我桌上还摊着那本《Android官方构建系统白皮书》印刷版,第87页折了角,写着“Gradle Daemon生命周期不受用户会话影响”——但我们在现场亲眼看见它在用户锁屏十分钟后自毙,而且jstack dump里连main线程都找不着。这事我懒得深挖,因为上个月我把AS升级到Giraffe,那个bug没了,换了个新的:layout editor打开时自动触发aapt2 compile,而aapt2 process会偷偷fork出六个subprocess,每个都占3.2MB堆内存,不释放。我说不准这算不算优化——但我知道,只要把aapt2换成24.0.2,问题就消失,虽然官方Release Notes里半个字没提。 站长个人见解,别再教新人按步骤点了。让他们先拔网线,再装JDK,装完立刻进powershell执行一次java -version——如果返回值带\
文章配图,仅供参考 我现在电脑右下角还挂着一个未读消息,是V2EX上ID为@tianyi的回帖,他问:“是否推荐用choco装sdk?”我没回。因为我昨天试过,choco install android-sdk,它把sdk安装到了C:\\tools\\android-sdk,然后自动往PATH加了一条——但这条PATH里包含了空格,且没引号,导致后续任何调用sdkmanager的脚本都崩在第一个参数上。而他提问的时间,刚好是我端起那杯已经凉透的咖啡,听见隔壁会议室传来投影仪待机时高频啸叫的同一秒。下礼拜我要去西二旗那边,帮他们调一台连不上AVD的设备。我带了三块不同年份的USB-C转USB-A的线缆,其中一根焊点松动,插进去的时候要微微左旋十五度才能握手成功——这事不能写进复盘通报,但可以告诉你们:它确实存在,而且正在被某个刚入职三个月的校招生,在没戴耳机的情况下,靠听接口插入时铜片摩擦的频次变化,判断出该不该重插。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


Windows嵌入式开发环境搭建:站点配置与权限设置指南
鸿蒙开发环境Unix调试失败?90%卡在这3个隐蔽配置
Windows站点权限整合:一次配置,全域生效
IIS权限总出错?5大Windows站点安全盲区
Linux与Windows服务器选型的5大性能陷阱
跨平台兼容之殇:iOS与Android微服务表现割裂
Windows站点权限配置:12年网关工程师的零越权、零宕机实践