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

user584819
la source
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.

M_AWADI
la source
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

James
la source
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
42

pour moi, je dois ajouter

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

juste après:

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

dans res / layout / main.xml

Zennichimaro
la source
1
Vous êtes l'économiseur de vie et de sommeil ... Merci, vous avez sauvé mon sommeil :)
Naruto
J'ai une question admob: stackoverflow.com/questions/36389729/… \
Ruchir Baronia
27

Vous pouvez également utiliser http://schemas.android.com/apk/res-auto qui s'en chargerait automatiquement. Utilisez-le comme ceci:

xmlns:ads="http://schemas.android.com/apk/res-auto"
Bms270
la source
@Niklas: Ce n'est pas un lien vers une page Web. Ceci est une URL à utiliser comme ceci: xmlns: ads = " schemas.android.com/apk/res-auto " qui résout automatiquement l'URL de la ressource. Voir ma réponse mise à jour ci-dessus.
Bms270
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.

Andras Balázs Lajtha
la source
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

Facture
la source
" 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.

Pennsylvanie
la source
@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).

tjb
la source
Thx ceci pls le changement de "xmlns:" url m'a sauvé :)
songyy
J'ai une question admob: stackoverflow.com/questions/36389729/…
Ruchir Baronia
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

Kabilan
la source
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?

maître de cérémonie
la source
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

MBH
la source
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

HashanR
la source
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.

smitty1
la source
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.

Vicky
la source
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.

A AlTaiar
la source
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

Cheikh Sohail
la source
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"/>

Gène
la source
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"
Sahana P
la source
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.

Onimusha
la source
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!

Adrian Grygutis
la source
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>
NLNRao
la source
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

Shubhamhackz
la source
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.

Bombey77
la source
-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>
Rhimi Wajih
la source