GmsCore icon indicating copy to clipboard operation
GmsCore copied to clipboard

Support for dynamic delivery of AAB after installation

Open Iey4iej3 opened this issue 4 years ago • 16 comments

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.

Iey4iej3 avatar Dec 30 '21 17:12 Iey4iej3

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.

CoelacanthusHex avatar Mar 07 '24 17:03 CoelacanthusHex

There is partial code for this on #2225

ale5000-git avatar Mar 08 '24 03:03 ale5000-git

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

CoelacanthusHex avatar Apr 02 '24 10:04 CoelacanthusHex

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.

infinity0 avatar Feb 16 '25 22:02 infinity0

The needed feature is implemented as part of #2553 You need to wait for it to be merged.

ale5000-git avatar Feb 16 '25 22:02 ale5000-git

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.

infinity0 avatar Feb 25 '25 15:02 infinity0

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.

Why use root when it is completely unneded?

The correct command to downgrade is this: adb install -r -d -g "./old-wechat.apk"

ale5000-git avatar Feb 26 '25 14:02 ale5000-git

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.

infinity0 avatar Feb 26 '25 15:02 infinity0

Strange, but you can still uninstall the new version and install the old one; it is even simpler.

ale5000-git avatar Feb 26 '25 17:02 ale5000-git

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.

Iey4iej3 avatar Feb 26 '25 18:02 Iey4iej3