Fehler: Für das Attribut 'adSize' im Paket 'com.google.example' main.xml wurde keine Ressourcen-ID gefunden


144

Als ich den Anweisungen zum Hinzufügen einer Anzeige per XML zu meiner App folgte, wurden folgende Fehler angezeigt:

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

Ich habe die Datei bearbeitet main.xml, hinzugefügt attrs.xml, aber der Compiler hat sie nicht gemocht.


1
Fügen Sie das Layout und die attrs.xml
Cristian

Antworten:


299

Ersetzen Sie /res/durch /lib/in Ihrem benutzerdefinierten Layout Nampespace.

xmlns:android="http://schemas.android.com/apk/res/android" in Ihrem Fall wäre:

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

Ich hoffe, es hilft.


Ich hatte ein anderes Problem, aber die gleiche Lösung funktionierte. Grundsätzlich habe ich eine Layoutdatei verwendet, die auf die Datei / res verweist, die ich gemäß den Anweisungen hier in / lib geändert habe, und es hat funktioniert. Können Sie erklären, was hier vor sich geht?
RightHandedMonkey

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

7
Hallo, was ist yourApp und yourClass in der obigen Lösung?
Programmierer

3
Bitte schreiben Sie ein Beispiel
Iman Marashi

Wann immer ich das mache und das Projekt neu erstelle, konvertiert es automatisch das gleiche in das vorherige und wirft den Fehler aus
Sagar Devanga

74

Ich hatte das gleiche Problem. Ich habe den Beispielcode aus dem Google-Code kopiert und konnte ihn nicht kompilieren.

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

Schließlich habe ich es herausgefunden. Der letzte Teil des Codes "com.google.example " ist der Paketname, daher müssen Sie ihn durch Ihr Projektpaket ersetzen.

Zum Beispiel ist mein Projektpaket " com.jms.AdmobExample", also adslautet mein Namensraum:

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

Überprüfen Sie mein Beispiel, es funktioniert gut. Sie können die APK herunterladen, um es zu versuchen. Ich habe hier auch meinen Quellcode eingefügt : Google Admob in der Android-Anwendung hinzufügen


13
Entwickler, wenn Sie Ihr Projektpaket in xmlns: ads verwenden, müssen Sie auch 'attrs.xml' hinzufügen, wie von James in seinem Link erläutert. Für neuere Admob sdk wird attrs.xml nicht mehr empfohlen. Verwenden Sie einfach den folgenden Namespace:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m

8
@ vivek.m, danke, dass du mir die richtige Antwort gegeben hast! Stattdessen MUSS apk / res im Falle einer 'apklib'-Projektabhängigkeit apk / lib verwenden.
se.solovyev

4
Danke, ich liebe das Internet, besonders Stackoverflow.com
htafoya

Vielen Dank, nach 3 Stunden Suchen und Debuggen ist Ihre Antwort endlich aufgetaucht und hat sie behoben.
Vlad Schnakovszki

@ vivek.m danke, das ist die Antwort, die für mich funktioniert hat - mit den com.google.ads.
Raddevus



8

Ich hatte das gleiche Problem, aber während ich ein Bibliotheksprojekt benutzte. Das Problem wurde in r17 behoben: Anstatt den Namespace des Pakets zu verwenden:

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

Man muss einen Dummy-Namespace verwenden:

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

Dadurch wird das Problem behoben, dass über das referenzierende Projekt nicht auf die Attribute zugegriffen werden kann.


8

Ich lade die gleiche benutzerdefinierte Demo von Android.com herunter und bekomme das gleiche Problem.

bei frist ändere ich mich

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

zu

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

es funktioniert . dann bekomme ich eine andere lösung

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

es funktioniert auch, aber es gibt einige Unterschiede. Die zweite Lösung hat eine Präfektenfunktion. Ich finde den Grund, vielleicht können Sie mithelfen. Danke


" schemas.android.com/apk/res-auto " fügt alle in Ihrem Projekt definierten Attribute sowie in Bibliotheken hinzu, auf die Sie in Ihrem Projekt verwiesen haben. Daher funktioniert es für Sie und seinen saubereren Ansatz
SAIR

3

Wie Sie in Ihrem attrs.xmladSize-Attribut angegeben haben, gehört es zum Namespace com.google.ads.AdView. Versuche zu ändern:

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

zu

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

und es sollte funktionieren.


@FranciscoCorralesMorales Ich habe es hinzugefügt, aber es funktioniert immer noch nicht
Sagar Devanga

3

Ich habe diesen Fehler in Bezug auf das largeHeap-Attribut erhalten. Meine Anwendung wurde nicht unter Eclipse ausgeführt, aber unter ant wurde sie weiterhin normal erstellt und ausgeführt.

Die Android- Dokumentation besagt, dass:

xmlns: android

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

Ich habe diese Zeile in meinem Manifest gelöscht, in Eclipse gespeichert, die Zeile wieder eingefügt und erneut gespeichert, und es hat funktioniert. In meinem Fall war das Problem vermutlich, dass Eclipse, Ant und AdB nicht richtig miteinander sprachen und das Speichern etwas zurücksetzte. Interessanterweise hat ein Neustart von Eclipse dieses Problem nicht gelöst (normalerweise sollten Sie bei solchen Problemen zuerst einen Neustart von Eclipse versuchen, und normalerweise wird das Problem dadurch gelöst).


Thx dies pls die Änderung von "xmlns:" URL hat mich gerettet :)
songyy


2

Stellen Sie sicher, dass Sie diesen Teil in Ihr Layout aufgenommen haben (oben unter xmlns: android line)

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

Überprüfen Sie auch, ob Sie attrs.xml in res / values ​​/ aufgenommen haben

