Skip to content

Recipe request: h3 for Android / timezonefinder 8.x fails with x86_64 h3 .so in arm64-v8a APK #3348

@gaxmann

Description

@gaxmann

I have been told to be free to request a working python-for-android recipe for h3.

The practical issue is that current timezonefinder versions depend on h3. With Buildozer / python-for-android, the APK builds, but the application crashes at runtime on an Android arm64 device because the packaged h3 native extension is for x86_64 instead of ARM64.

For now I have to pin:

timezonefinder==4.4.1

because newer timezonefinder versions pull in h3. I am not sure how long this is viable.

Runtime error

On Android, importing timezonefinder imports h3, and this fails:

ImportError: dlopen failed: "/data/data/xx.xx.xx/files/app/_python_bundle/site-packages/h3/_cy/cells.so" is for EM_X86_64 (62) instead of EM_AARCH64 (183)

Relevant traceback:

File ".../timezonefinder/__init__.py", line 1, in <module>
File ".../timezonefinder/timezonefinder.py", line 22, in <module>
File ".../h3/__init__.py", line 3, in <module>
File ".../h3/api/__init__.py", line 3, in <module>
File ".../h3/api/basic_int/__init__.py", line 5, in <module>
File ".../h3/_cy/__init__.py", line 16, in <module>
ImportError: dlopen failed: ".../h3/_cy/cells.so" is for EM_X86_64 (62) instead of EM_AARCH64 (183)

Environment

OS: Linux Mint / Ubuntu 24.04 base
Python: 3.12.3 virtualenv
Buildozer: 1.6.1.dev0 from git
python-for-android branch: develop
python-for-android commit: 70f92243
Android API: 36
Android min API: 24
Android NDK: r28c
Target architecture: arm64-v8a / armeabi-v7a
Device: arm64 Android device

Relevant requirements

In the real project this happens with:

requirements = python3,kivy==2.3.1,android,jpeg,pillow,olefile,pytz,skyfield,numpy,jplephem,sgp4,h3,timezonefinder

A reduced version could look like this:

requirements = python3,kivy==2.3.1,android,numpy,h3,timezonefinder

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions