Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
546ae3c
Fix pub score Flutter SDK setup
nohli Aug 1, 2026
c275038
Restore Flutter 3.10 Android compatibility
nohli Jul 31, 2026
a159555
Require Flutter 3.44 and adopt AGP 9 Kotlin support
nohli Aug 1, 2026
afedcf6
Remove obsolete compatibility release notes
nohli Aug 13, 2026
a2bb4f4
Update the Android example to AGP 9.2.1
nohli Aug 13, 2026
07c3085
Update the Android wrapper to Gradle 9.7.1
nohli Sep 15, 2026
e600376
Standardize package formatting at 120 columns
nohli Sep 15, 2026
ac0a2b2
Teach Pana the package formatter width
nohli Sep 15, 2026
0657298
Correct Android migration documentation
nohli Sep 18, 2026
7c7a248
Require Flutter 3.47 for built-in Kotlin
nohli Sep 18, 2026
3ef04aa
Accept unpadded Android IDs in integration tests
nohli Sep 18, 2026
a3d238d
Bump actions/setup-java from 5 to 6
dependabot[bot] Aug 27, 2026
fab8d6e
ci: run Dart analyzer directly
nohli Aug 1, 2026
494a7b0
Treat analyzer infos as CI failures
nohli Sep 18, 2026
7812d96
Limit Dependabot to major GitHub Actions updates
nohli Aug 1, 2026
815175e
ci: use official Dart publishing
nohli Aug 1, 2026
84c31cc
Verify packages before publishing
nohli Sep 18, 2026
bde515c
Correct publishing permissions and tag matching
nohli Sep 18, 2026
9b7eb93
Use the documented release tag pattern
nohli Sep 24, 2026
547ac69
Use the configured Dart formatter width
nohli Sep 25, 2026
aedc4ab
Run CI on branches and filter Android integration tests
nohli Sep 25, 2026
7766da5
Preserve every Android integration run
nohli Sep 25, 2026
ec09254
Document the Kotlin runtime pin
nohli Sep 25, 2026
d22a252
Run Dependabot updates weekly
nohli Sep 25, 2026
ac5359d
Use canonical Dependabot example paths
nohli Sep 25, 2026
c3122ff
Give Flutter jobs enough setup time
nohli Sep 25, 2026
d87debb
Merge pull request #125 from fluttercommunity/dependabot/github_actio…
nohli Sep 25, 2026
30137bf
Merge pull request #127 from fluttercommunity/ci/replace-dart-analyzer
nohli Sep 25, 2026
4c3dfe5
Merge pull request #132 from fluttercommunity/ci/use-configured-forma…
nohli Sep 25, 2026
7e635b2
Merge pull request #128 from fluttercommunity/ci/replace-dart-publisher
nohli Sep 25, 2026
965b965
Merge pull request #130 from fluttercommunity/dependabot-major-update…
nohli Sep 25, 2026
944915f
Merge reviewed maintenance updates into CI checks
nohli Sep 25, 2026
63e3f11
Merge pull request #133 from fluttercommunity/ci/run-checks-on-pull-r…
nohli Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,14 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
interval: "weekly"

- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "daily"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
interval: "weekly"

- package-ecosystem: "pub"
directory: "example"
directory: "/example"
schedule:
interval: "daily"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
interval: "weekly"
7 changes: 4 additions & 3 deletions .github/workflows/flutter_build_example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ on:
pull_request:
push:
branches:
- main
- '**'

jobs:
build_android:
name: Build example for Android
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7

- name: Setup Java
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: 17
Expand All @@ -35,6 +35,7 @@ jobs:
run: flutter pub get

- name: Flutter build appbundle
timeout-minutes: 10
run: |
cd example
flutter build appbundle --release
21 changes: 13 additions & 8 deletions .github/workflows/flutter_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ on:
pull_request:
push:
branches:
- main
- '**'

jobs:
check_pub_dependencies:
name: Check dependencies
timeout-minutes: 10
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -26,12 +26,13 @@ jobs:
run: flutter config --no-analytics

- name: Flutter pub get
timeout-minutes: 10
run: flutter pub get

check_formatting:
name: Check formatting
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7
Expand All @@ -49,11 +50,12 @@ jobs:
run: flutter pub get

- name: Check Dart formatting
run: dart format --line-length 80 --set-exit-if-changed .
timeout-minutes: 10
run: dart format --set-exit-if-changed .

analyze:
name: Dart analyze
timeout-minutes: 10
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -72,12 +74,13 @@ jobs:
run: flutter pub get

- name: Run Dart analyze
uses: invertase/github-action-dart-analyzer@v3.0.0
timeout-minutes: 10
run: dart analyze --fatal-infos

test:
name: Flutter test
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7
Expand All @@ -95,12 +98,13 @@ jobs:
run: flutter pub get

- name: Flutter test
timeout-minutes: 10
run: flutter test

test_example:
name: Flutter test example
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v7
Expand All @@ -120,6 +124,7 @@ jobs:
flutter pub get

- name: Flutter test example
timeout-minutes: 10
run: |
cd example
flutter test
34 changes: 28 additions & 6 deletions .github/workflows/integration_tests_android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,35 @@ name: Integration Tests (Android)
on:
workflow_dispatch:
pull_request:
paths-ignore:
- '**.md'
- 'LICENSE'
- '.github/dependabot.yml'
- '.github/workflows/flutter_build_example.yml'
- '.github/workflows/flutter_checks.yml'
- '.github/workflows/pub_publish.yml'
- '.github/workflows/pub_publish_dry_run.yml'
- '.github/workflows/pub_score.yml'
- 'analysis_options.yaml'
- 'test/**'
- 'example/analysis_options.yaml'
- 'example/test/**'
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
- '**'
paths-ignore:
- '**.md'
- 'LICENSE'
- '.github/dependabot.yml'
- '.github/workflows/flutter_build_example.yml'
- '.github/workflows/flutter_checks.yml'
- '.github/workflows/pub_publish.yml'
- '.github/workflows/pub_publish_dry_run.yml'
- '.github/workflows/pub_score.yml'
- 'analysis_options.yaml'
- 'test/**'
- 'example/analysis_options.yaml'
- 'example/test/**'

jobs:
integration_test:
Expand All @@ -27,7 +49,7 @@ jobs:
uses: actions/checkout@v7

- name: Setup Java
uses: actions/setup-java@v5
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: 17
Expand Down
36 changes: 28 additions & 8 deletions .github/workflows/pub_publish.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,37 @@
name: Pub publish

on:
release:
types: [published]
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'

jobs:
publish:
name: Pub publish
verify:
name: Verify package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout repository
uses: actions/checkout@v7

- name: Publish
uses: k-paxian/dart-package-publisher@v1.6
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
credentialJson: ${{ secrets.CREDENTIALS }}
channel: stable
cache: true

- name: Disable analytics
run: flutter config --no-analytics

- name: Publish dry run
run: dart pub publish --dry-run

- name: Flutter test
run: flutter test

publish:
name: Pub publish
needs: verify
permissions:
contents: read
id-token: write
uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1
23 changes: 17 additions & 6 deletions .github/workflows/pub_publish_dry_run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,30 @@ name: Pub publish dry run

on:
workflow_dispatch:
pull_request:
push:
branches:
- main
- '**'

jobs:
publish-dry-run:
name: Pub publish dry run
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout repository
uses: actions/checkout@v7

- name: Publish dry run
uses: k-paxian/dart-package-publisher@v1.6
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
credentialJson: MockCredentialJson
dryRunOnly: true
channel: stable
cache: true

- name: Disable analytics
run: flutter config --no-analytics

- name: Publish dry run
run: dart pub publish --dry-run

- name: Flutter test
run: flutter test
32 changes: 15 additions & 17 deletions .github/workflows/pub_score.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,27 @@ on:
pull_request:
push:
branches:
- main
- '**'

jobs:
check-score:
name: Check pub score
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Checkout repository
uses: actions/checkout@v7

- uses: axel-op/dart-package-analyzer@v3
id: workflow
- name: Install Flutter
uses: subosito/flutter-action@v2
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
channel: stable
cache: true

- name: Check score
env:
TOTAL: ${{ steps.workflow.outputs.total }}
TOTAL_MAX: ${{ steps.workflow.outputs.total_max }}
run: |
MISSING_POINTS=$(( $TOTAL_MAX - $TOTAL ))
if (( MISSING_POINTS > 0 ))
then
echo Score can be improved!
echo Run pana to find out how.
exit 1
fi
- name: Disable analytics
run: flutter config --no-analytics

- name: Install pana
run: dart pub global activate pana

- name: Check pub score
run: dart pub global run pana --exit-code-threshold 0 .
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 0.6.0

* **Breaking:** Require Flutter 3.47 and Android API 24 or newer.
* Remove the plugin-owned Kotlin Gradle Plugin so host apps can use Android
Gradle Plugin 9's built-in Kotlin support.
* Update the Android example to Android Gradle Plugin 9.2.1 and Gradle 9.7.1.

## 0.5.2+1

* Reorder README sections.
Expand Down
12 changes: 5 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,11 @@ You can use persistent identifiers as long as you have a [privacy policy](https:

## Android build compatibility

`android_id` supports Android Gradle Plugin 9 and Flutter's built-in Kotlin mode.
It also keeps working with AGP 8 and Flutter's temporary
`android.builtInKotlin=false` opt-out.
`android_id` 0.6.0 or newer requires Flutter 3.47, Android Gradle Plugin 9's
built-in Kotlin support, and Android API 24 or newer. The plugin does not apply
or provide a separate Kotlin Gradle Plugin.

The plugin no longer provides its own Android Gradle Plugin or Kotlin Gradle
Plugin classpaths. It only applies the Kotlin Gradle Plugin when the host build
still needs it. This fixes errors such as:
This fixes errors such as:

```text
The 'org.jetbrains.kotlin.android' plugin is no longer required for Kotlin
Expand All @@ -94,7 +92,7 @@ If you're experiencing `MissingPluginException`, try these steps in order:
flutter run
```

2. **Check Flutter Version**: Ensure you're using Flutter 3.10.0 or higher
2. **Check Flutter Version**: Ensure you're using Flutter 3.47.0 or higher
```bash
flutter --version
```
Expand Down
7 changes: 7 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
include: package:flutter_lints/flutter.yaml

formatter:
page_width: 120
analyzer:
exclude:
- build/**
- android/**
Loading
Loading