Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: flutter/flutter
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0c80830e465b
Choose a base ref
...
head repository: flutter/flutter
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6efbbadd2ee7
Choose a head ref
  • 2 commits
  • 101 files changed
  • 3 contributors

Commits on Jun 23, 2026

  1. Bump flutter version from 13.0 to 15.0 (#188187)

    Part of #187741 
    
    Based on #167737
    
    ## Pre-launch Checklist
    
    - [x] I read the [Contributor Guide] and followed the process outlined
    there for submitting PRs.
    - [x] I read the [AI contribution guidelines] and understand my
    responsibilities, or I am not using AI tools.
    - [x] I read the [Tree Hygiene] wiki page, which explains my
    responsibilities.
    - [x] I read and followed the [Flutter Style Guide], including [Features
    we expect every widget to implement].
    - [x] I signed the [CLA].
    - [x] I listed at least one issue that this PR fixes in the description
    above.
    - [x] I updated/added relevant documentation (doc comments with `///`).
    - [x] I added new tests to check the change I am making, or this PR is
    [test-exempt].
    - [x] I followed the [breaking change policy] and added [Data Driven
    Fixes] where supported.
    - [x] All existing and new tests are passing.
    
    ---------
    
    Co-authored-by: Victoria Ashworth <[email protected]>
    LouiseHsu and vashworth authored Jun 23, 2026
    Configuration menu
    Copy the full SHA
    5ead723 View commit details
    Browse the repository at this point in the history
  2. [tool] Fix libapp.so dropped from APK/app bundle (#188119)

    ## Summary
    
    `libapp.so` could be silently dropped from release APKs
    and app bundles, surfacing as either:
    
    - a runtime crash on launch — `VM snapshot invalid and could not be
    inferred from
      settings` — for APKs, or
    - a `Release app bundle failed to strip debug symbols from native
    libraries`
      build failure for app bundles.
    
    ## Root cause
    
    Regression from #181275, which moved `libapp.so` from a jar dependency
    onto a
    Flutter Gradle Plugin source-set `jniLibs` directory. That delivery was
    fragile
    in two ways, both of which dropped `libapp.so` from the merged native
    libraries
    (while `libflutter.so`/`libdartjni.so`, delivered as AAR dependencies,
    were
    unaffected — which is why the failure looked asymmetric):
    
    1. The source-set `jniLibs` `srcDir` was resolved eagerly
    (`.get().asFile`) at
    `:app` configuration time, while the copy task wrote lazily. When `:app`
    was
       evaluated before its build directory had been redirected — a combined
    `subprojects { … evaluationDependsOn(":app") }` block (the pre-#91030
    template
    shape) together with a plugin whose Gradle subproject name sorts before
    `:app` — the two disagreed on the build directory and the staged
    `libapp.so`
       was never merged. (#186810)
    2. The copy task wrote into a directory nested inside the Flutter task's
    own
    output directory, creating overlapping task outputs that undermined
    Gradle's
    incremental checks — e.g. a flavored project where a prior single-ABI
    build
    (a `flutter run` on one device) left the other ABIs missing `libapp.so`.
       (#187388)
    
    ## Fix
    
    Stage `libapp.so` (and any bundled native assets) through a dedicated
    `CopyFlutterJniLibsTask` whose output is registered on each variant via
    AGP's
    variant API:
    [`variant.sources.jniLibs.addGeneratedSourceDirectory(...)`](https://developer.android.com/reference/tools/gradle-api/9.1/com/android/build/api/variant/SourceDirectories#addStaticSourceDirectory(kotlin.String)).
    AGP then
    owns the task dependency, resolves the output path lazily (correct
    regardless of
    project evaluation order or build-dir redirection), keeps it in its own
    output
    directory (no overlapping outputs), and strips/extracts debug symbols
    from it
    like any other native library. This restores the robustness of the
    original
    jar-based inclusion while keeping `libapp.so` strippable.
    
    ## Tests
    
    New integration test `gradle_libapp_so_packaging_test.dart` covering
    both
    triggers: the combined `subprojects` block + a plugin sorted before
    `:app`, and
    a flavored single-ABI build preceding a multi-ABI build.
    
    Fixes #186810
    Fixes #187388
    Fixes #187553
    gmackall authored Jun 23, 2026
    Configuration menu
    Copy the full SHA
    6efbbad View commit details
    Browse the repository at this point in the history
Loading