diff --git a/test-app/runtime/src/main/java/com/tns/Runtime.java b/test-app/runtime/src/main/java/com/tns/Runtime.java index b610ddb0c..d51a4210e 100644 --- a/test-app/runtime/src/main/java/com/tns/Runtime.java +++ b/test-app/runtime/src/main/java/com/tns/Runtime.java @@ -766,7 +766,13 @@ private void init(Logger logger, String appName, String nativeLibDir, File rootD this.logger = logger; boolean isMainThread = this.workerId == 0; - this.dexFactory = new DexFactory(logger, classLoader, dexDir, dexThumb, classStorageService, isMainThread); + // Parent-classloader injection is for debug/HMR cases where generated + // classes must be visible to framework reflection. In release, keep + // runtime-generated proxies in their isolated DexClassLoader; injecting + // through a temporary DexClassLoader can make ART reject the same dex + // path as registered by multiple class loaders. + boolean injectIntoParentClassLoader = isMainThread && isDebuggable; + this.dexFactory = new DexFactory(logger, classLoader, dexDir, dexThumb, classStorageService, injectIntoParentClassLoader); if (logger.isEnabled()) { logger.write("Initializing NativeScript JAVA");