我正在尝试使我的应用程序模块化。将有一个核心可扩展基本模块。在Android系统中,我计划在assets
文件夹中有一个名为plugins
的子目录,其中会将核心应用程序的扩展名下载为 .apk 。
如何在 React Native 中创建这样的模块化应用程序?
我在Android中有可行的实现。目前,我的应用程序正在加载实现接口的外部插件:
public interface IDynamicModule {
String getText();
}
我正在使用 DexClassLoader
加载APK:
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" }
}
}
谢谢大家。