Имя действия манифеста Android создает исключение RunTime - PullRequest
0 голосов
/ 24 сентября 2019

Попытка назвать activity в моем файле Android.manifest, следуя документам здесь :

<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>

Независимо от того, какое имя класса или строку я предоставляю свойству имени действияЯ получаю исключение времени выполнения:

**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]]

Стандартный код Xamarin, сгенерированный Visual Studio, создает для меня класс 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
{...}

Я предполагаю, что FormsAppCompatActivity является подклассомActivity?Предоставление имени любой вариации на тему com.companyname.xamarinauth.MainActivity приводит к ошибке.Чего мне не хватает?

1 Ответ

0 голосов
/ 26 сентября 2019

Если вы создадите Activity и будете использовать пользовательский атрибут [Activity], вы увидите имя Activity в bj / Debug / android / AndroidManifest.xml.

AndroidManifest.xml создается как часть процесса сборки, а XML, найденный в файле Properties / AndroidManifest.xml, объединяется с XML, который создается из пользовательских атрибутов.Получившийся объединенный файл AndroidManifest.xml находится в подкаталоге obj;например, он находится в obj / Debug / android / AndroidManifest.xml для отладочных сборок.Процесс слияния тривиален: он использует настраиваемые атрибуты в коде для генерации XML-элементов и вставляет эти элементы в AndroidManifest.xml.

Для получения более подробной информации, пожалуйста, посмотрите:

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

...