Udostępnij za pośrednictwem


Błąd platformy .NET dla systemu Android XA1041

Przykładowe komunikaty

error XA1041: The MSBuild property 'MonoAndroidAssetPrefix' has an invalid value of 'c:\Foo\Assets'. The value is expected to be a directory path representing the relative location of your Assets or Resources.
error XA1041: The MSBuild property 'MonoAndroidResourcePrefix' has an invalid value of 'c:\Foo\Resources'. The value is expected to be a directory path representing the relative location of your Assets or Resources.

Problematyka

Problem polega na tym, że zarówno MonoAndroidAssetPrefix, jak i MonoAndroidResourcePrefix powinny być postrzegane jako ścieżki katalogów względnych. Ta informacja jest używana do "usuwania" informacji o katalogu głównym z zasobu lub materiału podczas pakowania aplikacji. Występuje błąd, ponieważ właściwość zawiera pełną ścieżkę.

Rozważmy na przykład następującą strukturę:

Foo.csproj
MyAssets/
    Foo.txt
    Subfolder/
        Bar.txt
MainActivity.cs

W końcowej wersji .apk oczekujemy, że pliki Foo.txt i Bar.txt będą umieszczone w folderze assets. Aby to zrobić poprawnie, system kompilacji musi znać nazwę folderu, w którym znajdują się zasoby. Domyślnie jest to "Zasoby", ale obsługiwane są również inne nazwy folderów.

W powyższym przykładzie spodziewamy się, że użytkownik ustawi MonoAndroidAssetPrefix wartość "Moje zasoby". To zapewni, że podczas tworzenia pakietów zostanie usunięta część ścieżki "MyAssets" do "Foo.txt" itp. Jeśli MonoAndroidAssetPrefix jest ustawione na /Users/xxx/Foo/MyAssets lub c:\Users\xxx\Foo\MyAssets, zostanie wyświetlony ten komunikat o błędzie.

Rozwiązanie

Poprawka tego problemu polega na tym, że nie należy używać pełnej ścieżki dla wartości MonoAndroidAssetPrefix lub MonoAndroidResourcePrefix. Powinny one być względną ścieżką katalogu zgodną ze ścieżką folderu, w której są przechowywane zasoby.