Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter AppUpdateService linkToDeath

I have been trying to add the in app update feature to make the user update the app when there is a new update available in the playstore. I am using the package in_app_update.

But it keeps throwing this error,

I/PlayCore( 8420): UID: [10378]  PID: [8420] AppUpdateService : requestUpdateInfo(com.example.app)
I/PlayCore( 8420): UID: [10378]  PID: [8420] AppUpdateService : Initiate binding to the service.
I/PlayCore( 8420): UID: [10378]  PID: [8420] AppUpdateService : ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.installservice.DevTriggeredUpdateService})
I/PlayCore( 8420): UID: [10378]  PID: [8420] AppUpdateService : linkToDeath
I/PlayCore( 8420): UID: [10378]  PID: [8420] OnRequestInstallCallback : onRequestInfo
I/PlayCore( 8420): UID: [10378]  PID: [8420] AppUpdateService : Unbind from service.
W/JavaBinder( 8420): BinderProxy is being destroyed but the application did not call unlinkToDeath to unlink all of its death recipients beforehand.  Releasing leaked death recipient: com.google.android.play.core.internal.ac

The code I am using is,

try {
  if (Platform.isAndroid) {
    InAppUpdate.checkForUpdate().then((info) {
      setState(() {
        _updateInfo = info;
      });
    }).catchError((error) => print(error));

    if (_updateInfo?.updateAvailable == true) {
      InAppUpdate.performImmediateUpdate()
          .catchError((error) => print(error));
    }
  }
} catch(e) {
    print(e);
}

After failing with the above package for number of days I tried using another package named native_updater. This package also resulted in the same error. Although I followed their example, which should have worked.

The output of flutter doctor is,

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.22.0-10.0.pre.121, on Linux, locale en_US.UTF-8)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio (version 4.0)
[✓] Connected device (1 available)


I could not find any similar question or answer which is why had to post one.

I am using a 64 bit Kali Linux machine.

like image 772
Ratnadeep Avatar asked Sep 18 '20 13:09

Ratnadeep


2 Answers

At first I had the same problem as you. But I noticed something, the app must be downloaded from the Play Store, and an update must be available as well. If you do this by launching the app from flutter or vscode, it is normal that it does not work. I don't know if I was very clear.

Be aware that this plugin cannot be tested locally. It must be installed via Google Play to work. Please check the official documentation about In App Updates from Google.

like image 89
Jeremy HOFFMANN Avatar answered Nov 19 '22 01:11

Jeremy HOFFMANN


Make sure 4 things, so you can test your in_app_update feature:

  • Your previous app version code must smaller than future app version code
  • PlayStore should be clear cache before test
  • Previous app version, newer app version must be installed from Internal app sharing. (You can reference this link)
  • Your email which signed in PlayStore must be added to internal tester

Good luck bro!

like image 2
Hiếu nguyễn văn Avatar answered Nov 18 '22 23:11

Hiếu nguyễn văn