errore: nessun identificatore di risorsa trovato per l'attributo 'adSize' nel pacchetto 'com.google.example' main.xml


144

Quando ho seguito le istruzioni per aggiungere un annuncio alla mia app tramite XML, ho ricevuto i seguenti errori:

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

Ho modificato il file main.xml, aggiungi il attrs.xmlfile ma il compilatore non mi è piaciuto.


1
Incolla il layout e l'attrs.xml
Cristian,

Risposte:


299

Sostituisci /res/con /lib/nel tuo spazio di layout personalizzato.

xmlns:android="http://schemas.android.com/apk/res/android" nel tuo caso, sarebbe:

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

Spero possa essere d'aiuto.


Ho avuto un problema diverso, ma la stessa soluzione ha funzionato. Fondamentalmente stavo usando un file di layout che fa riferimento al file / res che ho cambiato in / lib secondo le istruzioni qui e ha funzionato. Potete fornire una spiegazione di cosa sta succedendo qui?
RightHandedMonkey

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

7
Ciao, qual è la tua app e la tua classe nella soluzione sopra?
Programmatore

3
per favore scrivi un esempio
Iman Marashi il

ogni volta che lo faccio e ricostruisco il progetto, converte automaticamente lo stesso in quello precedente e genera l'errore
Sagar Devanga,

74

Ho avuto lo stesso problema. Ho copiato il codice di esempio dal codice di Google e non è stato possibile compilarlo.

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

Alla fine l'ho capito. L'ultima parte del codice "com.google.example " è il nome del loro pacchetto, quindi è necessario sostituirlo con il pacchetto del progetto.

Ad esempio, il mio pacchetto di progetto è " com.jms.AdmobExample", quindi il mio adsspazio di denominazione è:

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

Controlla il mio esempio, funziona benissimo. Puoi scaricare l'APK per provare. Ho anche inserito il mio codice sorgente qui: Aggiungi Google Admob nell'applicazione Android


13
Devs, se state usando il vostro pacchetto di progetto in xmlns: ads, allora dovete anche aggiungere 'attrs.xml' come spiegato da James nel suo link. Per il più recente Admob sdk, attrs.xml non è più raccomandato. Usa il seguente spazio dei nomi:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m

8
@ vivek.m, grazie per avermi indicato la risposta corretta! Invece apk / res one DEVE usare apk / lib in caso di dipendenza del progetto 'apklib'.
se.solovyev,

4
Grazie, adoro Internet, specialmente
Stackoverflow.com

Grazie mille, dopo 3 ore di ricerca e debug la tua risposta è finalmente apparsa e risolta.
Vlad Schnakovszki,

@ vivek.m grazie, questa è la risposta che ha funzionato per me - con com.google.ads.
Raddevus,



8

Ho avuto lo stesso problema, ma durante l'utilizzo di un progetto di biblioteca. Il problema è stato risolto in r17: Invece di utilizzare lo spazio dei nomi del pacchetto:

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

Uno deve usare uno spazio dei nomi fittizio:

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

Ciò risolverà il problema degli attributi non accessibili dal progetto di riferimento.


8

scarico la stessa demo personalizzata da Android.com e ottengo lo stesso problema di conformità.

in primo luogo, cambio

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

per

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

funziona . poi ho un'altra soluzione

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

funziona anche, ma ci sono alcune differenze. La seconda soluzione ha la funzione prefetto. sto trovando il motivo, forse potresti avere una mano dentro. grazie


" schemas.android.com/apk/res-auto " aggiunge tutti gli attributi definiti nel progetto e definiti nelle librerie a cui hai fatto riferimento nel progetto. quindi funziona per te e per il suo approccio più pulito
SAIR

3

Come specificato nel proprio attrs.xmlattributo adSize appartiene allo spazio dei nomi com.google.ads.AdView. Prova a cambiare:

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

per

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

e dovrebbe funzionare.


@FranciscoCorralesMorales l'ho aggiunto ma non funziona ancora
Sagar Devanga

3

Ho ricevuto questo errore per quanto riguarda l'attributo largeHeap, la mia applicazione non è stata eseguita in eclissi ma in form è ancora costruita ed eseguita normalmente.

La documentazione di Android afferma che:

xmlns: Android

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

Ho cancellato quella linea nel mio manifest, salvato in eclissi, incollato la linea e salvato di nuovo, e ha funzionato. Nel mio caso immagino che il problema fosse l'eclissi, la formica e l'adb non si parlassero correttamente e il salvataggio resettasse qualcosa. È interessante notare che il riavvio di eclipse non ha risolto questo problema (di solito con questi tipi di problemi il riavvio di eclipse è la prima cosa che dovresti provare e di solito risolve il problema).


