microg / GmsCore

Free implementation of Play Services
https://microg.org
Apache License 2.0
8.71k stars 1.74k forks source link

Support for dynamic delivery of AAB after installation #1629

Open Iey4iej3 opened 2 years ago

Iey4iej3 commented 2 years ago

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.

CoelacanthusHex commented 8 months ago

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.

ale5000-git commented 8 months ago

There is partial code for this on #2225

CoelacanthusHex commented 8 months ago

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