React Native打包Release APK遇android:attr/lStar未找到及Kotlin守护进程问题
解决React Native打包Release APK时
android:attr/lStar not found错误 问题场景
在以下环境下执行./gradlew assembleRelease打包Release APK失败,但npx react-native run-android可在Android模拟器正常运行:
- React Native 0.70.1
- Gradle 7.3.3/7.4.2/7.5.1
- Android Studio 2021.3.1
- macOS Monterey
报错信息
> Task :rn-alioss:verifyReleaseResources FAILED w: Detected multiple Kotlin daemon sessions at build/kotlin/sessions FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':rn-alioss:verifyReleaseResources'. > A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action > Android resource linking failed ERROR:/Users/macair/Documents/code/js/xyz_app6/node_modules/rn-alioss/android/build/intermediates/merged_res/release/values/values.xml:2723: AAPT: error: resource android:attr/lStar not found.
报错代码片段
<declare-styleable name="ColorStateListItem"> <attr name="android:color"/> <attr format="float" name="alpha"/> <attr name="android:alpha"/> <attr format="float" name="lStar"/> <attr name="android:lStar"/> <!-- 错误指向该行 --> </declare-styleable>
已尝试无效方案
- 将Gradle从7.5.1降级至7.4.2、7.3.3
- 删除
android/.gradle目录并执行./gradlew clean - 在
android/gradle.properties中添加org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m,触发MaxPermSize unrecognized错误
有效解决方案
原因分析
android:attr/lStar是Android 12L(API 31)新增的系统属性,第三方库rn-alioss的compileSdkVersion低于31时,打包Release版本会因资源合并无法识别该属性而报错,Debug模式因兼容策略未触发此问题。
方案1:强制统一所有子模块的编译版本
在项目根目录android/build.gradle中,通过subprojects块强制所有依赖库使用与项目一致的compileSdkVersion和targetSdkVersion:
- 确保根build.gradle的
buildscript.ext块定义了正确版本(React Native 0.70.1默认版本如下):
buildscript { ext { buildToolsVersion = "33.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 } // 其他配置... }
- 在
allprojects块下方添加:
subprojects { afterEvaluate { project -> if (project.hasProperty('android')) { android { compileSdkVersion rootProject.ext.compileSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion } } } }
方案2:修改rn-alioss配置并保存补丁
直接修改第三方库的编译版本,并用patch-package保存修改避免丢失:
打开
node_modules/rn-alioss/android/build.gradle,将compileSdkVersion和targetSdkVersion修改为与项目一致的版本(比如33)。安装
patch-package:
npm install patch-package --save-dev
- 生成补丁文件:
npx patch-package rn-alioss
后续执行npm install或yarn install时,补丁会自动应用。
修复gradle.properties的JVM参数错误
MaxPermSize是Java 8及以前的参数,现代JVM需改为MaxMetaspaceSize,修改android/gradle.properties:
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=2048m
内容的提问来源于stack exchange,提问作者user938363
相关产品推荐
相关产品推荐

