这是一个将程序集写入插件文件夹然后读入并在运行时加载的示例。
确保你有你想要的程序集去 Assets 文件夹设置为AndroidAsset 的 Build Action。请参阅下面的屏幕截图。
请注意:您可能需要将扩展名更改为 .mp3。见这里。不过我没有这个问题。
![在此处输入图像描述](https://i.stack.imgur.com/Hhhgw.png)
完成此操作后,您应该能够使用 Asset Manager 获取资产。您可以加载它们或对它们做任何事情。这是将它们读入内存并写出名称的示例。
const String pluginPath = "Plugins";
var pluginAssets = Assets.List(pluginPath);
foreach (var pluginAsset in pluginAssets)
{
var file = Assets.Open(pluginPath + Java.IO.File.Separator + pluginAsset);
using (var memStream = new MemoryStream())
{
file.CopyTo(memStream);
//do something fun.
var assembly = System.Reflection.Assembly.Load(memStream.ToArray());
Console.WriteLine(String.Format("Loaded: {0}", assembly.FullName));
}
}
在发布模式下,请注意 Mono for Android 将对您的库执行静态分析以执行大小优化。如果您在此之后加载程序集,那么您可能没有应该包含的功能。下面的屏幕截图显示了发布版本的标准链接配置。您可以将一些标志和配置添加到代码中以帮助防止链接(Xamarin Docs on Linking),但我不确定您可以为动态加载的库做太多事情。
![Mono for Android - 发布链接](https://i.stack.imgur.com/qoOQC.png)