Skip to content

setInstallerPackageName fails with SecurityException on API 30

  • Device OS and version: AOSP 11
  • F-Droid version (in the About screen): 1.9
  • F-Droid privileged extension version (if installed): not installed

What did you do? (clear steps if possible)

install an app

What did you expect to see?

the installer package name set to org.fdroid.fdroid

What did you see instead?

initiatingPackageName and installingPackageName is set to com.android.packageinstaller. Only originatingPackageName is org.fdroid.fdroid.

Setting the installer package name fails with:

org.fdroid.fdroid E/PackageManagerCompat: Could not set installer package name for de.mwvb.blockpuzzle
    java.lang.SecurityException: Caller does not have same cert as old installer package com.android.packageinstaller
        at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
        at android.os.Parcel.createException(Parcel.java:2357)
        at android.os.Parcel.readException(Parcel.java:2340)
        at android.os.Parcel.readException(Parcel.java:2282)
        at android.content.pm.IPackageManager$Stub$Proxy.setInstallerPackageName(IPackageManager.java:5874)
        at android.app.ApplicationPackageManager.setInstallerPackageName(ApplicationPackageManager.java:2181)
        at org.fdroid.fdroid.compat.PackageManagerCompat.setInstaller(PackageManagerCompat.java:35)
        at org.fdroid.fdroid.installer.InstallManagerService$3.onReceive(InstallManagerService.java:420)
        at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:311)
        at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:47)
        at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:120)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.pm.PackageManagerService.setInstallerPackageName(PackageManagerService.java:14279)
        at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2647)
        at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4306)
        at android.os.Binder.execTransactInternal(Binder.java:1154)
        at android.os.Binder.execTransact(Binder.java:1123)

Curiously, uninstalling apps with F-Droid still works.

Related to #1836 (closed)

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information