erreur: aucun identifiant de ressource trouvé pour l'attribut "adSize" dans le package "com.google.example" main.xml


144

Lorsque j'ai suivi les instructions pour ajouter une annonce dans mon application par XML, j'ai eu les erreurs suivantes:

Description Resource Path Location Type
error: No resource identifier found for attribute 'adSize' in package 'com.google.example'  main.xml    /HelloWorld/res/layout  line 12 Android AAPT Problem
Description Resource Path Location Type
error: No resource identifier found for attribute 'adUnitId' in package 'com.google.example'    main.xml    /HelloWorld/res/layout  line 12 Android AAPT Problem

J'ai édité le fichier main.xml, add attrs.xmlmais le compilateur n'a pas aimé.


1
Collez la mise en page et le fichier attrs.xml
Cristian

Réponses:


299

Remplacez /res/par /lib/dans votre mise en page personnalisée nampespace.

xmlns:android="http://schemas.android.com/apk/res/android" dans votre cas, serait:

xmlns:yourApp="http://schemas.android.com/apk/lib/com.yourAppPackege.yourClass"

J'espère que cela aide.


J'avais un problème différent, mais la même solution fonctionnait. Fondamentalement, j'utilisais un fichier de mise en page qui référence le fichier / res que j'ai changé en / lib selon les instructions ici et cela a fonctionné. Pouvez-vous expliquer ce qui se passe ici?
RightHandedMonkey

xmlns: yourApp = "schemas.android.com/apk/res-auto";
Faizan Mubasher

7
Salut, Quelle est votre application et votre classe dans la solution ci-dessus?
Programmeur

3
s'il vous plaît écrivez un exemple
Iman Marashi

chaque fois que je fais cela et que je reconstruis le projet, il convertit automatiquement la même chose en précédent et renvoie l'erreur
Sagar Devanga

74

J'ai eu le même problème. J'ai copié l'exemple de code à partir du code Google et je n'ai pas pu compiler.

xmlns:ads="http://schemas.android.com/apk/res/com.google.example"

Finalement, je l'ai compris. La dernière partie du code " com.google.example" est le nom de leur package, vous devez donc le remplacer par votre package de projet.

Par exemple, mon package de projet est " com.jms.AdmobExample", donc mon adsespace de dénomination est:

xmlns:ads="http://schemas.android.com/apk/res/com.jms.AdmobExample"

Vérifiez mon exemple, cela fonctionne bien. Vous pouvez télécharger l'APK pour essayer. J'ai également mis mon code source ici: Ajouter Google Admob dans l'application Android


13
Devs, si vous utilisez votre package de projet dans xmlns: ads, vous devez également ajouter 'attrs.xml' comme expliqué par James dans son lien. Pour les nouveaux sdk Admob, attrs.xml n'est plus recommandé. Utilisez simplement l'espace de noms suivant:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m

8
@ vivek.m, merci de m'avoir indiqué la bonne réponse! A la place apk / res on DOIT utiliser apk / lib en cas de dépendance du projet 'apklib'.
se.solovyev

4
Merci, j'aime Internet, spécialement Stackoverflow.com
htafoya

Merci beaucoup, après 3 heures de recherche et de débogage, votre réponse est finalement apparue et corrigée.
Vlad Schnakovszki

@ vivek.m merci, c'est la réponse qui a fonctionné pour moi - avec les com.google.ads.
raddevus



8

J'ai eu le même problème, mais en utilisant un projet de bibliothèque. Le problème a été résolu dans r17: au lieu d'utiliser l'espace de noms du paquet:

xmlns:app="http://schemas.android.com/apk/res/hu.droidium.exercises"

Il faut utiliser un espace de noms factice:

xmlns:app="http://schemas.android.com/apk/res-auto"

Cela résoudra le problème des attributs non accessibles à partir du projet de référencement.


8

Je télécharge la même démo personnalisée sur Android.com et j'obtiens le même problème de conformité.

au début, je change

xmlns:custom="http://schemas.android.com/apk/res/com.example.android.customviews"

à

xmlns:custom="http://schemas.android.com/apk/lib/com.example.android.customviews"

ça marche . alors j'obtiens une autre solution

 xmlns:custom="http://schemas.android.com/apk/res-auto"

