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 中:
-
菜单栏 → Build → Clean Project
-
然后 → Build → Rebuild Project
⚠️ 仅 Sync Gradle 是不够的!必须 Clean 才会重新生成
AndroidManifest.xml和 APK。
✅ 步骤 2:卸载设备上的旧 App
在华为手机上:
-
进入 设置 → 应用 → 应用管理
-
找到你的 App(
com.example.myapplication) -
完全卸载
📌 原因: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:
-
在 Android Studio 右侧 → Build → Build Bundle(s) / APK(s) → Build APK(s)
-
点击 "locate" 找到生成的
app-debug.apk -
用
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)
🧪 验证是否成功
完成上述步骤后:
-
设备上 无残留 App
-
重新 Run 项目
-
应该能正常安装到 华为 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中是否有警告
我可以进一步帮你诊断!