minSdk(API 31) > devicesdk(API 28) on device HUAWEI LIO-ANO0

minSdk(API 31) > devicesdk(API 28) on device HUAWEI LIO-ANO0

复制代码
 namespace = "com.example.myapplication"
    compileSdk = 36
​
    defaultConfig {
        applicationId = "com.example.myapplication"
        minSdk = 26 改成了26还是报错minSdk(API 31) > devicesdk(API 28) on device HUAWEI LIO-ANO0

minSdk = 26,但仍然报错:

minSdk(API 31) > deviceSdk(API 28) on device HUAWEI LIO-ANO0

这说明:你的代码虽然改了,但 Android Studio 实际安装的 App 仍然是旧版本(minSdk=31)!


🔥 根本原因:Gradle 缓存 / 构建产物未更新

你修改了 build.gradle.kts,但 没有完全重新构建项目,导致:

  • IDE 仍使用旧的 APK(基于 minSdk=31)

  • 或设备上残留旧签名的 App

  • 或使用了 Instant Run / Apply Changes 导致配置未生效


✅ 正确解决步骤(必须全部执行)

✅ 步骤 1:Clean + Rebuild 项目

在 Android Studio 中:

  1. 菜单栏 → Build → Clean Project

  2. 然后 → Build → Rebuild Project

⚠️ 仅 Sync Gradle 是不够的!必须 Clean 才会重新生成 AndroidManifest.xml 和 APK。


✅ 步骤 2:卸载设备上的旧 App

在华为手机上:

  1. 进入 设置 → 应用 → 应用管理

  2. 找到你的 App(com.example.myapplication

  3. 完全卸载

📌 原因:Android 不允许 不同 minSdk 的同包名 App 覆盖安装。 即使你改了 minSdk,系统仍认为这是"不兼容更新",直接拒绝安装。


✅ 步骤 3:确认 build.gradle 已正确保存

检查 app/build.gradle.kts 是否确实为:

复制代码
defaultConfig {
    applicationId = "com.example.myapplication"
    minSdk = 26  // ← 确保是 26,不是 31
    targetSdk = 36
    // ...
}

💡 注意:如果你用了 Kotlin DSL(.kts) ,语法是 minSdk = 26,不是 minSdkVersion 26(那是 Groovy 语法)。


✅ 步骤 4:检查是否有多模块冲突

如果你的项目有多个 module(如 :app, :lib),确保 只有主 app 模块 设置了 minSdk,且子模块没有覆盖它。

通常没问题,但可快速确认。


✅ 步骤 5:查看最终合并的 Manifest

验证最终 APK 的 minSdk 是否真是 26:

  1. 在 Android Studio 右侧 → Build → Build Bundle(s) / APK(s) → Build APK(s)

  2. 点击 "locate" 找到生成的 app-debug.apk

  3. APK Analyzer

    打开:

    • 查看 AndroidManifest.xml

    • 搜索 minSdkVersion,确认值为 26

或者命令行查看:

复制代码
aapt dump badging app-debug.apk | grep sdkVersion

输出应包含:

复制代码
sdkVersion:'26'

✅ 步骤 6:不要用 "Apply Changes" 安装

  • 点击绿色 ▶️ Run 时,确保是 完整安装(Install),而不是 "Apply Code Changes"

  • "Apply Changes" 不会更新 manifest 配置(包括 minSdk)


🧪 验证是否成功

完成上述步骤后:

  1. 设备上 无残留 App

  2. 重新 Run 项目

  3. 应该能正常安装到 华为 P40 Pro(API 28)


❓ 为什么改了代码还报 API 31?

原因 说明
未 Clean 项目 Gradle 使用缓存,manifest 仍是旧的
未卸载旧 App Android 系统阻止不兼容更新
用了 Apply Changes 只更新代码,不更新 APK 元数据
多 flavor / buildType 配置覆盖 某些变体仍设 minSdk=31(你没这种情况)

✅ 附加建议:加日志确认运行时 SDK

MainActivity 加一行日志,确认设备实际运行:

复制代码
Log.d("SDK_CHECK", "Device SDK: ${Build.VERSION.SDK_INT}, minSdk in APK: 26")

如果能打出日志,说明已成功降级。


总结

🔑 关键操作 = Clean + Uninstall + Rebuild + Full Install

你遇到的不是代码问题,而是 构建缓存和安装机制问题。 按上述步骤操作后,99% 能解决!

如果仍然不行,请提供:

  • 你点击的是 Run 还是 Apply Changes

  • 华为手机上是否彻底卸载了 App

  • Build Output 中是否有警告

我可以进一步帮你诊断!