expo-modules-core 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 2.3.2 — 2025-04-09
14
+
15
+ ### 💡 Others
16
+
17
+ - [Android] Migrate `AppLoaderProvider` to kotlin. ([#36035](https://github.com/expo/expo/pull/36035) by [@alanjhughes](https://github.com/alanjhughes))
18
+
13
19
  ## 2.3.1 — 2025-04-08
14
20
 
15
21
  _This version does not introduce any user-facing changes._
@@ -23,7 +23,7 @@ if (KOTLIN_MAJOR_VERSION >= 2) {
23
23
  }
24
24
 
25
25
  group = 'host.exp.exponent'
26
- version = '2.3.1'
26
+ version = '2.3.2'
27
27
 
28
28
  // List of features that are required by linked modules
29
29
  def coreFeatures = project.findProperty("coreFeatures") ?: []
@@ -76,7 +76,7 @@ android {
76
76
  defaultConfig {
77
77
  consumerProguardFiles 'proguard-rules.pro'
78
78
  versionCode 1
79
- versionName "2.3.1"
79
+ versionName "2.3.2"
80
80
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
81
81
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled.toString()
82
82
 
@@ -0,0 +1,46 @@
1
+ package expo.modules.apploader
2
+
3
+ import android.content.Context
4
+ import android.content.pm.PackageManager
5
+ import android.util.Log
6
+
7
+ object AppLoaderProvider {
8
+ private val loaders: MutableMap<String, HeadlessAppLoader> = HashMap()
9
+
10
+ @JvmStatic
11
+ fun getLoader(name: String, context: Context): HeadlessAppLoader? {
12
+ if (!loaders.containsKey(name)) {
13
+ try {
14
+ createLoader(name, context)
15
+ } catch (e: Exception) {
16
+ Log.e("Expo", "Cannot initialize app loader. " + e.message)
17
+ e.printStackTrace()
18
+ return null
19
+ }
20
+ }
21
+ return loaders[name]
22
+ }
23
+
24
+ private fun createLoader(name: String, context: Context) {
25
+ val loaderClass: Class<out HeadlessAppLoader>
26
+ try {
27
+ val loaderClassName = context.packageManager.getApplicationInfo(
28
+ context.packageName,
29
+ PackageManager.GET_META_DATA
30
+ ).metaData.getString(
31
+ "org.unimodules.core.AppLoader#$name"
32
+ ) ?: throw IllegalStateException("Unable to instantiate AppLoader!")
33
+
34
+ loaderClass = Class.forName(loaderClassName) as Class<out HeadlessAppLoader>
35
+ loaders[name] = loaderClass
36
+ .getDeclaredConstructor(Context::class.java)
37
+ .newInstance(context) as HeadlessAppLoader
38
+ } catch (e: PackageManager.NameNotFoundException) {
39
+ throw IllegalStateException("Unable to instantiate AppLoader!", e)
40
+ }
41
+ }
42
+
43
+ fun interface Callback {
44
+ fun onComplete(success: Boolean, exception: Exception?)
45
+ }
46
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["../src/EventEmitter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;;AACxE,wBAAmE"}
1
+ {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["../src/EventEmitter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;wBACzB,OAAO,YAAY;AAAlE,wBAAmE"}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeModule.d.ts","sourceRoot":"","sources":["../src/NativeModule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;;AAInE,wBAAmE"}
1
+ {"version":3,"file":"NativeModule.d.ts","sourceRoot":"","sources":["../src/NativeModule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;wBAIpB,OAAO,YAAY;AAAlE,wBAAmE"}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeModulesProxy.d.ts","sourceRoot":"","sources":["../src/NativeModulesProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE;;;GAGG;;AACH,wBAAuD"}
1
+ {"version":3,"file":"NativeModulesProxy.d.ts","sourceRoot":"","sources":["../src/NativeModulesProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE;;;GAGG;wBACkB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAAtD,wBAAuD"}
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsHook.d.ts","sourceRoot":"","sources":["../src/PermissionsHook.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,KAAK,uBAAuB,CAAC,UAAU,SAAS,kBAAkB,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;AAChG,KAAK,mBAAmB,CAAC,UAAU,SAAS,kBAAkB,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;AAE5F,KAAK,qBAAqB,CAAC,UAAU,SAAS,kBAAkB,EAAE,OAAO,GAAG,KAAK,IAAI;IACnF,wEAAwE;IACxE,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACvD,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,qGAAqG;IACrG,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,IAAI,sBAAsB,GAAG,OAAO,CAAC;AAkD7F;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,SAAS,kBAAkB,EAAE,OAAO,SAAS,MAAM,EAChG,OAAO,EAAE,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,cAEjC,sBAAsB,OAAO,CAAC,+FAEjD"}
1
+ {"version":3,"file":"PermissionsHook.d.ts","sourceRoot":"","sources":["../src/PermissionsHook.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,KAAK,uBAAuB,CAAC,UAAU,SAAS,kBAAkB,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;AAChG,KAAK,mBAAmB,CAAC,UAAU,SAAS,kBAAkB,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;AAE5F,KAAK,qBAAqB,CAAC,UAAU,SAAS,kBAAkB,EAAE,OAAO,GAAG,KAAK,IAAI;IACnF,wEAAwE;IACxE,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACvD,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,qGAAqG;IACrG,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,MAAM,IAAI,sBAAsB,GAAG,OAAO,CAAC;AAkD7F;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,SAAS,kBAAkB,EAAE,OAAO,SAAS,MAAM,EAChG,OAAO,EAAE,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,IAE3C,UAAU,qBAAqB,CAAC,OAAO,CAAC,+FAEjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmC,MAAM,cAAc,CAAC;AAS/E,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE;KAAG,QAAQ,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC;CAAE,KAAK,CAAC,CAAC;AA0B7F,QAAA,MAAM,QAAQ;IACZ;;;OAGG;;IAEH;;;;;;;OAOG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;OAGG;;CAEJ,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmC,MAAM,cAAc,CAAC;AAS/E,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE;KAAG,QAAQ,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC;CAAE,KAAK,CAAC,CAAC;AA0B7F,QAAA,MAAM,QAAQ;IACZ;;;OAGG;;IAEH;;;;;;;OAOG;YACqB,cAAc;IACtC;;;OAGG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;OAGG;;CAEJ,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SharedObject.d.ts","sourceRoot":"","sources":["../src/SharedObject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvF,QAAA,MAAM,YAAY,yBAA0D,CAAC;AAE7E,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SharedObject.d.ts","sourceRoot":"","sources":["../src/SharedObject.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvF,QAAA,MAAM,YAAY,EAAmC,OAAO,gBAAgB,CAAC;AAE7E,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SharedRef.d.ts","sourceRoot":"","sources":["../src/SharedRef.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI9E,QAAA,MAAM,SAAS,sBAAoD,CAAC;AAEpE,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"SharedRef.d.ts","sourceRoot":"","sources":["../src/SharedRef.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI9E,QAAA,MAAM,SAAS,EAAgC,OAAO,aAAa,CAAC;AAEpE,eAAe,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@testing-library/react-native": "^13.1.0",
45
- "expo-module-scripts": "^4.1.0"
45
+ "expo-module-scripts": "^4.1.1"
46
46
  },
47
- "gitHead": "2487c7aa9b5ef6a7052e82bbf9a53604c2ed273f"
47
+ "gitHead": "1914bb35d23af23078da37e70988261844436505"
48
48
  }
@@ -1,50 +0,0 @@
1
- package expo.modules.apploader;
2
-
3
- import android.content.Context;
4
- import android.content.pm.PackageManager;
5
- import android.util.Log;
6
-
7
- import java.util.HashMap;
8
- import java.util.Map;
9
-
10
- public class AppLoaderProvider {
11
-
12
- private static Map<String, HeadlessAppLoader> loaders = new HashMap<>();
13
-
14
- public static HeadlessAppLoader getLoader(String name, Context context) {
15
- if (!loaders.containsKey(name)) {
16
- try {
17
- createLoader(name, context);
18
- } catch (Exception e) {
19
- Log.e("Expo", "Cannot initialize app loader. " + e.getMessage());
20
- e.printStackTrace();
21
- return null;
22
- }
23
- }
24
- return loaders.get(name);
25
- }
26
-
27
- @SuppressWarnings("unchecked")
28
- private static void createLoader(String name, Context context) throws ClassNotFoundException, IllegalAccessException, InstantiationException, java.lang.reflect.InvocationTargetException, NoSuchMethodException {
29
- Class<? extends HeadlessAppLoader> loaderClass;
30
- try {
31
- String loaderClassName = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA).metaData.getString("org.unimodules.core.AppLoader#" + name);
32
- if (loaderClassName != null) {
33
- loaderClass = (Class<? extends HeadlessAppLoader>)Class.forName(loaderClassName);
34
- loaders.put(name, (HeadlessAppLoader) loaderClass.getDeclaredConstructor(Context.class).newInstance(context));
35
- } else {
36
- throw new IllegalStateException("Unable to instantiate AppLoader!");
37
- }
38
- } catch (PackageManager.NameNotFoundException e) {
39
- throw new IllegalStateException("Unable to instantiate AppLoader!", e);
40
- }
41
-
42
- }
43
-
44
- public static abstract class Callback {
45
-
46
- public void onComplete(boolean success, Exception exception) {
47
- // nothing
48
- }
49
- }
50
- }