M1芯片Mac执行react-native run-android出现PKIX证书路径构建失败报错
报错本质
该PKIX路径错误是JVM无法验证Google Maven仓库的SSL证书,导致无法拉取构建依赖,与M1芯片本身兼容性无关。
排查步骤
- 验证网络访问:在终端执行
curl -v https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.2/gradle-4.1.2.pom,若能正常返回内容,说明网络链路正常,问题出在Java证书库;若返回报错,优先排查系统是否开启代理、VPN或公司内网的SSL劫持。 - 检查Java版本:确认所用JDK为官方发布版本,第三方修改版JDK可能缺失根证书导致验证失败。
- 检查Gradle配置:查看
~/.gradle/gradle.properties是否存在冗余代理配置,与Android Studio的代理设置保持一致,终端执行构建命令默认不会复用Android Studio的代理配置。
解决方法
方法1:替换为国内镜像源(最便捷)
修改项目根目录的build.gradle,将原有国外仓库替换为阿里云镜像,避免访问国外源的证书和网络问题:
buildscript { ext { buildToolsVersion = "30.0.0" minSdkVersion = 21 compileSdkVersion = 30 targetSdkVersion = 30 supportLibVersion = "28.0.0" } repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/mavencentral' } // 注释原有国外源 // google() // jcenter() // maven { url "https://maven.google.com" } // mavenCentral() } dependencies { classpath('com.android.tools.build:gradle:4.1.2') classpath('com.google.gms:google-services:4.3.0') } } allprojects { repositories { mavenLocal() maven { url("$rootDir/../node_modules/react-native/android") } maven { url("$rootDir/../node_modules/jsc-android/dist") } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/mavencentral' } maven { url 'https://www.jitpack.io' } // 注释原有国外源 // google() // jcenter() // maven { url "https://maven.google.com" } } }
修改完成后执行cd android && ./gradlew clean,再重新运行npx react-native run-android即可。
方法2:导入证书到Java证书库(需保留谷歌源时使用)
- 导出目标站点证书:浏览器访问https://dl.google.com,点击地址栏的锁形标识,将证书导出为PEM格式,保存为
google.crt。 - 获取JDK路径:终端执行
/usr/libexec/java_home获取当前使用的JDK安装路径。 - 导入证书:执行命令
sudo keytool -import -alias google -file 本地google.crt的存储路径 -keystore ${JDK路径}/jre/lib/security/cacerts,证书库默认密码为changeit,导入完成后重启终端重新构建即可。
若使用Android Studio内置JDK,JDK路径为/Applications/Android Studio.app/Contents/jre/Contents/Home,按上述步骤导入对应证书库即可。
方法3:统一JDK环境
M1 Mac易出现终端JDK与Android Studio内置JDK不一致的问题,可在shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile)中添加如下配置,指定使用Android Studio内置JDK:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home" export PATH=$JAVA_HOME/bin:$PATH
执行source ~/.zshrc(对应bash执行source ~/.bash_profile)使配置生效后,重新执行构建命令即可。
内容的提问来源于stack exchange,提问作者Oliver D
相关产品推荐
相关产品推荐

