如何在 React Native 中创建可扩展的应用程序

Pro*_*Rev 5 plugins android ios swift react-native

我正在尝试使我的应用程序模块化。将有一个核心的可扩展基础模块。在 Android 中,我计划在assets文件夹中有一个子目录,称为plugins,核心应用程序的扩展将下载到.apk 中

如何在React Native 中创建这样的模块化应用程序?

我在 Android 中有一个有效的实现。我目前有我的应用程序加载实现接口的外部插件:

public interface IDynamicModule {
  String getText();
}  
Run Code Online (Sandbox Code Playgroud)

我正在使用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" }
    }    
}  
Run Code Online (Sandbox Code Playgroud)

谢谢大家。