cela fonctionne aussi, mais il y a quelques différences. La seconde solution a une fonction de préfet. je trouve la raison, peut-être que vous pouvez avoir un coup de main. merci


" schemas.android.com/apk/res-auto " ajoute tous les attributs définis dans votre projet ainsi que définis dans les bibliothèques que vous avez référencées dans votre projet. donc cela fonctionne pour vous et son approche plus propre
SAIR

3

Comme vous le spécifiez dans votre attrs.xmlattribut adSize appartient à l'espace de noms com.google.ads.AdView. Essayer de changer:

android:adUnitId="a14bd6d2c63e055"         android:adSize="BANNER"

à

ads:adUnitId="a14bd6d2c63e055"         ads:adSize="BANNER"

et cela devrait fonctionner.


@FranciscoCorralesMorales Je l'ai ajouté mais cela ne fonctionne toujours pas
Sagar Devanga

3

J'ai reçu cette erreur en ce qui concerne l'attribut largeHeap, mon application ne fonctionnait pas sous eclipse mais sous ant, elle était toujours construite et fonctionnait normalement.

La documentation Android indique que:

xmlns: android

Defines the Android namespace. This attribute should always be set to "http://schemas.android.com/apk/res/android".

J'ai effacé cette ligne dans mon manifeste, sauvegardé dans Eclipse, collé la ligne et sauvegardé à nouveau, et cela a fonctionné. Dans mon cas, je suppose que le problème était éclipse, fourmi et adb ne se parlant pas correctement et la sauvegarde a réinitialisé quelque chose. Il est intéressant de noter que le redémarrage de eclipse n'a pas résolu ce problème (généralement avec ces types de problèmes, le redémarrage de eclipse est la première chose que vous devriez essayer, et généralement cela résout le problème).


Thx ceci pls le changement de "xmlns:" url m'a sauvé :)
songyy


2

Assurez-vous d'avoir inclus cette partie dans votre mise en page (en haut ci-dessous xmlns: ligne android)

xmlns:ads="http://schemas.android.com/apk/res/com.google.example" 
...........blah blah..

Vérifiez également si vous avez inclus attrs.xml dans le fichier res / values ​​/

Vérifiez ici pour plus de détails. http://code.google.com/mobile/ads/docs/android/banner_xml.html


1

Sur la base de la réponse ici , je pense que vous devez modifier l'attribut xmlns: ads. Par exemple, changez ceci:

<com.google.ads.AdView xmlns:ads="http://schemas.android.com/apk/res/com.google.example .../>

pour ça:

<com.google.ads.AdView xmlns:ads="http://schemas.android.com/apk/res/com.your.app.namespace" .../>

Il l'a corrigé pour moi. Si vous obtenez toujours des erreurs, pourriez-vous élaborer?


1

J'intègre généralement la propriété xmlns: ads dans les propriétés adview de cette façon:

<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="@string/banner_ad_unit_id"/>

de sorte que vous n'ayez pas besoin d'intégrer dans le parent chaque fois que vous copiez l'avis.

Copiez et collez simplement l'avis ci-dessus et collez-le n'importe où et cela devrait fonctionner


1

J'ai cherché une réponse mais je n'ai pas pu trouver mais finalement je pourrais résoudre ce problème en ajoutant une play-service-adsdépendance, essayons ceci:

*) Fichier -> Structure du projet ... -> Sous le module, vous pouvez trouver l'application et il y a une option appelée dépendances et vous pouvez ajouter com.google.android.gms: play-services-ads: xxx dependency à votre projet

J'ai rencontré ce problème lorsque j'essaye d'importer des projets Eclipse dans Android Studio.

Image


1

Dans mon cas, il me manquait une dépendance dans le build.gradle au niveau de l'application.

La solution consistait à ajouter la dépendance comme le décrit Google ci-dessous:

Ouvrez le fichier build.gradle au niveau de l'application pour votre application et recherchez une section "dépendances".

dependencies {
    implementation ...SOME_IMPLEMENTATION
    implementation ...SOME_IMPLEMENTATION
    implementation 'com.google.android.gms:play-services-ads:18.1.1'//<---ADD THIS LINE
}

