RN跑Android项目时提示:error Failed to
完整报错如下:
error Failed to install the app. Make sure you have the Android development environment set up:
主要排查一下几点:
1、模拟器是否开启或者是否连接已打开USB调试的手机
2、JDK 环境变量的设置(jdk版本必须1.8)
3、是否安装JDK及配置全局
4、是否安装Android SDK,及buildToolsVersion是否安装对应版本
首先我们直接将项目在Android Studio里打开,这样容易发现具体错误,通过项目编译发现是jDK和SDK没有正确配置对应版本导致,下载对应版本后配置全局
以Mac OS为例,进行设置环境变量
首先终端输入
open -e .bash_profile
若无改文件须自己新建:
cd ~
touch .bash_profile
下面是我的.bash_profile文件(别忘了改掉 用户名:frank)
# Java SDK
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
# Android SDK
export ANDROID_HOME=/Users/frank/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/build-tools/29.0.2
export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH
[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
然后终端输入:(这样可以不需要重启生效)
source ~/.bash_profile
需要注意的是可能会存在设置后关闭终端后重新打开依旧不生效,这里是因为
mac在启动后不会去默认加载~/.bash_profile文件,这里可以在.zshrc文件里增加一个命令,使其开机后就执行加载。
终端中执行命令,打开.zshrc文件:
open -e ~/.zshrc
在文件里加入命令:source ~/.bash_profile
然后终端输入:(这样可以不需要重启生效)
source ~/.zshrc
2.但是后面用 react-native run-android 命令跑提示:react-native :app:installDebug FAILED
全文报错如下:
> Task :app:installDebug FAILED
29 actionable tasks: 4 executed, 25 up-to-date
Unable to install /Users/frank/Desktop/WorkProject/Recat Native/rn2/android/app/build/outputs/apk/debug/app-debug.apk
com.android.ddmlib.InstallException: Unknown failure: Security exception: You need the android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS permission to use the PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS flag
java.lang.SecurityException: You need the android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS permission to use the PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS flag
这里可以通过以下步骤解决:
1、手机卸载掉需要跑的软件(如果已安装的话)
2、如果是MIUI系统,进入开发者选项-向下滚动找到“打开 MIUI 优化”并关闭,重启手机
然后重新跑react-native run-android