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

.NET MAUI Android深度链接异常:无法实例化MainActivity

.NET MAUI Android深度链接配置报错:ClassNotFoundException

点击深度链接打开应用时触发以下错误:

Java.Lang.RuntimeException: 'Unable to instantiate activity ComponentInfo{app.mydomain/MyApp.Client.MAUI.MainActivity}:
java.lang.ClassNotFoundException: Didn't find class "MyApp.Client.MAUI.MainActivity" 
on path: DexPathList[[zip file "/data/app/~~0C9vYHAHNOr9CaB4f63clQ==/app.mydomain-YYQ6ZPc3-KSVnF8_VcuQVQ==/base.apk"],
nativeLibraryDirectories=[/data/app/~~0C9vYHAHNOr9CaB4f63clQ==/app.mydomain-YYQ6ZPc3-KSVnF8_VcuQVQ==/lib/arm64, 
/data/app/~~0C9vYHAHNOr9CaB4f63clQ==/app.mydomain-YYQ6ZPc3-KSVnF8_VcuQVQ==/base.apk!/lib/arm64-v8a, /system/lib64, 
/system_ext/lib64]]'

现有代码

MainActivity.cs

namespace MyApp.Client.MAUI
{
 [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
[IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable },
    DataScheme = "https", DataHost = "mydomain.app", DataPathPattern = "/.*", AutoVerify = true)]
public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    }
    protected override void OnResume()
    {
        base.OnResume();

        Platform.OnResume(this);
    }
    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);

        var data = intent.DataString;

        if (intent.Action != Intent.ActionView) return;
        if (string.IsNullOrWhiteSpace(data)) return;

        var path = data.Replace(@"https://mydomain.app", "");
        //todo - handle path

        StartActivity(typeof(MainActivity));
    }
}

AndroidManifest.xml中的手动配置

<activity android:name="MyApp.Client.MAUI.MainActivity" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" android:host="mydomain.app" android:pathPattern="/.*" />
    </intent-filter>
</activity>

解决步骤

  • 移除AndroidManifest.xml中手动添加的activity配置
    .NET MAUI会自动根据MainActivity类上的[Activity]和[IntentFilter]特性生成AndroidManifest.xml内容,手动重复配置会导致类名匹配冲突,保留代码中的特性即可。

  • 修复OnNewIntent中的错误逻辑
    当前代码处理完链接后调用StartActivity(typeof(MainActivity))会重复启动Activity,引发不必要的错误,应改为直接处理链接导航逻辑:

protected override void OnNewIntent(Intent intent)
{
    base.OnNewIntent(intent);

    var data = intent.DataString;

    if (intent.Action != Intent.ActionView || string.IsNullOrWhiteSpace(data)) 
        return;

    var path = data.Replace(@"https://mydomain.app", "");
    // 替换为实际的导航逻辑,比如跳转到对应页面
    // Application.Current.MainPage?.Navigation.PushAsync(new YourTargetPage(path));
}
  • 清理重建项目

    1. 右键项目选择「清理」
    2. 删除项目根目录下的bin和obj文件夹
    3. 重新构建项目,可查看obj\Debug\net7.0-android下自动生成的AndroidManifest.xml确认配置正确性
  • 检查包名与命名空间一致性
    确认AndroidManifest.xml根节点的package属性值和MainActivity的命名空间、应用包名保持一致,避免类查找路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:25:17