Skip to content

Commit e24010c

Browse files
committed
Load Mapbox resources from the maps module
initV2() receives the maps module Resources, we store those, and MapContext returns them from getResources(), getAssets(), and getTheme(). Instead of rebuilding MapContext from a hardcoded GMS package context, we now use the resources provided by the maps dynamite module.
1 parent 3c59f77 commit e24010c

3 files changed

Lines changed: 38 additions & 4 deletions

File tree

play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteContext.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
import android.content.Context;
99
import android.content.ContextWrapper;
10+
import android.content.res.AssetManager;
11+
import android.content.res.Resources;
1012
import android.content.pm.ApplicationInfo;
1113

1214
import androidx.annotation.RequiresApi;
@@ -48,6 +50,16 @@ public ApplicationInfo getApplicationInfo() {
4850
return gmsContext.getApplicationInfo();
4951
}
5052

53+
@Override
54+
public Resources getResources() {
55+
return gmsContext.getResources();
56+
}
57+
58+
@Override
59+
public AssetManager getAssets() {
60+
return gmsContext.getAssets();
61+
}
62+
5163
@Override
5264
public Context getApplicationContext() {
5365
return appContext;

play-services-maps/core/mapbox/src/main/java/com/google/android/gms/maps/internal/CreatorImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public void initV2(IObjectWrapper resources, int flags) {
7777
throw new IllegalStateException("Mapbox backend class loader is not available");
7878
}
7979
BitmapDescriptorFactoryImpl.INSTANCE.initialize(mapResources, null);
80+
MapContext.setModuleResources(mapResources);
8081
LibraryLoader.setLibraryLoader(new MultiArchLoader(moduleClassLoader));
8182
Log.d(TAG, "initV2 " + flags);
8283
}

play-services-maps/core/mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/utils/MapContext.kt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ import android.content.Context
2020
import android.content.ContextWrapper
2121
import android.content.Intent
2222
import android.content.SharedPreferences
23+
import android.content.res.AssetManager
24+
import android.content.res.Resources
2325
import android.view.LayoutInflater
24-
import org.microg.gms.common.Constants
2526
import java.io.File
2627

27-
class MapContext(private val context: Context) : ContextWrapper(createModuleContext(context)) {
28+
class MapContext(private val context: Context) : ContextWrapper(context) {
2829
private var layoutInflater: LayoutInflater? = null
30+
private var theme: Resources.Theme? = null
2931
private val appContext: Context
3032
get() = context.applicationContext ?: context
3133

@@ -49,6 +51,18 @@ class MapContext(private val context: Context) : ContextWrapper(createModuleCont
4951
return appContext.packageName
5052
}
5153

54+
override fun getResources(): Resources {
55+
return getModuleResources()
56+
}
57+
58+
override fun getAssets(): AssetManager {
59+
return resources.assets
60+
}
61+
62+
override fun getTheme(): Resources.Theme {
63+
return theme ?: resources.newTheme().also { theme = it }
64+
}
65+
5266
override fun getClassLoader(): ClassLoader {
5367
return MapContext::class.java.classLoader!!
5468
}
@@ -76,8 +90,15 @@ class MapContext(private val context: Context) : ContextWrapper(createModuleCont
7690
}
7791

7892
companion object {
79-
private fun createModuleContext(context: Context): Context {
80-
return context.createPackageContext(Constants.GMS_PACKAGE_NAME, Context.CONTEXT_INCLUDE_CODE or Context.CONTEXT_IGNORE_SECURITY)
93+
private var moduleResources: Resources? = null
94+
95+
@JvmStatic
96+
fun setModuleResources(resources: Resources) {
97+
moduleResources = resources
98+
}
99+
100+
private fun getModuleResources(): Resources {
101+
return moduleResources ?: throw IllegalStateException("Resources have not been initialized")
81102
}
82103

83104
val TAG = "GmsMapContext"

0 commit comments

Comments
 (0)