ข้อผิดพลาด: ไม่พบตัวระบุทรัพยากรสำหรับแอตทริบิวต์ 'adSize' ในแพ็คเกจ 'com.google.example' main.xml


144

เมื่อฉันทำตามคำแนะนำเพื่อเพิ่มโฆษณาลงในแอพโดย xml ฉันพบข้อผิดพลาดดังต่อไปนี้:

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

ฉันแก้ไขmain.xml, เพิ่มattrs.xmlไฟล์ แต่คอมไพเลอร์ไม่ชอบมัน


1
วางเลย์เอาต์และ attrs.xml
Cristian

คำตอบ:


299

แทนที่/res/ด้วย/lib/ในพื้นที่ว่างแบบกำหนดเองของคุณ

xmlns:android="http://schemas.android.com/apk/res/android" ในกรณีของคุณจะเป็น:

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

ฉันหวังว่ามันจะช่วย


ฉันมีปัญหาแตกต่างกัน แต่วิธีการแก้ปัญหาเดียวกันทำงาน โดยทั่วไปฉันใช้ไฟล์เลย์เอาต์ที่อ้างอิงถึงไฟล์ / res ซึ่งฉันเปลี่ยนเป็น / lib ตามคำแนะนำที่นี่และใช้งานได้ คุณช่วยอธิบายเกี่ยวกับสิ่งที่เกิดขึ้นที่นี่ได้ไหม?
RightHandedMonkey

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

7
สวัสดีแอปของคุณและคลาสของคุณในโซลูชันด้านบนคืออะไร
โปรแกรมเมอร์

3
โปรดเขียนตัวอย่างหนึ่ง
Iman Marashi

เมื่อใดก็ตามที่ฉันทำและสร้างโครงการอีกครั้งมันจะแปลงค่าเดิมเป็นโครงการก่อนหน้าโดยอัตโนมัติและโยนข้อผิดพลาด
Sagar Devanga

74

ผมมีปัญหาเหมือนกัน. ฉันคัดลอกโค้ดตัวอย่างจากรหัส Google และไม่สามารถรวบรวมได้

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

ในที่สุดฉันก็คิดออก ส่วนสุดท้ายของรหัส "com.google.example " คือชื่อแพ็คเกจดังนั้นคุณต้องแทนที่ด้วยแพ็คเกจโครงการของคุณ

ตัวอย่างเช่นแพ็คเกจโครงการของฉันคือ " com.jms.AdmobExample" ดังนั้นadsพื้นที่การตั้งชื่อของฉันคือ:

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

ตรวจสอบตัวอย่างของฉันมันใช้งานได้ดี คุณสามารถดาวน์โหลด APK เพื่อลอง ฉันยังใส่ซอร์สโค้ดของฉันที่นี่: เพิ่ม Google Admob ในแอปพลิเคชัน Android


13
ถ้าคุณใช้แพ็คเกจโครงการใน xmlns: โฆษณาคุณต้องเพิ่ม 'attrs.xml' ตามที่ James อธิบายในลิงค์ของเขา สำหรับ Admob sdk รุ่นใหม่ไม่แนะนำให้ attrs.xml อีกต่อไป เพียงใช้ namespace ต่อไปนี้:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m

8
@ vivek.m ขอบคุณสำหรับการชี้คำตอบที่ถูกต้องให้ฉัน! แทน apk / res หนึ่งต้องใช้ apk / lib ในกรณีของการพึ่งพาโครงการ 'apklib'
se.solovyev

4
ขอบคุณฉันรักอินเทอร์เน็ตโดยเฉพาะ Stackoverflow.com
htafoya

ขอบคุณมากหลังจาก 3 ชั่วโมงของการค้นหาและการดีบักคำตอบของคุณในที่สุดก็โผล่ขึ้นมาและแก้ไข
Vlad Schnakovszki

@ vivek.m ขอบคุณนั่นคือคำตอบที่เหมาะกับฉัน - กับ com.google.ads
raddevus

42

สำหรับฉันฉันต้องเพิ่ม

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

ทันทีหลังจากที่:

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

ใน res / layout / main.xml


1
คุณคือชีวิต & ประหยัดการนอนหลับ ... ขอบคุณคุณช่วยฉันนอนหลับ :)
นารูโตะ

ฉันมีคำถามผู้ดูแลระบบ: stackoverflow.com/questions/36389729/… \
Ruchir Baronia

27

นอกจากนี้คุณยังสามารถใช้http://schemas.android.com/apk/res-autoที่จะดูแลมันโดยอัตโนมัติ ใช้มันแบบนี้:

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

@Niklas: นี่ไม่ใช่ลิงค์ของหน้าเว็บ นี่คือ URL ที่จะใช้ดังนี้: xmlns: ads = " schemas.android.com/apk/res-auto " ซึ่งจะแก้ไข URL ของทรัพยากรโดยอัตโนมัติ ดูคำตอบที่อัปเดตของฉันด้านบน
Bms270

8

ฉันมีปัญหาเดียวกัน แต่ในขณะที่ใช้โครงการห้องสมุด ปัญหาได้รับการแก้ไขใน r17: แทนที่จะใช้เนมสเปซของแพ็คเกจ:

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

ต้องใช้เนมสเปซจำลอง:

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

สิ่งนี้จะแก้ไขปัญหาของแอตทริบิวต์ที่ไม่สามารถเข้าถึงได้จากโครงการอ้างอิง


8

ฉันดาวน์โหลดตัวอย่างที่กำหนดเองเดียวกันจากAndroid.comและพบปัญหาตามมาตรฐานเดียวกัน

ตอนแรกฉันเปลี่ยน

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

ถึง

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

มันทำงานได้ ถ้าอย่างนั้นฉันจะได้คำตอบอื่น

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

มันใช้งานได้ แต่ก็มีความแตกต่างอยู่บ้าง วิธีที่สองมีฟังก์ชั่นนายอำเภอ ฉันกำลังค้นหาสาเหตุอาจเป็นเพราะคุณสามารถมีส่วนร่วมได้ขอบคุณ


" schemas.android.com/apk/res-auto " เพิ่มคุณสมบัติทั้งหมดที่กำหนดไว้ในโครงการของคุณเช่นเดียวกับที่กำหนดไว้ในห้องสมุดที่คุณอ้างอิงในโครงการของคุณ ดังนั้นจึงเหมาะสำหรับคุณและวิธีการที่สะอาดกว่านี้
SAIR

3

ในขณะที่คุณระบุไว้ในattrs.xmlแอตทริบิวต์ adSize ของคุณเป็นของการ com.google.ads.AdViewnamespace ลองเปลี่ยน:

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

ถึง

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

และมันควรจะทำงาน


@FranciscoCorralesMorales ฉันไม่ได้เพิ่ม แต่ก็ยังไม่ได้ทำงาน
Sagar Devanga

3

ฉันได้รับข้อผิดพลาดเกี่ยวกับแอตทริบิวต์ LargeHeap ขนาดใหญ่แอปพลิเคชันของฉันไม่ทำงานภายใต้ eclipse แต่ภายใต้ ant มันยังคงสร้างและรันตามปกติ

เอกสารประกอบ android ระบุว่า:

xmlns: หุ่นยนต์

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

ฉันลบบรรทัดนั้นในรายการของฉันบันทึกใน eclipse วางบรรทัดกลับเข้ามาและบันทึกอีกครั้งและทำงานได้ ในกรณีของฉันฉันเดาว่าปัญหาคือคราสมดและ adb ไม่พูดคุยกันอย่างถูกต้องและบันทึกสิ่งที่รีเซ็ต การรีสตาร์ทคราสที่น่าสนใจไม่ได้แก้ปัญหานี้ (โดยปกติกับปัญหาประเภทนี้การรีสตาร์ทคราสเป็นสิ่งแรกที่คุณควรลองและโดยปกติจะแก้ปัญหาได้)


