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

use*_*819 144 android admob

当我按照说明通过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
Run Code Online (Sandbox Code Playgroud)

我编辑了main.xml,添加attrs.xml文件,但编译器不喜欢它.

小智 298

在自定义布局nampespace中替换/res//lib/.

xmlns:android="http://schemas.android.com/apk/res/android" 在你的情况下,将是:

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

我希望它有所帮助.

  • 嗨,上述解决方案中的yourApp和yourClass是什么? (6认同)
  • 请写一个例子 (3认同)

Jam*_*mes 75

我有同样的问题.我从Google代码中复制了示例代码,无法编译.

xmlns:ads="http://schemas.android.com/apk/res/com.google.example"
Run Code Online (Sandbox Code Playgroud)

最后,我弄清楚了.代码" com.google.example" 的最后一部分是它们的包名,因此您需要将它替换为您的项目包.

例如,我的项目包是" com.jms.AdmobExample",所以我的ads命名空间是:

xmlns:ads="http://schemas.android.com/apk/res/com.jms.AdmobExample"
Run Code Online (Sandbox Code Playgroud)

检查我的例子,它工作正常.你可以下载APK试试.我还将源代码放在此处:在Android应用程序中添加Google Admob

  • Devs,如果你在xmlns:ads中使用你的项目包,那么你还需要添加'attrs.xml',正如James在他的链接中所解释的那样.对于较新的Admob sdk,不再推荐使用attrs.xml.只需使用以下命名空间:`xmlns:ads ="http://schemas.android.com/apk/lib/com.google.ads"` (13认同)
  • @ vivek.m,谢谢你指点我正确的答案!相反,apk/res必须使用apk/lib,以防'apklib'项目依赖. (8认同)
  • 谢谢,我喜欢互联网,特别是Stackoverflow.com (4认同)
  • 这应该标记为已接受的答案 (2认同)

Zen*_*aro 42

对我来说,我必须补充一下

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
Run Code Online (Sandbox Code Playgroud)

紧接着:

xmlns:android="http://schemas.android.com/apk/res/android"
Run Code Online (Sandbox Code Playgroud)

在res/layout/main.xml中


Bms*_*270 27

您也可以使用http://schemas.android.com/apk/res-auto自动处理它.像这样使用它:

xmlns:ads="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)

  • 我可以知道为什么这个答案被低估了吗? (2认同)

And*_*tha 8

我有同样的问题,但在使用库项目时.问题已在r17中解决:而不是使用包的命名空间:

xmlns:app="http://schemas.android.com/apk/res/hu.droidium.exercises"
Run Code Online (Sandbox Code Playgroud)

必须使用虚拟命名空间:

xmlns:app="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)

这将解决无法从引用项目访问属性的问题.


Bil*_*ill 8

我从Android.com下载相同的自定义演示并获得相同的complie问题.

在第一次,我改变了

xmlns:custom="http://schemas.android.com/apk/res/com.example.android.customviews"
Run Code Online (Sandbox Code Playgroud)

xmlns:custom="http://schemas.android.com/apk/lib/com.example.android.customviews"
Run Code Online (Sandbox Code Playgroud)

这行得通 .那我得到另一个解决方案

 xmlns:custom="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)

它也有效,但有一些不同之处.第二种解决方案具有完美功能.我找到原因,可能是你可以帮忙.谢谢


emc*_*cee 1

根据此处的答案,我认为您需要更改 xmlns:ads 属性。例如,更改此:

<com.google.ads.AdView 
    xmlns:ads="http://schemas.android.com/apk/res/com.google.example"
    ...
    />
Run Code Online (Sandbox Code Playgroud)

对此:

<com.google.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res/com.your.app.namespace" 
    ... 
    />
Run Code Online (Sandbox Code Playgroud)

它为我修好了。如果仍然出现错误,您能详细说明一下吗?