web-dev-qa-db-fra.com

Construire un projet Android xamarin sans succès, erreur XA4212

Dans Visual Studio 2017 15.4, tout se passe bien. Mais après la mise à niveau vers la version 15.5, mon projet Android xamarin ne peut pas être généré correctement, en affichant:

error XA4212: Type `Android.Support.V4.App.JobIntentService/JobServiceEngineImpl` implements `Android.Runtime.IJavaObject` but does not inherit `Java.Lang.Object` or `Java.Lang.Throwable`. This is not supported.
11
Liu Feng

Suite à la réponse de @Ironman, cela se produit avec Xamarin.Android 8.0. J'ai donc défini la propriété sur false dans le fichier .csproj du projet dans la section suivante.

<PropertyGroup>
    <!-- Other properties -->
    <AndroidErrorOnCustomJavaObject>false</AndroidErrorOnCustomJavaObject>
</PropertyGroup>

Dans la plupart des cas, vous devez ajouter la propriété car elle n'existe pas par défaut. 

Vous pouvez maintenant créer et exécuter l'application normalement, avec un avertissement uniquement.

Méfiez-vous des autres balises PropertyGroup _ à l'intérieur du fichier .csproj, spécifiques aux conditions de construction. 

Vous pouvez voir les autres propriétés et configurations de construction dans https://github.com/xamarin/xamarin-Android/blob/master/Documentation/build_process.md

26
Carlos487

J'ai donc rencontré cette erreur lors de la mise à jour de Visual Studio. Je l'ai finalement retrouvé dans le fichier csproj, pointant toujours vers la version 4.1 de mono.Android. Entrer et pointer le curseur vers la nouvelle version (8.1 au moment de mon écriture) l’a corrigé. 

<Reference Include="Mono.Android"> <HintPath>C:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\Mono.Android.dll<HintPath> </Reference>

0
user2245977

J'ai résolu le problème en cliquant avec le bouton droit de la souris sur la solution et en choisissant Nettoyer. Si vous recevez un message vous demandant de vérifier que le projet est sélectionné pour être déployé dans le Gestionnaire de configuration de solution après avoir essayé de nettoyer, vous pouvez trouver des instructions sur la façon de résoudre ce problème ici .

0
Ryan Case

AndroidErrorOnCustomJavaObject:  

Une propriété booléenne qui détermine si les types peuvent implémenter Android.Runtime.IJavaObject sans hériter également de Java.Lang.Object ou Java.Lang.Throwable:

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

Lorsque True, de tels types généreront une erreur XA4212, sinon un avertissement XA4212 sera généré.

La prise en charge de cette propriété a été ajoutée dans Xamarin.Android 8.1.

Cette propriété est True par défaut.

0
Ironman

Je devais hériter de Lava.Lang.object et supprimer Android.Runtime.IJavaObject pour résoudre le problème.

0
megaKertz