Audited GmsCore/AuroraStore/FakeStore's declared permissions against their
default-permissions grants (dangerous protection level confirmed against
frameworks/base's own AndroidManifest.xml, not guessed). AuroraStore and
FakeStore were already complete. GmsCore had two real gaps:
ACCESS_BACKGROUND_LOCATION was a literal unfilled template placeholder
(<!-- %ACCESS_BACKGROUND_LOCATION% -->), and BLUETOOTH_ADVERTISE/
BLUETOOTH_CONNECT/BLUETOOTH_SCAN (Android 12+ runtime permissions) were
declared by the app but never added to this older-style template at all.
Without these, location and Bluetooth features prompt the user on first
use instead of just working.
Fatal on every boot: system_server crashed outright at systemReady()
(AppIdPermissionPolicy.onSystemReady) with "Signature|privileged
permissions not in privileged permission allowlist" for com.aurora.store's
INSTALL_PACKAGES and DELETE_PACKAGES, killing zygote and looping the
device forever ("process with updatable components 'zygote' exited 4
times before boot completed"). Both are confirmed signature|privileged
protection level in frameworks/base's own AndroidManifest.xml; the
existing allowlist entry only had ENFORCE_UPDATE_OWNERSHIP.
Presigned by Google; we have no private key to re-sign it after fixing dex
compression, same situation as GmsCore/FakeStore/AuroraStore/
FDroidPrivilegedExtension in this repo, which already carry this flag.
curl -sI on GitHub/GitLab release-asset URLs was hitting the 302
redirect response instead of the final asset, so its Content-Length
never matched the local file and download_apk() redownloaded GmsCore/
GsfProxy/FakeStore on every envsetup.sh run regardless of whether the
pinned version actually changed.
The XML only carried the two microG repos; add F-Droid Official,
IzzyOnDroid and FUTO so the prebuilt client ships the same repo set as
the JSON. The XML string-array needs the full DER-encoded signing
certificate, not the SHA-256 fingerprint the JSON stores, so each
certificate was pulled from that repo's index-v1.jar signature block
and verified: SHA-256 of the DER matches the fingerprint in the JSON.
microG pubkeys are unchanged.
Presigned APKs with targetSdkVersion >= 30 must set preprocessed: true
to prevent the build system from re-processing them and wrecking their
v2 signature.
Replace all Android.mk prebuilt rules with Android.bp android_app_import
modules. presigned: true in Soong guarantees APK signatures are untouched
(no signapk run, alignment-safe zipalign only), which is required so
microG/FDroid retain their own certs rather than being re-signed with the
platform key.
Fix vendorsetup.sh download paths to match the reorganised directory
structure: GmsCore and GsfProxy moved under apps/GMS/, FDroidPrivilegedExtension
moved under apps/FDroid/FDroidPrivilegedExtension/. The download_apk helper
now accepts an explicit destination path instead of deriving it from the
component name.
Also stage the directory renames and removal of the unused products/ stubs.
Move additional_repos.xml and .json into apps/FDroid alongside the
FDroid APK and merge their Android.mk into FDroid's. They are
F-Droid-specific config (pre-seeds the microG repo) so they belong
there. Remove from PRODUCT_PACKAGES in gms.mk since the modules are
now discovered as part of FDroid's Android.mk.
* F-Droid component apks correct
* Put the version number (v0.1.0) in GsfProxy/.version_code
* microG component apks correct
* download_apk function called and implemnted except for call to curl
* Hyphen not underscore in GmsCore anf FakeStore apk filenames
* Get F-Droid components from https://f-droid.org/repo/
* Download apks using curl
* Remove old commented-out code
* Comment out debug 'echo' statements
* add the necessary cd commands
* Delete the stored apks: we download them at build time
Using /system for this file is hard-coded in MicroG but it breaks LineageOS device builds with strict requirements around what modules go into system. Reverting to unblock the builds for now.