错误:在包“ com.google.example” main.xml中找不到属性“ adSize”的资源标识符


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

Answers:


299

在自定义布局nampespace中替换/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 2014年

xmlns:yourApp =“ schemas.android.com/apk/res-auto”;
Faizan Mubasher 2014年

7
嗨,以上解决方案中的yourApp和yourClass是什么?
程序员

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尝试。我还将源代码放在这里:在Android应用程序中添加Google Admob


13
开发人员,如果您在xmlns:ads中使用项目包,那么还需要添加“ attrs.xml”,如James在其链接中所述。对于较新的Admob sdk,不再建议使用attrs.xml。只需使用以下名称空间:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
vivek.m 2012年

8
@ vivek.m,感谢您为我指出正确答案!相反,如果“ apklib”项目依赖,则apk / res必须使用apk / lib。
se.solovyev 2012年

4
谢谢,我喜欢互联网,尤其是Stackoverflow.com
htafoya 2013年

非常感谢,经过3个小时的搜索和调试,您的答案终于弹出并修复了。
Vlad Schnakovszki 2013年

@ vivek.m感谢com.google.ads对我有用。
raddevus



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下载了相同的自定义演示,并遇到了相同的compli问题。

首先,我改变

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.xmladSize属性中指定的那样,它属于命名空间com.google.ads.AdView。尝试更改:

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

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

它应该工作。


@FranciscoCorralesMorales我确实添加了,但它仍然是行不通的
萨加尔Devanga

3

我收到关于largeHeap属性的错误,我的应用程序未在eclipse下运行,但在ant下仍可正常运行。

android 文档指出:

xmlns:android

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

我在清单中删除了该行,以eclipse保存,将其粘贴回去并再次保存,然后行了。就我而言,我想问题是日食,蚂蚁和亚行没有正确地互相交谈,并且保存重置了一些东西。有趣的是,重新启动eclipse并不能解决此问题(通常,由于这类问题,重新启动eclipse是您应该尝试的第一件事,通常可以解决该问题)。


谢谢,这改变了“ xmlns:”网址救了我:)
songyy 2012年



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

这样您就不需要在每次复制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引入最新版本的Mobile Ads SDK和其他相关依赖项。完成后,保存文件并执行Gradle同步。


0

我也遇到了同样的问题,我正在使用GoogleAdMobAdsSDK-4.1.0.jar然后尝试使用,GoogleAdMobAdsSDK-4.0.4.jar现在它可以正常工作,根据我的经验,这是jar文件的问题。


0

当使用"android:"在xml 中具有属性的Drawables和Layouts文件构建类库时,在MonoDroid上也遇到了类似的问题。我收到与问题中类似的错误。

在包“ android”中找不到属性“ textCursorDrawable”的资源标识符

我从“ android:”属性中发现,该属性仅在Android API Level 12+中可用,并且我试图为较旧的版本进行构建。更新我的项目以针对Android 4.0进行构建为我解决了该问题。这是我找到答案的地方。 https://groups.google.com/forum/?fromgroups#!topic/android-developers/ocxKphM5MWM 如果遇到类似问题,只需确保您在正确的API级别上构建,并确保缺少的标识符存在于您所依据的API级别。


0

只需更改目标SDK,请右键单击项目,然后单击属性,然后选择android并选择最新的API


0

我在res / layout文件夹内的“ activity_banner_xml.xml”文件中发生了同样的错误。我所做的修复工作是更换

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

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

没有引用我的包裹名称。另外,请确保将adUnitId设置为ads:adUnitId="@string/banner_ad_unit_id"> 添加单位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

如果您是gradle项目,请替换:

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

与:

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

0

我正在添加对这个错误有效的解决方案。

我右键单击项目>属性>(左侧面板)Android

右面板下 Library我删除了有问题的库,然后再次添加了它。

对我来说,此错误发生在损坏的工作区Eclipse文件之后,在该文件中我不得不再次导入所有项目。


0

我的问题非常相似(产生相同的问题)。在Android Studio中通过“重构->重命名”选项重构变量名称(从“值”到“ 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"/>

希望对您有所帮助!


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

PUT compile 'de.hdodenhof:circleimageview:2.0.0' 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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.