原文链接:【react native】 android sdk not found
欢迎转载,但请注明出处。
着急的可以直接看最后的【问题解决总结】。过程送给同样尝试的人。
最近公司接了一个RN APP的活,不会RN的我就开始了RN开发的工作。安装环境时并开代理非常慢,就是反复失败重试,最终把环境搭起来了,使用的是0.72.1版本,这个版本使用的是jdk11。搭起环境Android我并没能起来,ios正常起来了,当时以为是我电脑配置不好,内存不够所以才没起来。开发了两周已经完成第一个迭代了,找了安卓手机调试,唉!唉!唉!不是内存不够,是Android环境还没搭好。 网上查了大半天所有的解决方案对我都不生效,所以记录一下,希望遇到同样问题的人能看到。当没有截图也没有记录,所以这篇文章可能也不够详细。
启动Android,提示使用react-native doctor检查安卓环境。检测结果如下(从网上找的错误信息)
✖ Android SDK - Required for building and installing your app on Android
- Versions found: N/A
- Version supported: 33.0.0
为什么?Android SDK没找到?
前期尝试(并未解决问题)
- 带着疑问我反复检查了几遍我的环境。发现Android sdk路径下没有【tools】文件夹,但是RN中文网上的却需要配置tools的环境变量,RN英文官网上却不需要。
# 如果你不是通过Android Studio安装的sdk,则其路径可能不同,请自行确定清楚
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
按上试试,从网上查了几篇文章说要安装Android SDK Tolls (Obsolete),由于未解决问题,就不详细说了。
这个tools用的是jdk8,它用的一个类在jdk11中已经移除了,配置好jdk8后虽然sdk有了,但是RN需要的JDK11又没了。虽然未解决但这也证明了AndroidSDK已经安装好了。
又查了stackoverflow(并未解决问题)
有的人在npx react-native doctor后根绝提示按e就自动修复了,我的不自动修复。
还有说安装最新的【Android SDK Command-line Tools(larest)】解决的,而且这个很多文章中都有。也未能解决。
网上的方法都试了还未解决,怎么办啊怎么办。看看【doctor】的源码把,找找报错的原因是什么。
看了源码,它依赖了'envinfo'这个库。继续看'envinfo'库,它用了命令sdkmanager --list检查的SDK环境。
找到命令了,我拿命令来试试。果然这个命令报错了。问题的原因找到了。干!!
命令sdkmanager --list检查的SDK环境,这里还遇到了好几个问题。
- 因为配置了【tools】的环境变量,这里用的是【tools】工具,上面说了这个工具依赖jdk8,所以环境变量要删掉。
- 安装【Android SDK Command-line Tools(larest)】后又报错,具体错误忘了,大概是【使用class62,当前class55】,问了java开发的同事,说这个Java SDK的版本,帮我查了说62是jdk17。这个工具又使用jdk17了,心累啊。看来不能按最新版本(当时最新11.0),开始尝试老版本,使用了10.0版问题解决了。使用doctor检查也通过了。
【Android SDK Command-line Tools】也是需要配置环境变量的,这个我没在网上看到,是出错了我有配的。
配置
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/10.0/bin**,我手敲的可能敲错,我用的mac,windows自己配就是将工具的bin目录配到path中。
问题解决总结
- 不要配置'tools'的环境变量
- 安装Android SDK Command-line Tools的10.0版,不要安装最新版。并配置环境变量。