You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI Android应用报错:Magick.Native-Q16-arm64.dll未找到

解决MAUI Android中HEIF转PNG及Magick.Net库加载失败问题

针对Magick.Net的DllNotFoundException解决步骤

  • 补全Native依赖包:仅安装Magick.Net-Q16-arm64不足以运行,必须同时安装对应架构的原生库包Magick.NET-Native-Q16-arm64,该包包含Android所需的原生动态库文件。
  • 配置Android ABI过滤:在MAUI Android项目的.csproj文件中,确保指定了正确的支持架构,避免不兼容的Abi导致库加载失败:
    <PropertyGroup>
        <AndroidSupportedAbis>arm64-v8a;armeabi-v7a</AndroidSupportedAbis>
    </PropertyGroup>
    
  • 清理重建项目:删除项目的bin和obj目录,重新执行构建操作,确保NuGet包的原生库文件正确复制到Android应用的输出目录中。

替代方案:使用Android原生API处理HEIF转PNG

如果Magick.Net的适配问题难以解决,可直接利用Android 10(API 29+)原生支持的HEIF解码能力实现转换,无需依赖第三方库:

using Android.Graphics;
using System.IO;

public byte[] HeicToPng(byte[] heicBytes)
{
    var decodeOptions = new BitmapFactory.Options
    {
        InPreferredConfig = Bitmap.Config.Argb8888
    };

    // 解码HEIF字节数组为Bitmap
    using var bitmap = BitmapFactory.DecodeByteArray(heicBytes, 0, heicBytes.Length, decodeOptions);
    if (bitmap == null)
        throw new InvalidOperationException("无法解码HEIF图片");

    // 将Bitmap压缩为PNG字节数组
    using var outputStream = new MemoryStream();
    bitmap.Compress(Bitmap.CompressFormat.Png, 100, outputStream);
    return outputStream.ToArray();
}

注意:该方法仅适用于Android API 29及以上版本,若需兼容更低版本,可搭配第三方HEIF解码库(如libheif的Android绑定)。

内容的提问来源于stack exchange,提问作者Duefectu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:42:20