React Native构建Android Release APK时遇依赖下载及栈溢出错误求助
问题背景
在创建Android Release APK时执行以下步骤后构建失败:
- 生成密钥库(路径:
<项目名>/android/app):
keytool -genkey -v -keystore NewsApp.keystore -alias NewsApp -keyalg RSA -keysize 2048 -validity 10000
- 配置
android/app/build.gradle签名信息:
添加签名配置:
signingConfigs { release { storeFile file('NewsApp.keystore') storePassword 'NewsApp123' keyAlias 'NewsApp' keyPassword 'NewsApp123' } }
配置Release构建使用该签名:
buildTypes { debug { ... } release { ..... signingConfig signingConfigs.release ..... } }
- 执行构建命令:
cd android ./gradlew assembleRelease
错误信息
构建过程中出现两个失败任务:
Configure project :lottie-react-native
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in thegradle.propertiesfile or use the new publishing DSL.
Task :react-native-async-storage_async-storage:generateReleaseRFile FAILED
FAILURE: Build completed with 2 failures.
第一个错误
- 问题原因:
Execution failed for task ':react-native-async-storage_async-storage:generateReleaseRFile'.
Could not resolve all files for configuration ':react-native-async-storage_async-storage:releaseCompileClasspath'.
Failed to transform react-android-0.71.3-release.aar (com.facebook.react:react-android:0.71.3) to match attributes {artifactType=android-symbol-with-package-name, com.android.build.api.attributes.BuildTypeAttr=release, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-api}.
Could not download react-android-0.71.3-release.aar (com.facebook.react:react-android:0.71.3)
Could not get resource 'https://repo.maven.apache.org/maven2/com/facebook/react/react-android/0.71.3/react-android-0.71.3-release.aar'.
Could not GET 'https://repo.maven.apache.org/maven2/com/facebook/react/react-android/0.71.3/react-android-0.71.3-release.aar'.
No such host is known (repo.maven.apache.org)
第二个错误
- 问题原因:
java.lang.StackOverflowError (no error message)
解决方案
针对第一个错误(Maven仓库无法访问)
核心问题是无法解析repo.maven.apache.org主机,说明网络无法连接到Maven中央仓库,解决步骤:
- 检查本地网络连接,确认能正常访问外网,可在浏览器打开Maven中央仓库地址验证连通性。
- 若网络正常仍无法访问,在项目
android/build.gradle中替换为国内Maven镜像(如阿里云),修改buildscript和allprojects的仓库配置:buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } // 其他原有配置保留 } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } google() mavenCentral() maven { url "$rootDir/../node_modules/react-native/android" } maven { url "$rootDir/../node_modules/jsc-android/dist" } } } - 清理Gradle缓存并刷新依赖:
./gradlew clean build --refresh-dependencies
针对第二个错误(StackOverflowError)
该错误通常与Gradle内存不足或依赖冲突有关,解决步骤:
- 修改
android/gradle.properties文件,增大JVM堆内存:org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - 排查依赖冲突:执行
./gradlew dependencies查看依赖树,移除重复或版本冲突的依赖。 - 升级Gradle到React Native对应版本的稳定版(React Native 0.71.x推荐Gradle 7.4+),修改
android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
额外注意事项
- lottie-react-native的警告可暂时忽略,若要消除,在
gradle.properties中添加android.disableAutomaticComponentCreation=true。 - 确认
NewsApp.keystore文件存在于android/app目录,且签名配置中的密码、别名完全正确。
内容的提问来源于stack exchange,提问作者Gattu

