Android 清单活动名称生成运行时异常



尝试按照此处的文档在我的 Android.manifest 文件中命名activity

<manifest 
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="com.companyname.xamarinauth"
>
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="XamarinAuth.Android" >
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="obsolete-scheme" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

无论我向活动的 name 属性提供什么类名或字符串,我都会得到运行时异常:

**Java.Lang.RuntimeException:** 'Unable to instantiate activity ComponentInfo{com.companyname.xamarinauth/com.companyname.xamarinauth.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.companyname.xamarinauth.MainActivity" on path: DexPathList[[zip file "/data/app/com.companyname.xamarinauth-LAUvw_T2YXTzpe7rXmRWhg==/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.xamarinauth-LAUvw_T2YXTzpe7rXmRWhg==/lib/arm64, /data/app/com.companyname.xamarinauth-LAUvw_T2YXTzpe7rXmRWhg==/base.apk!/lib/arm64-v8a, /system/lib64]]

Visual Studio 生成的样板 Xamarin 代码为我创建了 MainActivity 类:

[Activity(
Label = "XamarinAuth",
Icon = "@mipmap/icon",
Theme = "@style/MainTheme",
MainLauncher = true, 
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation
)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{...}

我假设FormsAppCompatActivityActivity的子类?提供com.companyname.xamarinauth.MainActivity主题的任何变体的名称都会生成错误。我错过了什么?

如果您创建 Activity 并使用 [Activity] 自定义属性,您将在 bj/Debug/android/AndroidManifest.xml 中看到活动名称。

AndroidManifest.xml 作为构建过程的一部分生成,在 Properties/AndroidManifest.xml 中找到的 XML 与从自定义属性生成的 XML 合并。生成的合并 AndroidManifest.xml 驻留在 obj 子目录中;例如,它驻留在obj/Debug/android/AndroidManifest.xml用于调试版本。合并过程很简单:它使用代码中的自定义属性来生成XML元素,并将这些元素插入到AndroidManifest.xml中。

更详细的信息,请看:

https://learn.microsoft.com/en-us/xamarin/android/platform/android-manifest

最新更新