Ошибка: не найден идентификатор ресурса для атрибута "adSize" в пакете "com.google.example" main.xml
Когда я следовал инструкциям по добавлению рекламы в свое приложение с помощью 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
файл, но компилятору это не понравилось.
24 ответа
Замещать /res/
с /lib/
в вашем пользовательском макете Nampespace.
xmlns:android="http://schemas.android.com/apk/res/android"
в вашем случае будет:
xmlns:yourApp="http://schemas.android.com/apk/lib/com.yourAppPackege.yourClass"
Я надеюсь, что это помогает.
У меня такая же проблема. Я скопировал код примера из кода 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
Для меня, я должен добавить
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
сразу после:
xmlns:android="http://schemas.android.com/apk/res/android"
в res/layout/main.xml
Вы также можете использовать http://schemas.android.com/apk/res-auto, который позаботится об этом автоматически. Используйте это так:
xmlns:ads="http://schemas.android.com/apk/res-auto"
У меня была такая же проблема, но при использовании библиотечного проекта. Проблема была решена в r17: вместо использования пространства имен пакета:
xmlns:app="http://schemas.android.com/apk/res/hu.droidium.exercises"
Нужно использовать фиктивное пространство имен:
xmlns:app="http://schemas.android.com/apk/res-auto"
Это решит проблему недоступности атрибутов из ссылочного проекта.
Я загружаю ту же самую демо-версию с 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"
это также работает, но есть некоторые различия. Второе решение имеет функцию префекта. Я нахожу причину, может быть, вы можете помочь. спасибо
Как вы указали в своем attrs.xml
ваш атрибут adSize принадлежит пространству имен com.google.ads.AdView
, Попробуйте изменить:
android:adUnitId="a14bd6d2c63e055" android:adSize="BANNER"
в
ads:adUnitId="a14bd6d2c63e055" ads:adSize="BANNER"
и это должно работать.
Я получил эту ошибку в отношении атрибута largeHeap, мое приложение не работало в режиме Eclipse, но в Ant оно все еще создавалось и работало нормально.
Документация Android утверждает, что:
XMLNS: андроид
Defines the Android namespace. This attribute should always be set to "http://schemas.android.com/apk/res/android".
Я удалил эту строку в моем манифесте, сохранил в затмении, вставил ее обратно и снова сохранил, и это сработало. В моем случае, я думаю, проблема была в том, что eclipse, ant и adb неправильно общаются друг с другом, а сохранение сбрасывает что-то. Интересно, что перезапуск Eclipse не решил эту проблему (обычно с такими типами проблем перезапуск Eclipse - это первое, что вы должны попробовать, и обычно это решает проблему).
Убедитесь, что вы включили эту часть в свой макет (вверху под строкой xmlns:android)
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
Основываясь на ответе здесь, я думаю, что вам нужно изменить атрибут 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" .../>
Это исправило это для меня. Если вы все еще получаете ошибки, не могли бы вы уточнить?
Я обычно встраиваю свойство xmlns:ads в свойства 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"/>
так что вам не нужно вставлять в родительский каждый раз, когда вы копируете объявление.
Просто скопируйте и вставьте объявление выше и вставьте его в любое место, и оно должно работать
В моем случае мне не хватало зависимости на уровне приложения 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 загрузить последнюю версию Mobile Ads SDK и дополнительные связанные зависимости. Как только это будет сделано, сохраните файл и выполните синхронизацию Gradle.
Я искал ответ, но не смог найти, но, наконец, я мог это исправить, добавив play-service-ads
Зависимость давайте попробуем это:
*) Файл -> Структура проекта... -> В модуле вы можете найти приложение, есть опция под названием зависимости, и вы можете добавить com.google.android.gms:play-services-ads:xxx зависимость к вашему проекту.
Я столкнулся с этой проблемой при попытке импортировать проекты Eclipse в Android Studio.
Замещать xmlns:android="http://schemas.android.com/apk/res/android"
с xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
затем перестроить проект
Я добавляю решение, которое работало на меня для этой же ошибки.
Я щелкнул правой кнопкой мыши проект> свойства> (левая панель) Android
Правая панель под Library
Я удалил неисправную библиотеку и добавил ее снова.
Для меня эта ошибка произошла после испорченного файла рабочей области, куда мне пришлось снова импортировать все проекты.
У меня была та же проблема, и мое лекарство - просто включить привязку данных в build.gradle модуля моего приложения.
android {... dataBinding.enabled = true}
ref - https://halfthought.wordpress.com/2016/03/23/2-way-data-binding-on-android/
Я тоже столкнулся с той же проблемой, я использовал GoogleAdMobAdsSDK-4.1.0.jar
тогда я попробовал с GoogleAdMobAdsSDK-4.0.4.jar
теперь он работает нормально, это проблема с JAR-файлом в соответствии с моим опытом.
У меня была похожая проблема на MonoDroid при создании библиотеки классов с файлами Drawables и Layouts, которые имеют "android:"
атрибут в XML. Я получаю ошибку, аналогичную той, что в вопросе.
Не найден идентификатор ресурса для атрибута 'textCursorDrawable' в пакете 'android'
Я обнаружил, что атрибут "android: " доступен только в Android API Level 12+, и я пытался создать более старую версию. Обновление моего проекта для сборки под Android 4.0 исправило проблему для меня. Вот где я нашел ответ. https://groups.google.com/forum/?fromgroups Просто убедитесь, что вы строите на правильном уровне API, если вы столкнулись с подобной проблемой, и убедитесь, что отсутствующий идентификатор существует в тот уровень API, против которого вы строите.
Та же самая ошибка произошла со мной в файле "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"/>
Просто измените целевой SDK правой кнопкой мыши на проекте, затем нажмите на свойство выберите Android и выберите последний API
Моя проблема была очень похожа (производит ту же проблему). После рефакторинга имени переменной с помощью параметра "refactor -> rename" в Android Studio (от "value" до "myValue") я также обнаружил изменения в файле манифеста. Пул "значения" метаданных изменен на "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"/>
Надеюсь, это кому-нибудь поможет!
Если ваш проект является нездоровым, замените:
xmlns:android="http://schemas.android.com/apk/res/android"
с:
xmlns:app="http://schemas.android.com/apk/res-auto"
Я добавил в android.support.design.widget.Nawigation Просмотреть этот параметр:
android:layout_gravity="start"
И проблема была решена.
Добавьте 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>
ПОЛОЖИЛ compile 'de.hdodenhof:circleimageview:2.0.0'
В зависимости от 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>