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

API 31的AAB在Android 12无法运行,API30的AAB无法上传Play Console求助

问题描述
  • 上传targetSdkVersion 31的AAB到Google Play Console后,应用在Android 12设备上无法正常运行
  • 尝试上传targetSdkVersion 30的AAB时,收到Play Console错误提示:

您的应用当前目标API级别为30,必须至少定位到API级别31,以确保基于针对安全性和性能优化的最新API构建。请将应用的目标API级别更改为至少31。

  • targetSdkVersion 30的应用在Android 12设备上运行正常,但无法通过Play Console审核上架
环境信息
System:
    OS: macOS 12.3
    CPU: (8) arm64 Apple M1
    Memory: 76.81 MB / 8.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.15.0 - /usr/local/bin/node
    Yarn: 1.22.11 - /opt/homebrew/bin/yarn
    npm: 8.5.5 - /usr/local/bin/npm
    Watchman: 2022.11.07.00 - /opt/homebrew/bin/watchman
  Managers:
    CocoaPods: 1.11.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
    Android SDK:
      API Levels: 23, 28, 29, 30, 31, 32
      Build Tools: 26.0.0, 26.0.1, 26.0.2, 26.0.3, 28.0.3, 29.0.2, 29.0.3, 30.0.0, 30.0.2, 30.0.3, 31.0.0, 33.0.0
      System Images: android-29 | Intel x86 Atom, android-30 | Google APIs ARM 64 v8a, android-30 | Google Play Intel x86 Atom, android-31 | Google APIs ARM 64 v8a
      Android NDK: 22.1.7171670
  IDEs:
    Android Studio: 2021.3 AI-213.7172.25.2113.9123335
    Xcode: 13.3/13E113 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.17 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.1 => 17.0.1 
    react-native: 0.64.2 => 0.64.2 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found
解决方案

你用的React Native 0.64.2默认对Android 12(API 31)适配不完善,需要针对性修改配置和代码来解决targetSdk31下的运行问题:

1. 适配Android 12权限与组件变更

  • 前台服务权限:Android 12要求使用前台服务必须声明android.permission.FOREGROUND_SERVICE权限,对应服务类型还需添加细分权限(比如定位类服务加FOREGROUND_SERVICE_LOCATION)。在AndroidManifest.xml里添加:
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <!-- 有定位前台服务就加下面这行 -->
    <!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> -->
    
  • PendingIntent 可变性:Android 12要求PendingIntent必须指定FLAG_IMMUTABLE或FLAG_MUTABLE。检查项目里的第三方库(比如推送、闹钟类),升级到支持Android 12的版本;如果是自定义代码创建PendingIntent,手动添加对应flag(不需要修改Intent内容就用FLAG_IMMUTABLE)。

2. 更新Gradle配置与依赖

  • 升级Android Gradle Plugin:在android/build.gradle里把AGP版本更改为7.0.4(适配RN 0.64.x的稳定版本):
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.4'
        // 其他依赖保持不变
    }
    
  • 更新Gradle Wrapper:修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
    
  • 锁定compileSdk和targetSdk为31:在android/app/build.gradle里确认配置:
    android {
        compileSdkVersion 31
    
        defaultConfig {
            targetSdkVersion 31
            // 其他配置不变
        }
    }
    

3. 排查第三方模块兼容性

RN 0.64.x的部分原生模块可能不兼容Android 12,按以下步骤排查:

  • 逐个禁用第三方原生模块,重新构建测试,找出导致崩溃的模块,要么升级到兼容版本,要么替换成替代库。
  • 查看logcat的崩溃日志,定位具体错误(比如PendingIntent相关的IllegalArgumentException、权限拒绝错误),针对性修复。

4. 测试验证

  • 在Android 12模拟器或真机上安装targetSdk31的APK,复现问题并通过logcat排查错误点,逐个修复。
  • 修复完成后重新构建AAB上传到Play Console,确认审核通过,同时验证应用在Android 12设备上运行正常。

内容的提问来源于stack exchange,提问作者user20775431

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:31:05