lỗi: Không tìm thấy mã định danh tài nguyên cho thuộc tính 'adSize' trong gói 'com.google.example' main.xml


144

Khi tôi làm theo hướng dẫn để thêm quảng cáo vào ứng dụng của mình bằng xml, tôi đã gặp các lỗi sau:

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

Tôi đã chỉnh sửa main.xml, thêm attrs.xmltập tin nhưng trình biên dịch không thích nó.


1
Dán bố cục và attrs.xml
Cristian

Câu trả lời:


299

Thay thế /res/bằng /lib/trong nampespace bố trí tùy chỉnh của bạn.

xmlns:android="http://schemas.android.com/apk/res/android" trong trường hợp của bạn, sẽ là:

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

Tôi hy vọng nó sẽ giúp.


Tôi đã có một vấn đề khác, nhưng cùng một giải pháp đã làm việc. Về cơ bản tôi đã sử dụng một tệp bố cục tham chiếu tệp / res mà tôi đã thay đổi thành / lib theo hướng dẫn ở đây và nó hoạt động. Bạn có thể cung cấp một lời giải thích về những gì đang xảy ra ở đây?
RightHandedMonkey

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

7
Xin chào, YourApp và yourClass trong giải pháp trên là gì?
Lập trình viên

3
xin vui lòng viết một ví dụ
Iman Marashi

Bất cứ khi nào tôi làm điều đó và xây dựng lại dự án, nó sẽ tự động chuyển đổi tương tự sang dự án trước đó và đưa ra lỗi
Sagar Devanga

74

Tôi đã từng gặp vấn đề tương tự. Tôi đã sao chép mã ví dụ từ mã Google và không thể biên dịch.

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

Cuối cùng, tôi đã tìm ra nó. Phần cuối của mã " com.google.example", là tên gói của chúng, vì vậy bạn cần thay thế nó bằng gói dự án của bạn.

Ví dụ: gói dự án của tôi là " com.jms.AdmobExample", vì vậy adskhông gian đặt tên của tôi là:

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

Kiểm tra ví dụ của tôi, nó hoạt động tốt. Bạn có thể tải xuống APK để thử. Tôi cũng đặt mã nguồn của mình ở đây: Thêm Google admob trong Ứng dụng Android


13
Các nhà phát triển, nếu bạn đang sử dụng gói dự án của mình trong xmlns: ads, thì bạn cũng cần thêm 'attrs.xml' như được James giải thích trong liên kết của mình. Đối với sdk admob mới hơn, attrs.xml không còn được khuyến nghị. Chỉ cần sử dụng không gian tên sau:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m

8
@ vivek.m, cảm ơn bạn đã chỉ cho tôi câu trả lời đúng! Thay vào đó, apk / res một PHẢI sử dụng apk / lib trong trường hợp phụ thuộc dự án 'apklib'.
se.solovyev

4
Cảm ơn, tôi yêu internet, đặc biệt là Stackoverflow.com
htafoya

Cảm ơn rất nhiều, sau 3 giờ tìm kiếm và gỡ lỗi, câu trả lời của bạn cuối cùng cũng xuất hiện và sửa nó.
Vlad Schnakovszki

@ vivek.m cảm ơn đó là câu trả lời phù hợp với tôi - với com.google.ads.
raddevus

42

đối với tôi, tôi phải thêm

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

ngay sau khi:

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

trong res / layout / main.xml


1
Bạn là người bảo vệ cuộc sống và giấc ngủ ... Cảm ơn bạn, bạn đã cứu giấc ngủ của tôi :)
Naruto

Tôi có một câu hỏi đáng
ngưỡng mộ

27

Bạn cũng có thể sử dụng http://schemas.android.com/apk/res-auto sẽ tự động chăm sóc nó. Sử dụng nó như thế này:

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

@Niklas: Đây không phải là một liên kết trang web. Đây là một URL được sử dụng như thế này: xmlns: ads = " schemas.android.com/apk/res-auto " tự động giải quyết URL tài nguyên. Xem câu trả lời cập nhật của tôi ở trên.
Bms270

8

Tôi đã có cùng một vấn đề, nhưng trong khi sử dụng một dự án thư viện. Vấn đề đã được giải quyết trong r17: Thay vì sử dụng không gian tên của gói:

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

Người ta phải sử dụng một không gian tên giả:

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

