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 +6 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/expo/modules/apploader/AppLoaderProvider.kt +46 -0
- package/build/EventEmitter.d.ts.map +1 -1
- package/build/NativeModule.d.ts.map +1 -1
- package/build/NativeModulesProxy.d.ts.map +1 -1
- package/build/PermissionsHook.d.ts.map +1 -1
- package/build/Platform.d.ts.map +1 -1
- package/build/SharedObject.d.ts.map +1 -1
- package/build/SharedRef.d.ts.map +1 -1
- package/package.json +3 -3
- package/android/src/main/java/expo/modules/apploader/AppLoaderProvider.java +0 -50
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._
|
package/android/build.gradle
CHANGED
|
@@ -23,7 +23,7 @@ if (KOTLIN_MAJOR_VERSION >= 2) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
group = 'host.exp.exponent'
|
|
26
|
-
version = '2.3.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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"}
|
package/build/Platform.d.ts.map
CHANGED
|
@@ -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
|
|
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,
|
|
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"}
|
package/build/SharedRef.d.ts.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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.
|
|
45
|
+
"expo-module-scripts": "^4.1.1"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
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
|
-
}
|