Skip to content

Commit 716727f

Browse files
committed
fix: dex loader parent injection release vs debug
1 parent d0afd1e commit 716727f

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

test-app/runtime/src/main/java/com/tns/Runtime.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,13 @@ private void init(Logger logger, String appName, String nativeLibDir, File rootD
766766
this.logger = logger;
767767

768768
boolean isMainThread = this.workerId == 0;
769-
this.dexFactory = new DexFactory(logger, classLoader, dexDir, dexThumb, classStorageService, isMainThread);
769+
// Parent-classloader injection is for debug/HMR cases where generated
770+
// classes must be visible to framework reflection. In release, keep
771+
// runtime-generated proxies in their isolated DexClassLoader; injecting
772+
// through a temporary DexClassLoader can make ART reject the same dex
773+
// path as registered by multiple class loaders.
774+
boolean injectIntoParentClassLoader = isMainThread && isDebuggable;
775+
this.dexFactory = new DexFactory(logger, classLoader, dexDir, dexThumb, classStorageService, injectIntoParentClassLoader);
770776

771777
if (logger.isEnabled()) {
772778
logger.write("Initializing NativeScript JAVA");

0 commit comments

Comments
 (0)