Skip to content

Repository files navigation

LOGO

SMS Cleaner

简体中文 | 繁體中文 | English

  • SMS Cleaner is a tool for reading and batch deleting SMS messages on Android, built with Flutter framework.
  • Although the UI framework Flutter supports cross-platform development, only Android SMS deletion functionality has been implemented.

Features

  • Get SMS permissions
  • Copy SMS to clipboard
  • Set/restore default SMS app
  • Filter SMS messages by keywords
  • Search SMS by phone number
  • Remove/directly delete SMS from search results
  • One-click batch deletion of queried SMS messages
  • One-click export of all SMS messages to CSV file

Screenshot

UI

Development Environment

  • Flutter 3.47.2 (stable)
  • Dart 3.13.2
  • Gradle 9.3.1
  • Android Gradle Plugin 9.1.0
  • Kotlin 2.4.10
  • compileSdk 37 / minSdk 26
  • JDK 17

Build & Publish

Build the release APK with fastforge:

dart pub global activate fastforge
fastforge release --name apk

Artifacts are output to dist/. The APK is signed with the release keystore and packages arm64-v8a only (single ABI).

CI Workflows

Workflow Trigger Flutter Channel Contents
build.yml push main (version tags excluded) / opened PR stable dart analyze + flutter test + build APK + upload artifact
manual.yml manual trigger beta / master / stable selectable (default stable) dart analyze + flutter test + build APK + upload artifact
publish.yml version tag (e.g. 1.6.1+250725) stable build APK + create draft Release

Build Notes

  • permission_handler upgraded to 13.0.2: v13 requires compileSdk 37, so android/app/build.gradle.kts pins compileSdk = 37 (above Flutter 3.47 template 36) with AGP 9.1.0 + Android SDK Platform 37. Permission code follows the v13 request-driven pattern (never derive permanentlyDenied from status).
  • Old plugins (e.g. sms_advanced 1.1.0, from the AGP 4.1 era) lack a namespace and hardcode compileSdk 31. The root android/build.gradle.kts auto-fills the namespace from project.group and raises the compileSdk of legacy library modules to 37.
  • Lint tasks are disabled in android/build.gradle.kts (see the Call project note): legacy plugin buildscripts pin old AGP versions and crash the lint worker (AndroidLintWorkAction) when mixed with root AGP 9.1.0; extract*Annotations tasks are replaced with placeholder outputs.
  • kotlin.incremental=false is set in android/gradle.properties: on Windows, Kotlin incremental compilation cannot handle sources (pub cache on the C: drive) and build output (project on the D: drive) on different drives.
  • sms_advanced applies the Kotlin Gradle Plugin itself; future Flutter versions will reject this, so keep an eye out for an alternative.
  • Code quality is guaranteed by dart analyze + flutter test in CI.
  • Run tests locally with flutter test (platform channels are mocked, no device needed).

Project Structure

Sms
├─android              # Android project configuration
├─assets               # Assets
├─lib                  # Flutter source code
│  └─main.dart         # App entry
├─.github/workflows    # CI workflows
└─dist                 # Build output

About

短信清理工具

Topics

Resources

Stars

414 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages