immich
immich copied to clipboard
[BUG] Can't launch Android app anymore after updating to 1.47.0
The bug
When launching the app, it is stuck on the logo loading. It does not launch anymore.
The OS that Immich Server is running on
Synology DSM 7.2
Version of Immich Server
v1.47.3
Version of Immich Mobile App
v1.47.0
Platform with the issue
- [ ] Server
- [ ] Web
- [X] Mobile
Your docker-compose.yml content
# I don't think the docker-compose.yml is relevant for this issue, but here it is anyway
version: "3.8"
networks:
traefik_proxy:
external:
name: traefik_proxy
services:
immich-server:
image: altran1502/immich-server:release
entrypoint: ["/bin/sh", "./start-server.sh"]
networks:
- traefik_proxy
- default
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- sockets:/sockets
env_file:
- .env
environment:
- NODE_ENV=production
depends_on:
- redis
- database
restart: always
labels:
traefik.enable: "true"
traefik.docker.network: traefik_proxy
traefik.http.services.immich-api-svc.loadbalancer.server.port: "3001"
traefik.http.routers.immich-api-rtr.rule: "Host(`immich.$DOMAINNAME`) && Pathprefix(`/api`)"
traefik.http.routers.immich-api-rtr.priority: 20
traefik.http.middlewares.immich-api-strip.stripprefix.prefixes: "/api"
traefik.http.routers.immich-api-rtr.middlewares: immich-api-strip,chain-basic@file
traefik.http.routers.immich-api-rtr.service: immich-api-svc
traefik.http.routers.immich-api-rtr.tls: true
traefik.http.routers.immich-api-rtr.tls.certresolver: dns-cloudflare
traefik.http.routers.immich-api-rtr.entrypoints: https
immich-microservices:
image: altran1502/immich-server:release
entrypoint: ["/bin/sh", "./start-microservices.sh"]
networks:
- default
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- sockets:/sockets
env_file:
- .env
environment:
- NODE_ENV=production
depends_on:
- redis
- database
restart: always
immich-machine-learning:
build:
context: $DOCKERDIR/immich/immich-ml
dockerfile: Dockerfile
entrypoint: ["/bin/sh", "./entrypoint.sh"]
networks:
- default
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
env_file:
- .env
environment:
- NODE_ENV=production
depends_on:
- database
restart: always
immich-web:
image: altran1502/immich-web:release
entrypoint: ["/bin/sh", "./entrypoint.sh"]
networks:
- default
- traefik_proxy
env_file:
- .env
restart: always
labels:
traefik.enable: "true"
traefik.docker.network: traefik_proxy
traefik.http.services.immich-svc.loadbalancer.server.port: "3000"
traefik.http.routers.immich-rtr.rule: "Host(`immich.$DOMAINNAME`)"
traefik.http.routers.immich-rtr.priority: 10
traefik.http.routers.immich-rtr.service: immich-svc
traefik.http.routers.immich-rtr.middlewares: chain-basic@file
traefik.http.routers.immich-rtr.tls: true
traefik.http.routers.immich-rtr.tls.certresolver: dns-cloudflare
traefik.http.routers.immich-rtr.entrypoints: https
redis:
container_name: immich_redis
image: redis:6.2
restart: always
networks:
- default
command: redis-server /etc/redis.conf
volumes:
- sockets:/sockets
- $DOCKERDIR/immich/redis.conf:/etc/redis.conf
- /etc/TZ:/etc/timezone:ro
- $DOCKERDIR/immich/redisdb:/db
database:
container_name: immich_postgres
image: postgres:14-bullseye
user: 1026:100
command: postgres -c unix_socket_directories='/var/run/postgresql/,/sockets/'
env_file:
- .env
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
PG_DATA: /var/lib/postgresql/data
PGPORT: ${DB_PORT}
volumes:
- $DOCKERDIR/immich/pgdata:/var/lib/postgresql/data
- sockets:/sockets
restart: always
volumes:
sockets:
external: true
Your .env content
# I don't think the .env file is relevant, but here it is anyway
DB_HOSTNAME=/sockets
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich
DB_PORT=5433
REDIS_PASSWORD="redispassword"
REDIS_SOCKET=/sockets/immich_redis.sock
UPLOAD_LOCATION=/uploads
JWT_SECRET=jwtsecret
REVERSE_GEOCODING_PRECISION=3
Reproduction steps
1. Launch app.
2. See error
Additional information
Logcat
2-21 15:39:02.489 4557 4557 W alextran.immich: type=1400 audit(0.0:53): avc: denied { read } for name="max_map_count" dev="proc" ino=60321 scontext=u:r:untrusted_app:s0:c170,c257,c512,c768 tcontext=u:object_r:proc_max_map_count:s0 tclass=file permissive=0 app=app.alextran.immich
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: QUALCOMM build : 9fb8420ccd, I4cee0650f2
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Build Date : 05/17/21
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: OpenGL ES Shader Compiler Version: EV031.32.02.12
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Local Branch :
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Remote Branch :
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Remote Branch :
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Reconstruct Branch :
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Build Config : S P 10.0.7 AArch64
02-21 15:39:02.502 4557 4557 I AdrenoGLES-0: Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
02-21 15:39:02.506 4557 4557 I AdrenoGLES-0: PFP: 0x016ee197, ME: 0x00000000
02-21 15:39:02.574 4557 4557 D BackupWorker: startWork
02-21 15:39:02.574 4557 4586 W FlutterJNI: FlutterJNI.loadLibrary called more than once
02-21 15:39:02.574 4557 4581 W FlutterJNI: FlutterJNI.prefetchDefaultFontManager called more than once
02-21 15:39:02.576 4557 4575 I WM-Processor: Moving WorkSpec (de6711dc-ebf9-498f-9db6-b1137dcc67de) to the foreground
02-21 15:39:02.589 4557 4557 I WM-SystemFgDispatcher: Started foreground service Intent { act=ACTION_START_FOREGROUND cmp=app.alextran.immich/androidx.work.impl.foreground.SystemForegroundService (has extras) }
02-21 15:39:02.590 4557 4557 W FlutterJNI: FlutterJNI.init called more than once
02-21 15:39:02.652 4557 4587 I flutter : Enabled high refresh mode
02-21 15:39:02.657 4557 4587 E flutter : [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: IsarError: Could not initialize IsarCore library for processor architecture "android_arm64". If you create a Flutter app, make sure to add isar_flutter_libs to your dependencies.
02-21 15:39:02.657 4557 4587 E flutter : Invalid argument(s): Failed to load dynamic library 'libisar.so': dlopen failed: library "libisar.so" not found
02-21 15:39:02.657 4557 4587 E flutter : #0 initializeCoreBinary (package:isar/src/native/isar_core.dart:78)
02-21 15:39:02.657 4557 4587 E flutter : #1 openIsar (package:isar/src/native/open.dart:81)
02-21 15:39:02.657 4557 4587 E flutter : #2 Isar.open (package:isar/src/isar.dart:107)
02-21 15:39:02.657 4557 4587 E flutter : #3 loadDb (package:immich_mobile/main.dart:82)
02-21 15:39:02.657 4557 4587 E flutter : <asynchronous suspension>
02-21 15:39:02.657 4557 4587 E flutter : #4 main (package:immich_mobile/main.dart:38)
02-21 15:39:02.657 4557 4587 E flutter : <asynchronous suspension>
02-21 15:39:02.657 4557 4587 E flutter :
02-21 15:39:02.764 4557 4557 D BackupWorker: stopEngine result=Success {mOutputData=Data {}}
02-21 15:39:02.766 4557 4584 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=de6711dc-ebf9-498f-9db6-b1137dcc67de, tags={ app.alextran.immich.BackupWorker } ]
02-21 15:39:02.781 4557 4557 I WM-SystemFgDispatcher: Stopping foreground service
Extra info Android version 12. Fairphone 4 Installed from F-droid. There are no Google Play Services on my phone. I'm using /e/ OS (a fork of LineageOS) with MicroG.
I'm guessing this is caused by #1416.
Anyway, please fix this, because I can no longer use the mobile app.
You will need DB_HOSTNAME=immich_postgres
in your .env
I believe your server is not starting up correctly
It is starting properly. I can visit the web interface of the server and there are no error logs in docker about the database connection.
I don't connect Postgres with TCP, but with the unix socket.
That is why this is the command postgres -c unix_socket_directories='/var/run/postgresql/,/sockets/'
, and why I have mounted the /sockets
directory.
I personally believe this issue is mainly an issue on the mobile side, not on the server side.
Would reinstalling the app help?
@zoodyy I saw that the app failed to initialize Isar, do you have any thoughts/suggestions?
Other users of Isar are having a similar problem https://github.com/isar/isar/issues/1080 with reports of crashes only happening in production builds. They've recently released a development version with a potential fix, but not confirmed.
I tested, and the apk files in the github releases do work. So there's something wrong with the F-droid builds, because this error only occurs when installing the app from F-Droid.
I tested, and the apk files in the github releases do work. So there's something wrong with the F-droid builds, because this error only occurs when installing the app from F-Droid.
PlayStore as well.
When not starting from the appdrawer, not even the icon will show up. Release 1.48.0. from Github works flawlessly.
Also seeing this error with F-Droid version. Reinstalling the app does not help. The opening icon appears and hangs indefinitely.
Same here since a couple of days with the F-Droid version. Updated and reinstalled but doesn't work. Didn't tested Play Store, as I use a degoogled android. Donwloaded and installed v1.49.0 from GitHub Releases and it works
Same for me on a Pixel 6 and the F-Droid version Edit: F-Droid version is still on 1.47.0, Aurora version works (1.49.0)
@zoodyy this is very strange. Do you have any suggestions?
It seems Isar 3.0.5 is not fully compatible with Flutter 3.7. We could try to upgrade to Isar 3.0.6-dev.0 nd hope it fixes this incompatibility.
However, the root cause is probably related to the build (script) that works differently for our Github releases / F-Droid / Play store. Our GitHub releases work fine (as do all Play Store builds for me). Maybe F-Droid does something funky to the APK regarding the native code of Isar (shared library). I have the feeling F-Droid stripts the binaries fromthe APK? I don't have a clue about their build procedure but maybe we can configure an exception?
I found a new entry in the yml file of f-droid since version 1.47.0 scandelete
It seems to delete binary files in the mobile/.pub-cache where the isar .so library is also located. In the f-droid build logs the library .so file is being deleted by the scandelete command. Maybe that is related, but just a guess:
2023-02-24 19:34:38,844 INFO: Removing shared library at mobile/.pub-cache/hosted/pub.dev/isar_flutter_libs-3.0.5/android/src/main/jniLibs/arm64-v8a/libisar.so
Same issue with 1.49 from f-droid.
I found a new entry in the yml file of f-droid since version 1.47.0 scandelete
It seems to delete binary files in the mobile/.pub-cache where the isar .so library is also located. In the f-droid build logs the library .so file is being deleted by the scandelete command. Maybe that is related, but just a guess:
2023-02-24 19:34:38,844 INFO: Removing shared library at mobile/.pub-cache/hosted/pub.dev/isar_flutter_libs-3.0.5/android/src/main/jniLibs/arm64-v8a/libisar.so
@alextran1502 can you edit that file or somehow configure I to remove that scandelete entry? That should fix the Fdroid isar problem.
I too have this issue. I have just installed the APK directly from github and it loads as expected.
I am awaiting a full sync (which seems like a bit problem, as it looks like it is uploading everything again).
I too have this issue. I have just installed the APK directly from github and it loads as expected.
I am awaiting a full sync (which seems like a bit problem, as it looks like it is uploading everything again).
@palitu Uploading from different sources will create a different device ID (this is how device ID is generated and out of our control). I am hoping to fix the F-Droid issue soon
Any chance there is an ETA on a fix? I would rather not go back and forth between GitHub apk and fdroid, as I know there can be some weirdness...
Updated to 1.50.1, the bug still persists.
This is an F-Droid specific issue and needs to be resolved in the F-Droid build process. This will be quite some work since we need to build the dependency for F-Droid..
Is there any updates to this?
I think I found a solution, but don't know whom to ask. I don't know by whom and how the F-Droid build script is managed. Maybe @fyfrey?
The solution is to update the F-Droid build script to build libisar.so
from source (now included as git submodule in the immich repo) and copy it to the correct location etc.
@manuke42 you can make a pull request to the F-Droid repository (I did so to disable all broken versions: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/12736)
Some more information what needs to be done, can be found in the discussion of the following PR: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/12735
v1.53.0 is now available on f-droid with libisar included. For me it's working. You might try and report, so this issue can be closed.
I cant speak for OP, but I installed this version days ago and it didn't work. I just uninstalled, and then re-installed, and it is finally opening and started uploading the backlog of pictures from the past 2 months. thanks!
Yes there was a wrong version released some days ago, but the version released today should work without reinstalling. Maybe one needs to clear cache of f-droid if the old apk is still cached. I think this issue can be closed then.