ขอบคุณสิ่งนี้การเปลี่ยนแปลงของ "xmlns:" url ช่วยฉัน :)
songyy

ฉันมีคำถามผู้ดูแลระบบ: stackoverflow.com/questions/36389729/…
Ruchir Baronia

2

ตรวจสอบให้แน่ใจว่าคุณได้รวมส่วนนี้ไว้ในการจัดวาง (ด้านล่าง xmlns: android line)

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

ตรวจสอบด้วยว่าคุณได้รวม attrs.xml ใน res / values ​​/

ตรวจสอบที่นี่สำหรับรายละเอียดเพิ่มเติม http://code.google.com/mobile/ads/docs/android/banner_xml.html


1

จากคำตอบที่นี่ฉันคิดว่าคุณต้องเปลี่ยนแอตทริบิวต์ xmlns: ads ตัวอย่างเช่นเปลี่ยนสิ่งนี้:

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

สำหรับสิ่งนี้:

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

มันแก้ไขให้ฉัน หากคุณยังคงได้รับข้อผิดพลาดคุณสามารถอธิบายรายละเอียดเพิ่มเติมได้หรือไม่


1

ฉันมักจะฝัง xmlns: คุณสมบัติโฆษณาลงในคุณสมบัติ adview ด้วยวิธีนี้:

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

เพื่อให้คุณไม่จำเป็นต้องฝังลงในแม่ทุกครั้งที่คุณคัดลอก adview

เพียงแค่คัดลอกและวาง adview ด้านบนแล้ววางที่ใดก็ได้และควรใช้งานได้


1

ฉันค้นหาคำตอบแล้ว แต่หาไม่พบ แต่สุดท้ายฉันก็สามารถแก้ไขได้โดยเพิ่มการplay-service-adsพึ่งพาลองทำสิ่งนี้

*) ไฟล์ -> โครงสร้างโครงการ ... -> ภายใต้โมดูลคุณสามารถค้นหาแอพและมีตัวเลือกที่เรียกว่าการพึ่งพาและคุณสามารถเพิ่ม com.google.android.gms: play-services-ads: xxxพึ่งพาโครงการของคุณ

ฉันประสบปัญหานี้เมื่อฉันพยายามนำเข้าโครงการ Eclipse ไปยัง Android Studio

ภาพ


1

ในกรณีของฉันฉันขาดการพึ่งพาใน build.gradle ระดับแอป

ทางออกคือการเพิ่มการพึ่งพาตามที่ Google แสดงด้านล่าง:

เปิดไฟล์ build.gradle ระดับแอปสำหรับแอปของคุณและค้นหาส่วน "การอ้างอิง"

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

เพิ่มบรรทัดด้านบนซึ่งสั่งให้ Gradle ดึงใน SDK โฆษณาบนมือถือเวอร์ชันล่าสุดและการอ้างอิงที่เกี่ยวข้องเพิ่มเติม เมื่อเสร็จแล้วให้บันทึกไฟล์และทำการซิงค์แบบ Gradle


0

ฉันยังประสบปัญหาเดียวกันฉันใช้GoogleAdMobAdsSDK-4.1.0.jarแล้วฉันพยายามGoogleAdMobAdsSDK-4.0.4.jarตอนนี้มันทำงานได้ดีมันเป็นปัญหากับไฟล์ jar ตามประสบการณ์ของฉัน


0

ฉันมีปัญหาที่คล้ายกันใน MonoDroid เมื่อสร้างไลบรารีคลาสด้วยไฟล์ Drawables และ Layouts ที่มี"android:"แอตทริบิวต์ใน xml ฉันได้รับข้อผิดพลาดที่คล้ายกันกับข้อหนึ่งในคำถาม

