The v1 action (org.openintents.openpgp.IOpenPgpService) resolves in
Keychain 6.0.4 but its binder does not implement the IOpenPgpService2
AIDL descriptor that OpenPgpApi calls through, so every call died with
SecurityException: Binder invocation to an incorrect interface. Bind
the IOpenPgpService2 service first (v1 and the very old
api.OpenPgpService actions remain as fallbacks).
Android 11+ package visibility also hid Keychain's services entirely:
resolveService/bindService found nothing from the app even with
MANAGE_EXTERNAL_STORAGE granted, so the build now injects a <queries>
element (package + intent) into the decoded manifest.
Keychain 6.0.4 no longer exports the legacy
org.openintents.openpgp.api.OpenPgpService action, so the OpenPgpServiceConnection
from openpgp-api.jar bound nothing and every encrypt/decrypt died with a
NullPointerException in OpenPgpApi.executeApi.
Bind our own ServiceConnection against org.openintents.openpgp.IOpenPgpService
(falling back to the legacy action for older Keychain releases), and queue
API calls until the service is actually connected instead of racing the
async bind.
Also fix the //go:generate recipe: it built one jar containing both
PgpConnect and Permissions, which collides with Permissions.jar when gogio
dexes every *.jar in the repo root.
- Update to //go:build tags, gofmt, and the android-35 javac template
in //go:generate.
- GetStore: reset store.Empty when the store directory exists (it was
only set true when the dir was missing, so a reconfigured store kept
the stale 'Empty' state and showed the configure button).
- Rebuild PgpConnect.jar (android-35).