immich icon indicating copy to clipboard operation
immich copied to clipboard

[BUG] Can't launch Android app anymore after updating to 1.47.0

Open JVT038 opened this issue 2 years ago • 18 comments

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.

JVT038 avatar Feb 21 '23 14:02 JVT038

I'm guessing this is caused by #1416.

Anyway, please fix this, because I can no longer use the mobile app.

JVT038 avatar Feb 21 '23 14:02 JVT038

You will need DB_HOSTNAME=immich_postgres in your .env

I believe your server is not starting up correctly

alextran1502 avatar Feb 21 '23 14:02 alextran1502

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.

JVT038 avatar Feb 21 '23 15:02 JVT038

Would reinstalling the app help?

alextran1502 avatar Feb 21 '23 15:02 alextran1502

@zoodyy I saw that the app failed to initialize Isar, do you have any thoughts/suggestions?

alextran1502 avatar Feb 21 '23 15:02 alextran1502

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.

michelheusschen avatar Feb 21 '23 18:02 michelheusschen

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.

JVT038 avatar Feb 22 '23 19:02 JVT038

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.

C9Glax avatar Feb 22 '23 20:02 C9Glax

Also seeing this error with F-Droid version. Reinstalling the app does not help. The opening icon appears and hangs indefinitely.

SNThrailkill avatar Feb 23 '23 17:02 SNThrailkill

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

myanesp avatar Feb 24 '23 10:02 myanesp

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)

l0l67 avatar Feb 24 '23 16:02 l0l67

@zoodyy this is very strange. Do you have any suggestions?

alextran1502 avatar Feb 25 '23 14:02 alextran1502

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?

fyfrey avatar Feb 25 '23 15:02 fyfrey

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

f-droid build log file

manuke42 avatar Feb 25 '23 21:02 manuke42

Same issue with 1.49 from f-droid.

sbkg0002 avatar Feb 26 '23 09:02 sbkg0002

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

f-droid build log file

@alextran1502 can you edit that file or somehow configure I to remove that scandelete entry? That should fix the Fdroid isar problem.

fyfrey avatar Feb 26 '23 11:02 fyfrey

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 avatar Feb 28 '23 02:02 palitu

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

alextran1502 avatar Feb 28 '23 04:02 alextran1502

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...

adamaze avatar Mar 06 '23 15:03 adamaze

Updated to 1.50.1, the bug still persists.

aadityadhruv avatar Mar 09 '23 18:03 aadityadhruv

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..

fyfrey avatar Mar 12 '23 16:03 fyfrey

Is there any updates to this?

palitu avatar Mar 27 '23 04:03 palitu

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?

manuke42 avatar Mar 28 '23 12:03 manuke42

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

fyfrey avatar Mar 28 '23 12:03 fyfrey

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.

manuke42 avatar Apr 18 '23 09:04 manuke42

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!

adamaze avatar Apr 18 '23 14:04 adamaze

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.

manuke42 avatar Apr 18 '23 19:04 manuke42