ไม่พบตัวระบุทรัพยากรสำหรับแอตทริบิวต์ 'textCursorDrawable' ในแพ็คเกจ 'android'

ฉันพบจากแอตทริบิวต์ "android:" นั้นมีเฉพาะใน Android API ระดับ 12+ และฉันพยายามสร้างสำหรับรุ่นที่เก่ากว่า การอัปเดตโครงการของฉันเพื่อสร้างกับ Android 4.0 แก้ไขปัญหาสำหรับฉัน ที่นี่ฉันพบคำตอบ https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM เพียงตรวจสอบให้แน่ใจว่าคุณกำลังสร้างระดับ API ที่ถูกต้องหากคุณได้รับปัญหาที่คล้ายคลึงกันและมั่นใจได้ว่าตัวระบุที่หายไปนั้นมีอยู่ใน ระดับ API นั้นที่คุณสร้างขึ้น


0

เพียงแค่เปลี่ยน sdk เป้าหมายคลิกขวาที่โครงการแล้วคลิกที่คุณสมบัติเลือก android และเลือก API ล่าสุด


0

ข้อผิดพลาดเดียวกันเกิดขึ้นกับฉันในไฟล์ "activity_banner_xml.xml" ในโฟลเดอร์ res / layout สิ่งที่ฉันทำเพื่อแก้ไขคือแทนที่

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

กับ

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

ไม่มีการอ้างอิงถึงชื่อแพ็คเกจของฉัน นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า adUnitId สำหรับads:adUnitId="@string/banner_ad_unit_id"> หน่วยเพิ่มรหัสอยู่ในโฟลเดอร์ res / Values ​​/ Strings ของคุณ

ดังนั้นไฟล์เค้าโครงสุดท้ายของฉันจะเป็นดังนี้:

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

หากคุณเป็นโครงการไล่ระดับสีแทนที่:

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

ด้วย:

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

0

ฉันกำลังเพิ่มโซลูชันที่ใช้งานได้สำหรับข้อผิดพลาดเดียวกันนี้

ฉันคลิกขวาที่โครงการ> คุณสมบัติ> (แผงด้านซ้าย) Android

แผงด้านขวาใต้Libraryฉันลบไลบรารีที่ผิดพลาดและเพิ่มอีกครั้ง

สำหรับฉันข้อผิดพลาดนี้เกิดขึ้นหลังจากไฟล์เวิร์กสเปซพื้นที่ทำงานเสียหายที่ฉันต้องนำเข้าโครงการทั้งหมดอีกครั้ง


0

ปัญหาของฉันคล้ายกันมาก (สร้างปัญหาเดียวกัน) หลังจาก refactoring ชื่อตัวแปรโดยตัวเลือก "refactor -> เปลี่ยนชื่อ" ใน Android Studio (จาก "ค่า" ถึง "myValue") ฉันพบการเปลี่ยนแปลงในไฟล์รายการด้วย พูล "ค่า" Meta-data ได้เปลี่ยนเป็น "myValue"

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

หลังจากย้อนกลับทุกสิ่งที่ตะเข็บจะตกลงอีกครั้ง

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

ฉันหวังว่ามันจะช่วยให้ใครบางคน!


0

เพิ่มxmlns: ads = "http://schemas.android.com/apk/lib/com.google.ads"ซึ่งจะช่วยแก้ปัญหาของคุณ

<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

แทนที่ xmlns:android="http://schemas.android.com/apk/res/android" ด้วย xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

จากนั้นสร้างโครงการใหม่


0

ฉันเพิ่มในandroid.support.design.widget.Nawigation ดูพารามิเตอร์นี้:

android:layout_gravity="start"

และปัญหาได้รับการแก้ไข



-2

ใส่ compile 'de.hdodenhof:circleimageview:2.0.0' IN Gradle อ้างอิงและใส่รหัสนี้ใน 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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.