Điều này sẽ khắc phục vấn đề của các thuộc tính không thể truy cập được từ dự án tham chiếu.


8

tôi tải xuống bản demo tùy chỉnh tương tự từ Android.com và gặp vấn đề tương tự.

lúc đầu, tôi thay đổi

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

đến

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

nó hoạt động sau đó tôi nhận được một giải pháp khác

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

nó cũng hoạt động, nhưng có một số khác biệt. Giải pháp thứ hai có chức năng hoàn hảo. tôi đang tìm lý do, có thể bạn có thể giúp đỡ. cảm ơn


" schemas.android.com/apk/res-auto " thêm tất cả các thuộc tính được xác định trong dự án của bạn cũng như được xác định trong các thư viện bạn đã tham chiếu trong dự án của mình. do đó, nó hiệu quả với bạn và cách tiếp cận gọn gàng hơn
SAIR

3

Khi bạn chỉ định trong attrs.xmlthuộc tính adSize của bạn thuộc về không gian tên com.google.ads.AdView. Cố gắng thay đổi:

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

đến

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

và nó nên hoạt động.


@FranciscoCorralesMorales tôi đã thêm nó nhưng nó vẫn không hoạt động
Sagar Devanga

3

Tôi đã nhận được lỗi này liên quan đến Thuộc tính LargeHeap, ứng dụng của tôi không chạy dưới nhật thực nhưng dưới kiến ​​nó vẫn được xây dựng và chạy bình thường.

Tài liệu android nói rằng:

xmlns: android

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

Tôi đã xóa dòng đó trong bảng kê khai của mình, lưu trong nhật thực, dán dòng đó trở lại và lưu lại, và nó đã hoạt động. Trong trường hợp của tôi, tôi đoán vấn đề là nhật thực, kiến ​​và adb không nói chuyện với nhau một cách chính xác và việc lưu lại thiết lập một cái gì đó. Thú vị khi khởi động lại nhật thực không giải quyết được vấn đề này (thông thường với các loại vấn đề này, việc khởi động lại nhật thực là điều đầu tiên bạn nên thử, và thường thì nó giải quyết được vấn đề).


Thx này xin vui lòng thay đổi "xmlns:" url đã lưu tôi :)
songyy

Tôi có một câu hỏi đáng
ngưỡng mộ

2

Hãy chắc chắn rằng bạn đã bao gồm phần này trong bố cục của bạn (trên cùng bên dưới xmlns: dòng android)

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

Ngoài ra, hãy kiểm tra xem bạn đã bao gồm attrs.xml trong res / value / chưa

Kiểm tra ở đây để biết thêm chi tiết. http://code.google.com.vn/mobile/ads/docs/android/banner_xml.html


1

Dựa trên câu trả lời ở đây , tôi nghĩ bạn cần thay đổi thuộc tính xmlns: ads. Ví dụ: thay đổi điều này:

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

đến đây:

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

Nó sửa nó cho tôi. Nếu bạn vẫn nhận được lỗi, bạn có thể giải thích?


1

Tôi thường nhúng thuộc tính xmlns: ads vào thuộc tính adview theo cách này:

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

để bạn không cần phải nhúng vào cha mẹ mỗi lần bạn sao chép quảng cáo.

Chỉ cần sao chép và dán quảng cáo ở trên và dán nó ở bất cứ đâu và nó sẽ hoạt động


1

Tôi đã tìm kiếm câu trả lời nhưng không thể tìm thấy nhưng cuối cùng tôi có thể khắc phục điều này bằng cách thêm play-service-adsphụ thuộc, hãy thử điều này:

*) Tệp -> Cấu trúc dự án ... -> Trong mô-đun, bạn có thể tìm thấy ứng dụng và có một tùy chọn gọi là phụ thuộc và bạn có thể thêm com.google.android.gms: play-services-ads: xxx phụ thuộc vào dự án của bạn

Tôi đã gặp phải vấn đề này khi tôi cố gắng nhập các dự án Eclipse vào Android Studio.

Hình ảnh


1

Trong trường hợp của tôi, tôi đã thiếu một phụ thuộc trong cấp độ ứng dụng build.gradle.

Giải pháp là thêm phụ thuộc như google phác thảo dưới đây:

Mở tệp build.gradle cấp ứng dụng cho ứng dụng của bạn và tìm phần "phụ thuộc".

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

