Skip to content

Instantly share code, notes, and snippets.

@davethomas11
Last active February 4, 2018 19:39
Show Gist options
  • Save davethomas11/58c749613b5b048c9432de767d3bae04 to your computer and use it in GitHub Desktop.
Save davethomas11/58c749613b5b048c9432de767d3bae04 to your computer and use it in GitHub Desktop.
class ModuleLoader(val cacheDir: String) {
fun load(dex: File, cls: String = "com.example.dynamicmodule.DynamicModule"): IDynamicModule {
try {
val classLoader = DexClassLoader(dex.absolutePath, cacheDir,
null, this.javaClass.classLoader)
val moduleClass = classLoader.loadClass(cls)
if (IDynamicModule::class.java.isAssignableFrom(moduleClass)) {
return moduleClass.newInstance() as IDynamicModule
}
} catch (e: Exception) {
Log.e("ModuleLoader", e.message, e)
}
return IDynamicModule { "Failed to load" }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment