v0.6.0 causes AAB downloaded from Play Store crash

Open
#254 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
30/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
android, dart, flutter
Domain
mobile

Research direction

Start with the Android packaging settings in android/app/build.gradle.kts and the dependency changes in pubspec.yaml. Build a fresh AAB, check that arm64 output contains libflutter.so and the PDFium libraries, then validate delivery through Play preflight. Done means the Play-installed app starts without the missing-libflutter.so crash.

Written by the indexing model from the issue text.

Description

awaiting-reporter
E/FlutterLoader( 1809): Flutter initialization failed.
E/FlutterLoader( 1809): java.util.concurrent.ExecutionException: iz5: Could not find 'libflutter.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
E/FlutterLoader( 1809): 	at java.util.concurrent.FutureTask.report(FutureTask.java:124)
E/FlutterLoader( 1809): 	at java.util.concurrent.FutureTask.get(FutureTask.java:193)
E/FlutterLoader( 1809): 	at ke3.a(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:41)
E/FlutterLoader( 1809): 	at ld3.<init>(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:410)
E/FlutterLoader( 1809): 	at ld3.<init>(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:542)
E/FlutterLoader( 1809): 	at q10.i(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:26)
E/FlutterLoader( 1809): 	at e10.onCreate(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:1)
E/FlutterLoader( 1809): 	at com.example.app.MainActivity.onCreate(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:1)
E/FlutterLoader( 1809): 	at android.app.Activity.performCreate(Activity.java:9758)
E/FlutterLoader( 1809): 	at android.app.Activity.performCreate(Activity.java:9727)
E/FlutterLoader( 1809): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1544)
E/FlutterLoader( 1809): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:5024)
E/FlutterLoader( 1809): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:5290)
E/FlutterLoader( 1809): 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:224)
E/FlutterLoader( 1809): 	at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem(TransactionExecutor.java:133)
E/FlutterLoader( 1809): 	at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:103)
E/FlutterLoader( 1809): 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:80)
E/FlutterLoader( 1809): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:3287)
E/FlutterLoader( 1809): 	at android.os.Handler.dispatchMessage(Handler.java:132)
E/FlutterLoader( 1809): 	at android.os.Looper.dispatchMessage(Looper.java:358)
E/FlutterLoader( 1809): 	at android.os.Looper.loopOnce(Looper.java:288)
E/FlutterLoader( 1809): 	at android.os.Looper.loop(Looper.java:392)
E/FlutterLoader( 1809): 	at android.app.ActivityThread.main(ActivityThread.java:10346)
E/FlutterLoader( 1809): 	at java.lang.reflect.Method.invoke(Native Method)
E/FlutterLoader( 1809): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:638)
E/FlutterLoader( 1809): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:972)
E/FlutterLoader( 1809): Caused by: iz5: Could not find 'libflutter.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
E/FlutterLoader( 1809): 	at io.flutter.embedding.engine.FlutterJNI.loadLibrary(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:495)
E/FlutterLoader( 1809): 	at ie3.call(r8-map-id-4fcd48a84a1423494c505c7774aa4a5eefadf134c1c2fe74d282dde8786967d7:164)
E/FlutterLoader( 1809): 	at java.util.concurrent.FutureTask.run(FutureTask.java:328)
E/FlutterLoader( 1809): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1100)
E/FlutterLoader( 1809): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
E/FlutterLoader( 1809): 	at java.lang.Thread.run(Thread.java:1572)

Agent analysis

[!gpt-5.6-luna-in-pi]
Read v3.4.0 source and diffed against v3.5.0.

Root cause

v3.4.0 Android config and v3.5.0 Android config are effectively same. No ABI change caused crash.

Major v3.5.0 Android-relevant changes:

- flutter_readium: ^0.5.0
+ flutter_readium: ^0.6.0

+ image: ^4.10.1
+ pdfrx_engine: ^0.6.1

Those add PDFium native libraries:

libpdfium.so
libpdfium.cr.so
libpdfiumandroid.so

v3.4.0 did not contain PDFium native binaries.

v3.5.0 AAB also became much larger:

v3.4.0-era build: ~97 MB
v3.5.0 build:      ~162 MB

The uploaded v3.5.0 AAB contains:

base/lib/arm64-v8a/libflutter.so

But Play-installed app reports:

Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: []

That means Play’s delivered native-library split is unusable. This is not missing arm64 Flutter output. It is native library packaging/install failure triggered by v3.5’s added PDFium stack.

Why local flutter run works

Local APK install does not follow Play’s App Bundle split delivery and native-library extraction path. It receives a fat/direct APK with native libraries available.

Play:

  1. Processes AAB.
  2. Generates ABI/device-specific split.
  3. Installs native libraries through Android’s native-library packaging path.
  4. Fails to expose libflutter.so at runtime.

Hence local release succeeds while Play version crashes before Dart starts.

Important distinction

flutter_readium 0.6.0 itself is not necessarily directly crashing. Its new PDFium dependency changes native .so packaging. The likely failure is:

PDFium native assets
→ AAB native library packaging/alignment
→ Play ABI split installation
→ FlutterLoader sees empty nativeLibraryDir
→ libflutter.so not found
Current local fix prepared

I removed unnecessary armeabi-v7a and added:

packaging {
    jniLibs {
        useLegacyPackaging = true
    }
}

This forces native libraries into extractable APK packaging, avoiding Play/Android 15+ failures where compressed or improperly aligned native libraries become invisible.

Still pending:

  • Build fresh AAB.
  • Confirm libflutter.so and PDFium exist in arm64 output.
  • Check native alignment.
  • Run Play preflight.
  • Upload only after clean validation.

Current uncommitted files:

android/app/build.gradle.kts
pubspec.yaml

pubspec.yaml currently has version 3.5.0+50; no upload performed yet.

Dominant language
Dart
Stars
35
Forks
19
Avg merge
3d 10h
Merged PRs (30d)
37

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Notalib/flutter_readium

All issues in Notalib/flutter_readium

Similar issues

More Dart issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.