Thêm dòng ở trên, hướng dẫn Gradle lấy phiên bản mới nhất của SDK quảng cáo trên thiết bị di động và các phụ thuộc liên quan bổ sung. Khi đã xong, lưu tệp và thực hiện đồng bộ hóa Gradle.


0

Tôi cũng gặp phải vấn đề tương tự, tôi đã sử dụng GoogleAdMobAdsSDK-4.1.0.jarsau đó tôi đã thử với GoogleAdMobAdsSDK-4.0.4.jarnó bây giờ nó hoạt động tốt, đó là vấn đề với tệp jar theo kinh nghiệm của tôi.


0

Tôi gặp vấn đề tương tự trên MonoDroid khi xây dựng thư viện lớp với các tệp Drawables và Layouts có "android:"thuộc tính trong xml. Tôi nhận được một lỗi tương tự như trong câu hỏi.

Không tìm thấy định danh tài nguyên cho thuộc tính 'textC bổngDrawable' trong gói 'android'

Tôi đã tìm thấy từ thuộc tính "android:" đó chỉ có sẵn trong API API cấp 12+ và tôi đã cố gắng xây dựng cho phiên bản cũ hơn. Cập nhật dự án của tôi để xây dựng dựa trên Android 4.0 đã khắc phục sự cố cho tôi. Đây là nơi tôi tìm thấy câu trả lời. https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM Chỉ cần đảm bảo rằng bạn đang xây dựng theo cấp API phù hợp nếu bạn gặp sự cố tương tự và đảm bảo rằng số nhận dạng bị thiếu tồn tại trong mức API mà bạn đang xây dựng dựa vào.


0

chỉ cần thay đổi mục tiêu sdk nhấp chuột phải vào dự án, sau đó nhấp vào thuộc tính chọn android và chọn API mới nhất


0

Lỗi tương tự đã xảy ra với tôi trong tệp "Activity_banner_xml.xml" trong thư mục res / layout. Những gì tôi đã làm để sửa nó là thay thế

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

với

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

Không có tài liệu tham khảo đến tên gói của tôi. Ngoài ra, hãy chắc chắn rằng bạn đã đặt adUnitId choads:adUnitId="@string/banner_ad_unit_id"> Id đơn vị thêm được đặt trong thư mục res / Values ​​/ String của bạn.

Vì vậy, tập tin bố trí cuối cùng của tôi trông như thế này:

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

Nếu bạn là một dự án gradle thay thế:

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

với:

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

0

Tôi đang thêm giải pháp làm việc cho tôi cho cùng một lỗi này.

Tôi nhấp chuột phải vào dự án> thuộc tính> (bảng bên trái) Android

Bảng bên phải dưới Library tôi đã xóa thư viện bị lỗi và thêm nó một lần nữa.

Đối với tôi, lỗi này xảy ra sau khi tệp nhật thực không gian làm việc bị hỏng mà tôi phải nhập lại tất cả các dự án.


0

Vấn đề của tôi rất giống nhau (tạo ra cùng một vấn đề). Sau khi tái cấu trúc tên biến bằng tùy chọn "refactor -> đổi tên" trong Android Studio (từ "value" thành "myValue"), tôi cũng thấy các thay đổi trong tệp kê khai. Nhóm "giá trị" siêu dữ liệu đã thay đổi thành "myValue".

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

Sau khi hoàn nguyên tập tin, tất cả các đường nối sẽ ổn trở lại.

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

Tôi hy vọng, nó sẽ giúp được ai đó!


0

Thêm xmlns: ads = "http://schemas.android.com/apk/lib/com.google.ads" , Điều này sẽ giải quyết vấn đề của bạn.

<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

Thay thế xmlns:android="http://schemas.android.com/apk/res/android" bằng xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

sau đó xây dựng lại dự án


0

Tôi đã thêm vào android.support.design.widget.Nawlation Xem tham số này:

android:layout_gravity="start"

Và vấn đề đã được giải quyết.


0

Tôi đã có cùng một vấn đề và cách chữa trị của tôi chỉ đơn giản là cho phép liên kết dữ liệu trong build.gradle của mô-đun ứng dụng.

android {... dataBinding.enables = true}

ref - https:// half Dùt.wordpress.com/2016/03/23/2-way-data-binding-on- android/


-2

PUT compile 'de.hdodenhof:circleimageview:2.0.0' IN Gradle Dependencies và đặt mã này vào 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.