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

Flutter报错:应用需SDK版本#33,当前为#29,如何解决安装失败?

解决Flutter应用INSTALL_FAILED_OLDER_SDK错误(SDK版本不匹配)

问题场景

我编写了用于读取手机短信的Flutter代码(main.dart):

import 'package:flutter/material.dart';
import 'package:flutter_sms_inbox/flutter_sms_inbox.dart';
import 'package:permission_handler/permission_handler.dart';

void main() {
  runApp(Main());
    SmsQuery query = SmsQuery();
}
class Main extends StatefulWidget {
  const Main({Key? key}) : super(key: key);

  @override
  State<Main> createState() => _MainState();
}

class _MainState extends State<Main> {
  final SmsQuery _query = SmsQuery();
  List<SmsMessage> _messages = [];
  @override
  void initState() {
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Container(
          padding: const EdgeInsets.all(10.0),
          child: ListView.builder(
            shrinkWrap: true,
            itemCount: _messages.length,
            itemBuilder: (BuildContext context, int i) {
              var message = _messages[i];
              return ListTile(
                title: Text('${message.sender} [${message.date}]'),
                subtitle: Text('${message.body}'),
              );
            },
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () async {
            var permission = await Permission.sms.status;
            if (permission.isGranted) {
              final messages = await _query.querySms(
                kinds: [SmsQueryKind.inbox, SmsQueryKind.sent],
                // address: '+254712345789',
                count: 10,
              );
              debugPrint('sms inbox messages: ${messages.length}');
              setState(() => _messages = messages);
            } else {
              await Permission.sms.request();
            }
          },
          child: const Icon(Icons.refresh),
        ),
      ),
    );
  }
}

运行时控制台出现以下错误:

Launching lib\main.dart on Android SDK built for x86 in debug mode...
lib\main.dart:1
Parameter format not correct -
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Error: ADB exited with exit code 1
Performing Streamed Install

adb: failed to install C:\Dosyalar\Yazilim\Flutter\Teen Message\teenmessage\build\app\outputs\flutter-apk\app.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl61875986.tmp/base.apk (at Binary XML file line #7): Requires newer sdk version #33 (current version is #29)]
Error launching application on Android SDK built for x86.
Exited (sigterm)

错误提示应用要求SDK版本33,但当前Android模拟器的SDK版本为29,该如何解决?

解决方案

方法一:升级模拟器的SDK版本到33或更高

  • 打开Android Studio的Device Manager(路径:Tools > Device Manager)
  • 选中当前使用的模拟器,点击右侧的编辑图标(铅笔形状)
  • 在弹出的配置窗口中切换到System Image选项卡,选择API Level 33(对应Android 13)或更高版本的系统镜像,点击Next
  • 确认所有设置后点击Finish,等待镜像下载安装完成,重启模拟器后重新运行Flutter应用

方法二:降低项目的targetSdkVersion适配现有模拟器

  • 打开项目中的android/app/build.gradle文件
  • 找到defaultConfig代码块,修改targetSdkVersion为29(与模拟器SDK版本一致),同时将compileSdkVersion也调整为29:
    defaultConfig {
        applicationId "com.example.teenmessage"
        minSdkVersion 21
        targetSdkVersion 29 // 修改此处为29
        versionCode 1
        versionName "1.0"
    }
    
    compileSdkVersion 29 // 同步修改此处为29
    
  • 保存文件后,执行命令flutter clean清理项目缓存,然后重新运行应用

额外提示

你的main函数中有一行冗余代码SmsQuery query = SmsQuery();,它在runApp(Main());之后且未被使用,可以删除以优化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49