Support for dynamic delivery of AAB after installation
Some apps seem to rely on some kind of post-install split installation to function. More precisely, it is a feature of Android App Bundle which is enforced recently. For example, some functionalities of WeChat does not work. I look at the log, and it contains
12-30 17:39:03.153 28367 28538 I chatty : uid=1010197(com.tencent.mm) [GT]ColdPool#9 expire 2 lines 12-30 17:39:03.163 28367 28481 I chatty : uid=1010197(com.tencent.mm) SplitInstallSer expire 2 lines 12-30 17:39:03.166 5147 6291 W ActivityManager: Unable to start service Intent { act=com.google.android.play.core.splitinstall.BIND_SPLIT_INSTALL_SERVICE pkg=com.android.vending } U=10: not found 12-30 17:39:03.168 0 0 D cnss : Setting MHI state: SUSPEND(6) 12-30 17:39:03.168 0 0 D cnss : Suspending PCI link 12-30 17:39:03.168 0 0 D cnss : Use PCIe DRV suspend 12-30 17:39:03.170 0 0 D cnss : Runtime suspend status: 0 12-30 17:39:03.187 29209 29369 I chatty : uid=1010197(com.tencent.mm) expire 24 lines 12-30 17:39:03.231 1011 1166 I WVCdm : [app][com.tencent.mm] calling virtual Return
wvdrm::hardware::drm::V1_3::widevine::WVDrmFactory::createPlugin(const hidl_array<uint8_t, 16> &, const android::hardware::hidl_string &, android::hardware::drm::V1_3::IDrmFactory::createPlugin_cb) 12-30 17:39:03.231 1011 1166 D WVCdm : Instantiating CDM. 12-30 17:39:03.265 28349 28583 I chatty : uid=1010197(com.tencent.mm) [GT]ColdPool#9 expire 2 lines 12-30 17:39:03.266 28349 28513 I chatty : uid=1010197(com.tencent.mm) SplitInstallSer expire 2 lines 12-30 17:39:03.268 5147 6291 W ActivityManager: Unable to start service Intent { act=com.google.android.play.core.splitinstall.BIND_SPLIT_INSTALL_SERVICE pkg=com.android.vending } U=10: not found 12-30 17:39:03.419 5147 6231 E TaskPersister: File error accessing recents directory (directory doesn't exist?). 12-30 17:39:03.505 29209 29377 I chatty : uid=1010197(com.tencent.mm) expire 3 lines 12-30 17:39:03.527 29209 29376 I chatty : uid=1010197(com.tencent.mm) expire 1 line
MicroG does not contain any replacement for Play Store. However, it seems possible to relay the request to other third party stores such as Aurora Store.
Some apps seem to rely on some kind of post-install split installation to function. More precisely, it is a feature of Android App Bundle which is enforced recently. For example, some functionalities of WeChat does not work.
Without this feature, all miniapps in WeChat won't work. And sadly, in my country, many thing must be done in WeChat miniapp...
MicroG does not contain any replacement for Play Store. However, it seems possible to relay the request to other third party stores such as Aurora Store.
FakeStore was merged to microG as microG Companion. So the situation may be changed. But I think redirect to Aurore Store still a good idea to reduce implement complexity and duplicated code in opensource world.
There is partial code for this on #2225
I found the functions used to get APK/OBB of Aurora Store is separate kotlin library, so we can reuse it directly.
https://gitlab.com/AuroraOSS/gplayapi
WeChat miniapps previously worked on LineageOS/MicroG versions from 2023 and Jan 2024, I used them successfully on these dates. But between then and now Feb 2025 something broke in microG so that they no longer work. Alipay miniapps work, but this ecosystem is much much smaller than that of WeChat miniapps and many places/services in China only provide WeChat miniapps.
The needed feature is implemented as part of #2553 You need to wait for it to be merged.
In the meantime I figured out that the problem is with WeChat 8.0.56.
Downgrading to 8.0.54 works around the problem and allows miniapps to run again - for example via adb shell -r -d on a rooted phone, possibly also with adb root depending on how the phone is rooted.
In the meantime I figured out that the problem is with WeChat 8.0.56.
Downgrading to 8.0.54 works around the problem and allows miniapps to run again - for example via
adb shell -r -don a rooted phone, possibly also withadb rootdepending on how the phone is rooted.
Why use root when it is completely unneded?
The correct command to downgrade is this:
adb install -r -d -g "./old-wechat.apk"
I think it might depend on your ROM. For me on lineageOS + microG, I had to run adb root first, otherwise adb install -d -r still gave me INSTALL_FAILED_VERSION_DOWNGRADE. It worked without root on my other phone with lineageOS + MindTheGapps.
Strange, but you can still uninstall the new version and install the old one; it is even simpler.
Strange, but you can still uninstall the new version and install the old one; it is even simpler.
According to https://x.com/MishaalRahman/status/1699870712419274794 downgrading via adb or pm is no longer supported in Android 14.