You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:

  1. 确保根build.gradle的buildscript.ext块定义了正确版本(React Native 0.70.1默认版本如下):
buildscript {
    ext {
        buildToolsVersion = "33.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 33
    }
    // 其他配置...
}
  1. 在allprojects块下方添加:
subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                targetSdkVersion rootProject.ext.targetSdkVersion
            }
        }
    }
}

方案2:修改rn-alioss配置并保存补丁

直接修改第三方库的编译版本,并用patch-package保存修改避免丢失:

  1. 打开node_modules/rn-alioss/android/build.gradle,将compileSdkVersion和targetSdkVersion修改为与项目一致的版本(比如33)。

  2. 安装patch-package:

npm install patch-package --save-dev
  1. 生成补丁文件:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:00:53