Überprüfen Sie hier für weitere Details. http://code.google.com/mobile/ads/docs/android/banner_xml.html


1

Aufgrund der Antwort hier denke ich, dass Sie das Attribut xmlns: ads ändern müssen. Ändern Sie dies beispielsweise:

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

dazu:

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

Es hat es für mich behoben. Wenn Sie immer noch Fehler erhalten, können Sie dies näher erläutern?


1

Normalerweise binde ich die Eigenschaft xmlns: ads wie folgt in die Eigenschaften von adview ein:

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

Damit Sie nicht jedes Mal, wenn Sie den Adview kopieren, in das übergeordnete Element einbetten müssen.

Kopieren Sie einfach den obigen Hinweis und fügen Sie ihn an einer beliebigen Stelle ein. Es sollte funktionieren


1

Ich habe nach einer Antwort gesucht, konnte sie aber nicht finden, aber schließlich konnte ich dies durch Hinzufügen einer play-service-adsAbhängigkeit beheben. Versuchen wir Folgendes:

*) Datei -> Projektstruktur ... -> Unter dem Modul finden Sie die App und es gibt eine Option namens Abhängigkeiten. Sie können Ihrem Projekt die Abhängigkeit com.google.android.gms: play-services-ads: xxx hinzufügen

Dieses Problem trat auf, als ich versuchte, Eclipse-Projekte in Android Studio zu importieren.

Bild


1

In meinem Fall fehlte mir eine Abhängigkeit im build.gradle auf App-Ebene.

Die Lösung bestand darin, die Abhängigkeit wie folgt hinzuzufügen:

Öffnen Sie die Datei build.gradle auf App-Ebene für Ihre App und suchen Sie nach einem Abschnitt "Abhängigkeiten".

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

Fügen Sie die obige Zeile hinzu, in der Gradle angewiesen wird, die neueste Version des Mobile Ads SDK und weitere damit verbundene Abhängigkeiten abzurufen. Speichern Sie anschließend die Datei und führen Sie eine Gradle-Synchronisierung durch.


0

Ich hatte auch das gleiche Problem, das ich verwendet habe, als GoogleAdMobAdsSDK-4.1.0.jarich es ausprobiert habe. GoogleAdMobAdsSDK-4.0.4.jarJetzt funktioniert es einwandfrei. Nach meiner Erfahrung ist es ein Problem mit der JAR-Datei.


0

Ich hatte ein ähnliches Problem mit MonoDroid beim Erstellen einer Klassenbibliothek mit Drawables- und Layouts-Dateien, die "android:"Attribute in der XML haben. Ich erhalte einen ähnlichen Fehler wie in der Frage.

Für das Attribut 'textCursorDrawable' im Paket 'android' wurde keine Ressourcen-ID gefunden.

Ich habe festgestellt, dass das Attribut "android:" nur in Android API Level 12+ verfügbar ist, und ich habe versucht, für eine ältere Version zu erstellen. Das Aktualisieren meines Projekts auf Android 4.0 hat das Problem für mich behoben. Hier habe ich die Antwort gefunden. https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM Stellen Sie einfach sicher, dass Sie mit der richtigen API-Ebene arbeiten, wenn Sie ein ähnliches Problem erhalten, und stellen Sie sicher, dass die fehlende Kennung in vorhanden ist die API-Ebene, gegen die Sie erstellt werden.


0

Ändern Sie einfach das Ziel-SDK. Klicken Sie mit der rechten Maustaste auf das Projekt, klicken Sie dann auf die Eigenschaft Android auswählen und wählen Sie die neueste API aus


0

Der gleiche Fehler ist mir in der Datei "activity_banner_xml.xml" im Ordner res / layout passiert. Was ich getan habe, um es zu reparieren, war ersetzen

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

mit

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

Es gab keine Verweise auf meinen Paketnamen. Stellen Sie außerdem sicher, dass Sie die adUnitId für festlegenads:adUnitId="@string/banner_ad_unit_id"> Die der hinzugefügten Einheit befindet sich in Ihrem Ordner res / Values ​​/ Strings.

Meine endgültige Layoutdatei sieht also folgendermaßen aus:

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

Wenn es sich bei Ihrem um ein Gradle-Projekt handelt, ersetzen Sie:

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

mit:

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

0

Ich füge die Lösung hinzu, die für denselben Fehler bei mir funktioniert hat.

Ich habe mit der rechten Maustaste auf Projekt> Eigenschaften> (linkes Feld) Android geklickt

Rechts unter LibraryIch habe die fehlerhafte Bibliothek entfernt und erneut hinzugefügt.

Bei mir trat dieser Fehler nach einer beschädigten Eclipse-Datei im Arbeitsbereich auf, in der ich alle Projekte erneut importieren musste.


0

Mein Problem war sehr ähnlich (erzeugt das gleiche Problem). Nach dem Refactoring des Variablennamens durch die Option "refactor -> rename" in Android Studio (von "value" zu "myValue") habe ich auch Änderungen in der Manifestdatei gefunden. Der "Wert" -Pool für Metadaten wurde in "myValue" geändert.

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

Nach dem Zurücksetzen der Datei scheint alles wieder in Ordnung zu sein.

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

Ich hoffe, es wird jemandem helfen!


0

Fügen Sie xmlns hinzu: ads = "http://schemas.android.com/apk/lib/com.google.ads" . Dadurch wird Ihr Problem behoben .

<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

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

dann Projekt neu erstellen


0

Ich habe in android.support.design.widget.NawigationView diesen Parameter hinzugefügt :

android:layout_gravity="start"

Und das Problem wurde gelöst.



-2

Geben Sie compile 'de.hdodenhof:circleimageview:2.0.0' Gradle Dependencies ein und fügen Sie diesen Code in nav_header_main.xml ein

<?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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.