MicroGInstaller: minor changes

This commit is contained in:
Rahul Patel
2025-07-14 15:29:58 +05:30
parent ee758cf76b
commit be06225d6e
2 changed files with 65 additions and 42 deletions

View File

@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.aurora.Constants.PACKAGE_NAME_GMS
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.store.AuroraApp import com.aurora.store.AuroraApp
import com.aurora.store.R import com.aurora.store.R
@@ -91,6 +92,10 @@ class MicroGFragment : BaseFragment<FragmentOnboardingMicrogBinding>() {
private fun onEvent(event: Event) { private fun onEvent(event: Event) {
when (event) { when (event) {
is InstallerEvent.Installed -> { is InstallerEvent.Installed -> {
if (event.packageName == PACKAGE_NAME_GMS) {
microGViewModel.downloadCompanion()
}
if (PackageUtil.isMicroGBundleInstalled(requireContext())) { if (PackageUtil.isMicroGBundleInstalled(requireContext())) {
markInstallationComplete() markInstallationComplete()
} }

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2025 The Calyx Institute * SPDX-FileCopyrightText: 2025 Aurora OSS
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
@@ -11,6 +11,8 @@ import androidx.lifecycle.viewModelScope
import com.aurora.Constants.PACKAGE_NAME_GMS import com.aurora.Constants.PACKAGE_NAME_GMS
import com.aurora.Constants.PACKAGE_NAME_PLAY_STORE import com.aurora.Constants.PACKAGE_NAME_PLAY_STORE
import com.aurora.gplayapi.data.models.PlayFile import com.aurora.gplayapi.data.models.PlayFile
import com.aurora.store.AuroraApp
import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.data.helper.DownloadHelper import com.aurora.store.data.helper.DownloadHelper
import com.aurora.store.data.room.suite.ExternalApk import com.aurora.store.data.room.suite.ExternalApk
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
@@ -31,6 +33,13 @@ class MicroGViewModel @Inject constructor(
private val downloadHelper: DownloadHelper private val downloadHelper: DownloadHelper
) : ViewModel() { ) : ViewModel() {
companion object {
const val MICROG_DOWNLOAD_URL = "https://github.com/microg/GmsCore/releases/download"
const val MICROG_VERSION = "v0.3.6.244735"
const val GMS_VERSION_CODE = 244735012
const val COMPANION_VERSION_CODE = 84022612
}
private val _packageNames = MutableSharedFlow<List<String>>() private val _packageNames = MutableSharedFlow<List<String>>()
val packageNames = _packageNames.asSharedFlow() val packageNames = _packageNames.asSharedFlow()
@@ -41,37 +50,36 @@ class MicroGViewModel @Inject constructor(
list.find { d -> apps.any { it == d.packageName } } list.find { d -> apps.any { it == d.packageName } }
}.stateIn(viewModelScope, SharingStarted.Eagerly, null) }.stateIn(viewModelScope, SharingStarted.Eagerly, null)
val externalApks = listOf<ExternalApk>( val microGServiceApk = ExternalApk(
ExternalApk( packageName = PACKAGE_NAME_GMS,
packageName = "com.google.android.gms", versionCode = GMS_VERSION_CODE.toLong(),
versionCode = 244735012, versionName = MICROG_VERSION,
versionName = "v0.3.6.244735", displayName = "microG Services",
displayName = "microG Services", iconURL = "https://raw.githubusercontent.com/microg/GmsCore/refs/heads/master/play-services-core/src/main/res/mipmap-xxxhdpi/ic_app.png",
iconURL = "https://raw.githubusercontent.com/microg/GmsCore/refs/heads/master/play-services-core/src/main/res/mipmap-xxxhdpi/ic_app.png", developerName = "microG Team",
developerName = "microG Team", fileList = listOf(
fileList = listOf( PlayFile(
PlayFile( url = "$MICROG_DOWNLOAD_URL/$MICROG_VERSION/$PACKAGE_NAME_GMS-$GMS_VERSION_CODE-hw.apk",
url = "https://github.com/microg/GmsCore/releases/download/v0.3.6.244735/com.google.android.gms-244735012-hw.apk", name = "$PACKAGE_NAME_GMS-$GMS_VERSION_CODE-hw.apk",
name = "com.google.android.gms-244735012-hw.apk", size = 32509431,
size = 32509431, sha256 = "2f14df2974811b576bfafa6167a97e3b3032f2bd6e6ec3887a833fd2fa350dda"
sha256 = "2f14df2974811b576bfafa6167a97e3b3032f2bd6e6ec3887a833fd2fa350dda"
)
) )
), )
ExternalApk( )
packageName = "com.android.vending",
versionCode = 84022612, val microGCompanionApk = ExternalApk(
versionName = "v0.3.6.244735", packageName = PACKAGE_NAME_PLAY_STORE,
displayName = "microG Companion", versionCode = COMPANION_VERSION_CODE.toLong(),
iconURL = "https://raw.githubusercontent.com/microg/FakeStore/refs/heads/main/fake-store/src/main/res/mipmap-xxxhdpi/ic_app.png", versionName = MICROG_VERSION,
developerName = "microG Team", displayName = "microG Companion",
fileList = listOf( iconURL = "https://raw.githubusercontent.com/microg/FakeStore/refs/heads/main/fake-store/src/main/res/mipmap-xxxhdpi/ic_app.png",
PlayFile( developerName = "microG Team",
url = "https://github.com/microg/GmsCore/releases/download/v0.3.6.244735/com.android.vending-84022612-hw.apk", fileList = listOf(
name = "com.android.vending-84022612-hw.apk", PlayFile(
size = 3915551, url = "$MICROG_DOWNLOAD_URL/$MICROG_VERSION/$PACKAGE_NAME_PLAY_STORE-$COMPANION_VERSION_CODE-hw.apk",
sha256 = "6835b09016cef0fc3469b4a36b1720427ad3f81161cf20b188f0dadb5f8594e1" name = "$PACKAGE_NAME_PLAY_STORE-$COMPANION_VERSION_CODE-hw.apk",
) size = 3915551,
sha256 = "6835b09016cef0fc3469b4a36b1720427ad3f81161cf20b188f0dadb5f8594e1"
) )
) )
) )
@@ -85,18 +93,28 @@ class MicroGViewModel @Inject constructor(
fun downloadMicroG() { fun downloadMicroG() {
viewModelScope.launch { viewModelScope.launch {
try { try {
_packageNames.emit( _packageNames.emit(listOf(PACKAGE_NAME_GMS))
listOf(
PACKAGE_NAME_GMS,
PACKAGE_NAME_PLAY_STORE
)
)
externalApks.forEach { if (microGServiceApk.isInstalled(context)) {
// Enqueue download only if not already installed AuroraApp.events.send(InstallerEvent.Installed(PACKAGE_NAME_GMS))
if (!it.isInstalled(context)) { } else {
downloadHelper.enqueueStandalone(it) downloadHelper.enqueueStandalone(microGServiceApk)
} }
} catch (e: Exception) {
e.printStackTrace()
}
}
}
fun downloadCompanion() {
viewModelScope.launch {
try {
_packageNames.emit(listOf(PACKAGE_NAME_PLAY_STORE))
if (microGCompanionApk.isInstalled(context)) {
AuroraApp.events.send(InstallerEvent.Installed(PACKAGE_NAME_PLAY_STORE))
} else {
downloadHelper.enqueueStandalone(microGCompanionApk)
} }
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()