Ajoutez la ligne ci-dessus, qui demande à Gradle d'extraire la dernière version du SDK Mobile Ads et les dépendances associées supplémentaires. Une fois cela fait, enregistrez le fichier et effectuez une synchronisation Gradle.


0

J'ai également rencontré le même problème, j'utilisais GoogleAdMobAdsSDK-4.1.0.jaralors j'ai essayé avec GoogleAdMobAdsSDK-4.0.4.jarmaintenant cela fonctionne bien, c'est un problème avec le fichier jar selon mon expérience.


0

J'ai eu un problème similaire sur MonoDroid lors de la création d'une bibliothèque de classes avec des fichiers Drawables et Layouts qui ont un "android:"attribut dans le xml. J'obtiens une erreur similaire à celle de la question.

Aucun identifiant de ressource trouvé pour l'attribut "textCursorDrawable" dans le package "android"

J'ai trouvé que l'attribut "android:" n'est disponible que dans l'API Android niveau 12+ et j'essayais de créer une version plus ancienne. La mise à jour de mon projet pour construire avec Android 4.0 a résolu le problème pour moi. Voici où j'ai trouvé la réponse. https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM Assurez-vous simplement que vous construisez avec le bon niveau d'API si vous rencontrez un problème similaire et assurez-vous que l'identifiant manquant existe dans ce niveau d'API sur lequel vous construisez.


0

il suffit de changer le sdk cible, faites un clic droit sur le projet puis cliquez sur la propriété, sélectionnez Android et sélectionnez la dernière API


0

La même erreur m'est arrivée dans le fichier "activity_banner_xml.xml" dans le dossier res / layout. Ce que j'ai fait pour le réparer était de le remplacer

<com.google.android.gms.samples.ads.AdView

avec

<com.google.android.gms.ads.AdView

Il n'y avait aucune référence à mon nom de package. Assurez-vous également de définir adUnitId pour ads:adUnitId="@string/banner_ad_unit_id"> L'ID d'unité d'ajout se trouve dans votre dossier res / Values ​​/ Strings.

Donc, mon fichier de mise en page final ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    ads:adSize="BANNER"
    ads:adUnitId="@string/ad_unit_id"/>


0

Si le vôtre est un projet gradle, remplacez:

xmlns:android="http://schemas.android.com/apk/res/android" 

avec:

xmlns:app="http://schemas.android.com/apk/res-auto"

0

J'ajoute la solution qui a fonctionné pour moi pour cette même erreur.

J'ai cliqué droit sur projet> propriétés> (panneau de gauche) Android

Panneau de droite sous Libraryj'ai supprimé la bibliothèque défectueuse et l'ai ajoutée à nouveau.

Pour moi, cette erreur s'est produite après un fichier d'éclipse d'espace de travail corrompu où j'ai dû importer à nouveau tous les projets.


0

Mon problème était très similaire (produit le même problème). Après avoir refactoré le nom de la variable par l'option "refactor -> rename" dans Android Studio (de "value" à "myValue"), j'ai également trouvé des changements dans le fichier manifeste. Le pool de méta-données "valeur" est devenu "maValeur".

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:myValue="@string/facebook_app_id"/>

Après avoir restauré le fichier, tout semble à nouveau correct.

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>

J'espère que cela aidera quelqu'un!


0

Ajoutez xmlns: ads = "http://schemas.android.com/apk/lib/com.google.ads" , cela résoudra votre problème.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.app.activities.Initializer" >


    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-123456789/123456789"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

0

Remplacer xmlns:android="http://schemas.android.com/apk/res/android" par xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

puis Rebuild Project


0

J'ai ajouté dans android.support.design.widget.NawigationView ce paramètre:

android:layout_gravity="start"

Et le problème a été résolu.



-2

METTEZ compile 'de.hdodenhof:circleimageview:2.0.0' EN Gradle et dépendances mettre ce code dans nav_header_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/lib/org.mainsoft.navigationdrawer"

    android:gravity="bottom"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:layout_width="match_parent"
    android:layout_height="160dp"
    android:background="@drawable/background_material_red"
    android:orientation="vertical">

<de.hdodenhof.circleimageview.CircleImageView

    android:id="@+id/profile_image"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:src="@drawable/profile"
    app:border_color="#FF000000"
    android:layout_marginLeft="24dp"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginStart="24dp" />

</LinearLayout>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.