markqvist / Sideband

LXMF client for Android, Linux and macOS allowing you to communicate with people or LXMF-compatible systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, or anything else Reticulum supports.
Other
388 stars 27 forks source link

Support for armeabi-v7a and API level < 27 #9

Closed Cinorid closed 2 years ago

markqvist commented 2 years ago

Hi @Cinorid

Could you provide some more detail or context to this request?

I am interested to hear what kind of devices you want to run Sideband on, that needs API level 27 and the v7a ABI? Ie., why is supporting those platforms important to you?

markqvist commented 2 years ago

Also, what specific API levels are you wanting support for? Just "lower than 27" is a pretty wide target ;)

Cinorid commented 2 years ago

@markqvist Thank you for your reply. for example Huawei Y7 Prime running android 7.0 with CPU architecture armeabi-v7a, so this device cannot run this app. There are still plenty of mobile phones running Android 5, 6, and 7. https://gs.statcounter.com/android-version-market-share/all/iran

markqvist commented 2 years ago

Thanks @Cinorid, got you.

Here is a debug build for you targeted at Min API level 24 and armeabi-v7a. Can you please try it out? Unfortunately I don't even own any Android devices with a 32-bit SoC, so I have not even tried installing it myself. Don't know if it will even work, but please give it a try and let me know how it works!

sideband-0.2.5-armeabi-v7a-debug.zip

Cinorid commented 2 years ago

@markqvist sure. I'm Testing :)

Cinorid commented 2 years ago

@markqvist Unfortunately it stuck in loading screen Screenshot_20221019-152750.png

markqvist commented 2 years ago

Can you give me output of adb logcat | grep "python\|sidebandservice" when starting the app?

Cinorid commented 2 years ago

Can you give me output of adb logcat | grep "python\|sidebandservice" when starting the app?