Grazie a ciò il cambio di "xmlns:" url mi ha salvato :)
Songyy,



1

Sulla base della risposta qui , penso che sia necessario modificare l'attributo xmlns: ads. Ad esempio, cambia questo:

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

a questa:

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

Lo ha riparato per me. Se stai ancora riscontrando errori, potresti elaborare?


1

Di solito incorporo la proprietà xmlns: ads nelle proprietà di adview in questo modo:

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

in modo che non sia necessario incorporarlo nel genitore ogni volta che si copia l'avviso.

Basta copiare e incollare il parere sopra e incollarlo ovunque e dovrebbe funzionare


1

Ho cercato la risposta ma non sono riuscito a trovare, ma alla fine ho risolto il problema aggiungendo play-service-adsdipendenza, proviamo questo:

*) File -> Struttura del progetto ... -> Sotto il modulo puoi trovare l'app e c'è un'opzione chiamata dipendenze e puoi aggiungere com.google.android.gms: play-services-ads: dipendenza xxx al tuo progetto

Ho riscontrato questo problema quando provo a importare progetti Eclipse in Android Studio.

Immagine


1

Nel mio caso, mi mancava una dipendenza nel build.gradle a livello di app.

La soluzione è stata quella di aggiungere la dipendenza come descritto di seguito in Google:

Apri il file build.gradle a livello di app per la tua app e cerca una sezione "dipendenze".

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

Aggiungi la riga sopra, che indica a Gradle di inserire l'ultima versione di Mobile Ads SDK e ulteriori dipendenze correlate. Una volta fatto, salva il file ed esegui una sincronizzazione Gradle.


0

Ho anche affrontato lo stesso problema, stavo usando GoogleAdMobAdsSDK-4.1.0.jarquindi ho provato con GoogleAdMobAdsSDK-4.0.4.jarora funziona bene, è un problema con il file jar secondo la mia esperienza.


0

Ho avuto un problema simile su MonoDroid durante la creazione di una libreria di classi con file Drawables e Layouts con "android:"attributo nel file XML. Ricevo un errore simile a quello nella domanda.

Nessun identificatore di risorsa trovato per l'attributo 'textCursorDrawable' nel pacchetto 'android'

Ho scoperto che l'attributo "android:" è disponibile solo nell'API Android Livello 12+ e stavo cercando di creare una versione precedente. L'aggiornamento del mio progetto con Android 4.0 ha risolto il problema per me. Qui è dove ho trovato la risposta. https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM Assicurati di creare un livello API corretto se riscontri un problema simile e assicurati che l'identificatore mancante esista in quel livello API su cui sei costruito.


0

basta cambiare il sdk di destinazione con il tasto destro del mouse sul progetto, quindi fare clic su Proprietà selezionare Android e selezionare l'API più recente


0

Lo stesso errore si stava verificando nel file "activity_banner_xml.xml" all'interno della cartella res / layout. Quello che ho fatto per ripararlo è stato sostituire

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

con

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

Non c'erano riferimenti al nome del mio pacchetto. Inoltre, assicurati di impostare adUnitId per ads:adUnitId="@string/banner_ad_unit_id"> L'ID unità aggiunta si trova nella cartella res / Values ​​/ Strings.

Quindi il mio file di layout finale è simile al seguente:

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

Se il tuo è un progetto gradle sostituisci:

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

con:

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

0

Sto aggiungendo la soluzione che ha funzionato per me per questo stesso errore.

Ho fatto clic con il pulsante destro del mouse su progetto> proprietà> (pannello di sinistra) Android

Pannello destro sotto Libraryho rimosso la libreria difettosa e l'ho aggiunta di nuovo.

Per me questo errore si è verificato dopo un file di eclissi di spazio di lavoro corrotto in cui ho dovuto importare nuovamente tutti i progetti.


0

Il mio problema era molto simile (produce lo stesso problema). Dopo aver refactoring il nome della variabile con l'opzione "refactor -> rinomina" in Android Studio (da "value" a "myValue") ho trovato anche delle modifiche nel file manifest. Il pool di "valori" dei metadati è stato modificato in "myValue".

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

Dopo aver ripristinato il file, tutto torna a essere ok.

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

Spero che possa aiutare qualcuno!


0

Aggiungi xmlns: ads = "http://schemas.android.com/apk/lib/com.google.ads" , Questo risolverà il tuo problema.

<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

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

quindi ricostruisci progetto


0

Ho aggiunto in android.support.design.widget.Nawigation Visualizza questo parametro:

android:layout_gravity="start"

E il problema è stato risolto.



-2

METTERE compile 'de.hdodenhof:circleimageview:2.0.0' IN Gradle Dipendenze e inserire questo codice in 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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.