Skip to content

Ensure Android 64-bit compliance and verify Android App Bundle (AAB) build #15

@jimmckeeth

Description

@jimmckeeth

Overview

Google Play Store has required 64-bit support for all new apps since August 2019. The project already targets Android64 in the .dproj files, but 64-bit compliance must be fully verified — especially after migrating the database (Issue #7) and removing Indy (Issue #8), which may have had 32-bit-only native libraries. Additionally, Google Play now recommends Android App Bundle (AAB) format over APK for distribution.

Background

64-bit Requirements

  • Google Play rejects APKs that only include 32-bit native code since August 2021.
  • The project lists Android64 as a target platform, but this must be verified end-to-end:
    • FireDAC's SQLite driver ships with both 32-bit and 64-bit .so libraries — confirm they are deployed.
    • IBLite (pre-migration): IBLite's native libraries may only be 32-bit — this is another reason to migrate to SQLite (Issue Migrate embedded database from InterBase Lite to SQLite via FireDAC #7).
    • FMX runtime: Delphi 13 ships 64-bit FMX Android runtime — but older build configurations may reference 32-bit paths.

Android App Bundle

  • AAB is the required format for new Play Store submissions since August 2021.
  • Delphi 13 supports AAB export via Project > Deployment > Build AAB.
  • AAB allows Play Store to deliver only the device-appropriate ABI (arm64-v8a vs armeabi-v7a), reducing download size.
  • The lab instructions should demonstrate building an AAB, not just an APK.

Native Libraries to Audit

After all other issues are resolved, audit the lib/ folders in the build output:

  • lib/armeabi-v7a/ (32-bit ARM)
  • lib/arm64-v8a/ (64-bit ARM)

Both should contain matching .so files. Any library present only in armeabi-v7a/ will block Play Store submission.

Files Affected

All FieldLogger.dproj files (Android64 platform configuration)
lab-src/Lab*/deployment files  (native library deployment entries)

Steps to Address

  1. Build the app for Android64 target in Delphi 13 — confirm it compiles without errors.
  2. Inspect the build output lib/ directory: confirm libFMX.so, libFireDACSQLiteDrv.so, and any other .so files exist in arm64-v8a/.
  3. After migrating to SQLite (Issue Migrate embedded database from InterBase Lite to SQLite via FireDAC #7), confirm the SQLite driver's 64-bit .so is present in arm64-v8a/.
  4. Attempt an AAB build (Project > Deployment > Build Android App Bundle) and verify the output structure.
  5. Test the AAB on an Android 13 emulator using bundletool:
    bundletool build-apks --bundle=FieldLogger.aab --output=FieldLogger.apks --local-testing
    bundletool install-apks --apks=FieldLogger.apks
  6. Update lab instructions to document the AAB build process.
  7. Verify that no 32-bit-only third-party .so files remain after all dependency updates.

Test Plan

  • Android64 target compiles without errors in Delphi 13.
  • Build output contains lib/arm64-v8a/libFMX.so and all required native libraries.
  • App installs and runs on an arm64 Android 13 emulator (not x86 — use arm64 system image).
  • All features (camera, GPS, database, sensors) function correctly on arm64 device.
  • AAB file builds without errors via Delphi 13.
  • bundletool installs the AAB-derived APK set on an Android 13 emulator successfully.
  • Google Play pre-launch report (or apkanalyzer) confirms 64-bit native libraries are present.
  • No UnsatisfiedLinkError occurs at runtime from missing 64-bit .so files.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions