React Native执行assembleRelease命令报错,无法生成APK
解决React Native打包Release APK时的
generateReleaseBuildConfig失败问题 错误分析
执行./gradlew assembleRelease时遇到两个核心问题:
- 清单文件缺失:系统找不到
/home/nitin/Documents/reactnative/AwesomeProject/android/src/main/AndroidManifest.xml,导致无法计算applicationId,直接引发generateReleaseBuildConfig任务失败。 - 栈溢出错误:
java.lang.StackOverflowError,通常和Gradle内存分配不足或缓存异常有关。
分步解决方案
一、修复AndroidManifest.xml缺失问题
- 检查文件路径:先确认
android/src/main/目录下是否真的没有AndroidManifest.xml。如果是项目初始化不完整或误删导致:- 若为纯React Native项目,可删除
android目录后,备份好src、package.json等核心文件,再运行npx react-native init AwesomeProject --directory ./重新生成Android原生目录。 - 若不想重新初始化,可手动创建
AndroidManifest.xml,基础模板如下(替换package值为你的应用ID):
- 若为纯React Native项目,可删除
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.awesomeproject"> <uses-permission android:name="android.permission.INTERNET" /> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
二、解决StackOverflowError问题
- 调整Gradle内存分配:打开
android/gradle.properties文件,添加或修改以下配置,增大JVM内存:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
- 清理Gradle缓存:在项目根目录运行
./gradlew clean,清除旧构建缓存后,再重新执行./gradlew assembleRelease(注意命令拼写:是assemble而非asseble)。 - 检查Gradle版本兼容性:确认
android/build.gradle中的Gradle插件版本与android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本匹配(比如React Native 0.70+对应Gradle插件7.4.2,Gradle版本7.5+)。
验证修复
完成以上步骤后,重新运行./gradlew assembleRelease,若配置正确,即可在android/app/build/outputs/apk/release/目录下生成Release APK文件。
内容的提问来源于stack exchange,提问作者Nitin Sirsath
相关产品推荐
相关产品推荐