10-19 15:38:02.097  5693  5762 I python  : Initializing Python for Android
10-19 15:38:02.097  5693  5762 I python  : Setting additional env vars from p4a_env_vars.txt
10-19 15:38:02.098  5693  5762 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
10-19 15:38:02.098  5693  5762 I python  : /data/user/0/io.unsigned.sideband/files/app
10-19 15:38:02.102  5693  5762 I python  : Preparing to initialize python
10-19 15:38:02.102  5693  5762 I python  : _python_bundle dir exists
10-19 15:38:02.103  5693  5762 I python  : calculated paths to be...
10-19 15:38:02.103  5693  5762 I python  : /data/user/0/io.unsigned.sideband/files/app/_python_bundle/stdlib.zip:/data/user/0/io.unsigned.sideband/files/app/_python_bundle/modules
10-19 15:38:02.121  5693  5762 I python  : set wchar paths...
10-19 15:38:02.302  5693  5762 I python  : Initialized python
10-19 15:38:02.302  5693  5762 I python  : AND: Init threads
10-19 15:38:02.304  5693  5762 I python  : testing python print redirection
10-19 15:38:02.306  5693  5762 I python  : Android path ['.', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/stdlib.zip', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/modules', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages']
10-19 15:38:02.307  5693  5762 I python  : os.environ is environ({'PATH': '/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/system/vendor/bin:/vendor/xbin:/system/vendor/xbin:/product/bin:/product/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar:/system/framework/hwEmui.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwframework.jar:/system/framework/org.simalliance.openmobileapi.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwaps.jar:/system/framework/hwcustEmui.jar:/system/framework/hwcustTelephony-common.jar:/system/framework/hwcustframework.jar:/system/framework/servicehost.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/hwServices.jar:/system/framework/hwWifi-service.jar:/system/framework/hwcustServices.jar:/system/framework/hwcustwifi-service.jar', 'OEM_ROOT': '/hw_oem', 'CUST_POLICY_DIRS': '/system/emui/base:/system/emui/oversea:/system/emui/lite:/system/global:/vendor/etc:/product/etc:/hw_oem:/cust/hw/normal:/data/cust:/version/region_comm/oversea:/cust_spec', 'ANDROID_SOCKET_zygote': '14', 'ANDROID_ENTRYPOINT': 'main.pyc', 'ANDROID_ARGUMENT': '/data/user/0/io.unsigned.sideband/files/app', 'ANDROID_APP_PATH': '/data/user/0/io.unsigned.sideband/files/app', 'ANDROID_PRIVATE': '/data/user/0/io.unsigned.sideband/files', 'ANDROID_UNPACK': '/data/user/0/io.unsigned.sideband/files/app', 'PYTHONHOME': '/data/user/0/io.unsigned.sideband/files/app', 'PYTHONPATH': '/data/user/0/io.unsigned.sideband/files/app:/data/user/0/io.unsigned.sideband/files/app/lib', 'PYTHONOPTIMIZE': '2', 'P4A_BOOTSTRAP': 'SDL2', 'PYTHON_NAME': 'python', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'sensor', 'P4A_NUMERIC_VERSION': '20221018', 'P4A_MINSDK': '24', 'LC_CTYPE': 'C.UTF-8'})
10-19 15:38:02.307  5693  5762 I python  : Android kivy bootstrap done. __name__ is __main__
10-19 15:38:02.307  5693  5762 I python  : AND: Ran string
10-19 15:38:02.307  5693  5762 I python  : Run user program, change dir and execute entrypoint
10-19 15:38:03.093  5693  5762 I python  : [WARNING] [Config      ] Older configuration version detected (0 instead of 24)
10-19 15:38:03.094  5693  5762 I python  : [WARNING] [Config      ] Upgrading configuration in progress.
10-19 15:38:03.102  5693  5762 I python  : [INFO   ] [Logger      ] Record log in /data/user/0/io.unsigned.sideband/files/app/.kivy/logs/kivy_22-10-19_0.txt
10-19 15:38:03.103  5693  5762 I python  : [INFO   ] [Kivy        ] v2.1.0
10-19 15:38:03.104  5693  5762 I python  : [INFO   ] [Kivy        ] Installed at "/data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
10-19 15:38:03.105  5693  5762 I python  : [INFO   ] [Python      ] v3.9.5 (default, Oct 19 2022, 13:29:05)
10-19 15:38:03.105  5693  5762 I python  : [Clang 12.0.8 (https://android.googlesource.com/toolchain/llvm-project c935d99d
10-19 15:38:03.106  5693  5762 I python  : [INFO   ] [Python      ] Interpreter at ""
10-19 15:38:03.107  5693  5762 I python  : [INFO   ] [Logger      ] Purge log fired. Processing...
10-19 15:38:03.108  5693  5762 I python  : [INFO   ] [Logger      ] Purge finished!
10-19 15:38:03.113  5693  5762 I python  : [INFO   ] [KivyMD      ] 1.1.0.dev0 (installed at "/data/data/io.unsigned.sideband/files/app/./kivymd/__init__.pyc")
10-19 15:38:03.124  5693  5762 I python  : [INFO   ] [Factory     ] 189 symbols loaded
10-19 15:38:05.071  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.resourcefind> with limit=None, timeout=60
10-19 15:38:05.105  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.image> with limit=None, timeout=60
10-19 15:38:05.106  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.atlas> with limit=None, timeout=None
10-19 15:38:05.145  5693  5762 I python  : [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
10-19 15:38:05.148  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.texture> with limit=1000, timeout=60
10-19 15:38:05.148  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.shader> with limit=1000, timeout=3600
10-19 15:38:05.196  5693  5762 I python  : [INFO   ] [Text        ] Provider: sdl2
10-19 15:38:05.215  5693  5762 I python  : [DEBUG  ] [Cache       ] register <kv.lang> with limit=None, timeout=None
10-19 15:38:05.974  5693  5762 I python  : [INFO   ] [Window      ] Provider: sdl2
10-19 15:38:06.013  5693  5762 I python  : [INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
10-19 15:38:06.015  5693  5762 I python  : [INFO   ] [GL          ] Backend used <sdl2>
10-19 15:38:06.015  5693  5762 I python  : [INFO   ] [GL          ] OpenGL version <b'OpenGL ES 3.2 V@145.0 (GIT@Ib1167d03fb)'>
10-19 15:38:06.016  5693  5762 I python  : [INFO   ] [GL          ] OpenGL vendor <b'Qualcomm'>
10-19 15:38:06.017  5693  5762 I python  : [INFO   ] [GL          ] OpenGL renderer <b'Adreno (TM) 505'>
10-19 15:38:06.018  5693  5762 I python  : [INFO   ] [GL          ] OpenGL parsed version: 3, 2
10-19 15:38:06.019  5693  5762 I python  : [INFO   ] [GL          ] Texture max size <16384>
10-19 15:38:06.020  5693  5762 I python  : [INFO   ] [GL          ] Texture max units <16>
10-19 15:38:06.071  5693  5762 I python  : [DEBUG  ] [Shader      ] Fragment compiled successfully
10-19 15:38:06.078  5693  5762 I python  : [DEBUG  ] [Shader      ] Vertex compiled successfully
10-19 15:38:06.096  5693  5762 I python  : [DEBUG  ] [ImageSDL2   ] Load </data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/data/glsl/default.png>
10-19 15:38:06.104  5693  5762 I python  : [INFO   ] [Window      ] auto add sdl2 input provider
10-19 15:38:06.108  5693  5762 I python  : [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
10-19 15:38:06.522  5693  5762 I python  : [INFO   ] [Clipboard   ] Provider: android
10-19 15:38:06.944  5693  5762 I python  : [2022-10-19 15:38:06] [Notice] Creating new Sideband configuration...
10-19 15:38:07.651  5693  5762 I python  : [2022-10-19 15:38:07] [Notice] Configuring Reticulum instance...
10-19 15:38:07.651  5693  5762 I python  : [2022-10-19 15:38:07] [Notice] Not enabling Reticulum Transport
10-19 15:38:07.656  5693  5762 I python  : [DEBUG  ] [App         ] Loading kv <./sideband.kv>
10-19 15:38:07.658  5693  5762 I python  : [DEBUG  ] [App         ] kv <./sideband.kv> not found
10-19 15:38:08.680  5693  5762 I python  : [DEBUG  ] [Resource    ] add </system/fonts> in path list
10-19 15:38:08.681  5693  5762 I python  : [DEBUG  ] [Resource    ] add </data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/data/fonts> in path list
10-19 15:38:08.957  5693  5762 I python  : [DEBUG  ] [Cache       ] register <textinput.label> with limit=None, timeout=60.0
10-19 15:38:08.958  5693  5762 I python  : [DEBUG  ] [Cache       ] register <textinput.width> with limit=None, timeout=60.0
10-19 15:38:09.062  5693  5762 I python  : [DEBUG  ] [Atlas       ] Load </data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/data/images/defaulttheme.atlas>
10-19 15:38:09.068  5693  5762 I python  : [DEBUG  ] [Atlas       ] Need to load 1 images
10-19 15:38:09.069  5693  5762 I python  : [DEBUG  ] [Atlas       ] Load </data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/data/images/defaulttheme-0.png>
10-19 15:38:09.071  5693  5762 I python  : [DEBUG  ] [ImageSDL2   ] Load </data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/data/images/defaulttheme-0.png>
10-19 15:38:19.155  5693  5762 I python  : [DEBUG  ] [Base        ] Create provider from android
10-19 15:38:19.156  5693  5762 I python  : [WARNING] [Base        ] Unknown <android> provider
10-19 15:38:19.157  5693  5762 I python  : [INFO   ] [Base        ] Start application main loop
10-19 15:38:19.191  5693  5762 I python  : [INFO   ] [GL          ] NPOT texture support is available
10-19 15:38:23.590  5693  5762 I python  : [2022-10-19 15:38:23] [Notice] Launching platform-specific service for RNS and LXMF
10-19 15:38:24.281  5988  6004 I python  : Initializing Python for Android
10-19 15:38:24.281  5988  6004 I python  : Setting additional env vars from p4a_env_vars.txt
10-19 15:38:24.281  5988  6004 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
10-19 15:38:24.282  5988  6004 I python  : /data/user/0/io.unsigned.sideband/files/app
10-19 15:38:24.282  5988  6004 I python  : Preparing to initialize python
10-19 15:38:24.282  5988  6004 I python  : _python_bundle dir exists
10-19 15:38:24.282  5988  6004 I python  : calculated paths to be...
10-19 15:38:24.282  5988  6004 I python  : /data/user/0/io.unsigned.sideband/files/app/_python_bundle/stdlib.zip:/data/user/0/io.unsigned.sideband/files/app/_python_bundle/modules
10-19 15:38:24.282  5988  6004 I python  : set wchar paths...
10-19 15:38:24.408  5988  6004 I python  : Initialized python
10-19 15:38:24.409  5988  6004 I python  : AND: Init threads
10-19 15:38:24.410  5988  6004 I sidebandservice: testing python print redirection
10-19 15:38:24.412  5988  6004 I sidebandservice: Android path ['.', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/stdlib.zip', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/modules', '/data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages']
10-19 15:38:24.413  5988  6004 I sidebandservice: os.environ is environ({'PATH': '/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/system/vendor/bin:/vendor/xbin:/system/vendor/xbin:/product/bin:/product/xbin', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar:/system/framework/hwEmui.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwframework.jar:/system/framework/org.simalliance.openmobileapi.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwaps.jar:/system/framework/hwcustEmui.jar:/system/framework/hwcustTelephony-common.jar:/system/framework/hwcustframework.jar:/system/framework/servicehost.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/hwServices.jar:/system/framework/hwWifi-service.jar:/system/framework/hwcustServices.jar:/system/framework/hwcustwifi-service.jar', 'OEM_ROOT': '/hw_oem', 'CUST_POLICY_DIRS': '/system/emui/base:/system/emui/oversea:/system/emui/lite:/system/global:/vendor/etc:/product/etc:/hw_oem:/cust/hw/normal:/data/cust:/version/region_comm/oversea:/cust_spec', 'ANDROID_SOCKET_zygote': '14', 'ANDROID_PRIVATE': '/data/user/0/io.unsigned.sideband/files', 'ANDROID_ARGUMENT': '/data/user/0/io.unsigned.sideband/files/app', 'ANDROID_APP_PATH': '/data/user/0/io.unsigned.sideband/files/app', 'ANDROID_ENTRYPOINT': 'services/sidebandservice.py', 'PYTHONOPTIMIZE': '2', 'PYTHON_NAME': 'sidebandservice', 'PYTHONHOME': '/data/user/0/io.unsigned.sideband/files/app', 'PYTHONPATH': '/data/user/0/io.unsigned.sideband/files/app:/data/user/0/io.unsigned.sideband/files/app/lib', 'PYTHON_SERVICE_ARGUMENT': '/data/user/0', 'P4A_BOOTSTRAP': 'SDL2', 'ANDROID_UNPACK': '/data/user/0/io.unsigned.sideband/files/app', 'P4A_IS_WINDOWED': 'True', 'P4A_ORIENTATION': 'sensor', 'P4A_NUMERIC_VERSION': '20221018', 'P4A_MINSDK': '24', 'LC_CTYPE': 'C.UTF-8'})
10-19 15:38:24.413  5988  6004 I sidebandservice: Android kivy bootstrap done. __name__ is __main__
10-19 15:38:24.413  5988  6004 I python  : AND: Ran string
10-19 15:38:24.413  5988  6004 I python  : Run user program, change dir and execute entrypoint
10-19 15:38:25.178  5988  6004 I sidebandservice: [INFO   ] [Logger      ] Record log in /data/user/0/io.unsigned.sideband/files/app/.kivy/logs/kivy_22-10-19_1.txt
10-19 15:38:25.179  5988  6004 I sidebandservice: [INFO   ] [Kivy        ] v2.1.0
10-19 15:38:25.179  5988  6004 I sidebandservice: [INFO   ] [Kivy        ] Installed at "/data/user/0/io.unsigned.sideband/files/app/_python_bundle/site-packages/kivy/__init__.pyc"
10-19 15:38:25.180  5988  6004 I sidebandservice: [INFO   ] [Python      ] v3.9.5 (default, Oct 19 2022, 13:29:05)
10-19 15:38:25.180  5988  6004 I sidebandservice: [Clang 12.0.8 (https://android.googlesource.com/toolchain/llvm-project c935d99d
10-19 15:38:25.181  5988  6004 I sidebandservice: [INFO   ] [Python      ] Interpreter at ""
10-19 15:38:25.182  5988  6004 I sidebandservice: [INFO   ] [Logger      ] Purge log fired. Processing...
10-19 15:38:25.183  5988  6004 I sidebandservice: [INFO   ] [Logger      ] Purge finished!
10-19 15:38:26.966  5988  6004 I sidebandservice:  Traceback (most recent call last):
10-19 15:38:26.967  5988  6004 I sidebandservice:    File "/home/markqvist/Information/Source/Sideband.32bit/sbapp/.buildozer/android/app/services/sidebandservice.py", line 26, in <module>
10-19 15:38:26.968  5988  6004 I sidebandservice:    File "/home/markqvist/Information/Source/Sideband.32bit/sbapp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/sideband/armeabi-v7a/jnius/reflect.py", line 211, in autoclass
10-19 15:38:26.969  5988  6004 I sidebandservice:    File "jnius/jnius_export_func.pxi", line 26, in jnius.jnius.find_javaclass
10-19 15:38:26.969  5988  6004 I sidebandservice:    File "jnius/jnius_utils.pxi", line 91, in jnius.jnius.check_exception
10-19 15:38:26.970  5988  6004 I sidebandservice:  jnius.jnius.JavaException: JVM exception occurred: Didn't find class "android.app.NotificationChannel" on path: DexPathList[[zip file "/data/app/io.unsigned.sideband-1/base.apk"],nativeLibraryDirectories=[/data/app/io.unsigned.sideband-1/lib/arm, /data/app/io.unsigned.sideband-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/vendor/lib, /product/lib]] java.lang.ClassNotFoundException
10-19 15:38:26.971  5988  6004 I python  : Python for android ended.
markqvist commented 2 years ago

Thanks, that makes sense. Give me a sec and let me see if I can do something.

markqvist commented 2 years ago

Notifications API changed on API level 26 (Android 8.0). For now I just disabled notifications code. Can you try with this one: sideband-0.2.5-armeabi-v7a-no_notifications.zip

Cinorid commented 2 years ago

@markqvist It's working now. thank you very much ❤

markqvist commented 2 years ago

Awesome. Please test it out and let me know if you find anything else. If it is actually more or less workable all-round, I could integrate the necessary changes into the primary codebase and set up build steps for supplying armeabi-v7a binaries with the normal releases.

markqvist commented 2 years ago

Hi @Cinorid

Please take a look at this: https://github.com/markqvist/Reticulum/discussions/123

I updated the armeabi-v7a build to the latest 0.2.5 version and created a universal APK that is easier to share (works both on 32 and 64 bit).