Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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