经过这么多小时的空闲时间后,我已准备好将我的第一个应用程序发布到游戏商店,但遗憾的是我在上传已签名的应用程序时遇到了困难。
我已经使用我创建的密钥库成功导出了应用程序(全部通过Eclipse& ADT),因此我将已签名的APK上传到游戏商店(here)。
我一直收到这条消息:
上传失败您的APK无法使用'aapt dump badging'进行分析。 错误输出:无法运行aapt转储标记:W / ResourceType(14856): 获取资源号0x01080049的值时没有已知的包 错误获取'android:icon'属性:属性不是字符串 值
因此:
应用程序本身在真实设备上运行良好,正在使用的图像文件是android-assets-studio website使用的普通PNG文件。
我在这里搜索了StackOverflow并发现了很多关于它的帖子(here)。我读了很多,并尝试了下一步,但没有任何帮助:
将应用程序图标放在不同的文件夹上(“drawable”,“drawable-mdpi”,...甚至“drawable-xxxhdpi”),具有多种组合(从每个文件夹中放入/删除)
在“应用”标签和启动器活动代码上设置标签,图标和主题。
更改图像文件名和文件本身(将其替换为默认的应用程序图标)。
清理项目。
检查Lint消息。
更新ADT(至22.3.0.v201310242005-887826),Eclipse(至Kepler Service Release 1),SDK工具(至22.3),SDK构建工具(至19.0.1)。一切都是最新的官方版本。
检查是否没有使用双jar文件(多个库上没有jar文件,特别是如果它有不同的版本)。
尝试将strings.xml放入“res / values-en”而不是“res / values”
尝试将“android:value”属性添加到清单上的所有元数据标记(由Google建议)。它没用。事实上,在我读过的所有教程中,我从来没有从AppWidget看到过这样的要求,所以我认为不需要它。
尝试了aapt命令:
aapt dump badging
这向我展示了游戏商店显示的相同内容(我已经用XXX替换了真实的包名和应用名称):
application: label='XXX XXX' icon='res/drawable-mdpi/app_icon.png' launchable-activity: name='XXX.XXX.XXXActivity' label='XXX XXX' icon='res/drawable-mdpi/app_icon.png' W/ResourceType( 9132): No known package when getting value for resource number 0 x01080049 ERROR getting 'android:icon' attribute: attribute is not a string value
即使该文件夹中存在该文件,也会发生这种情况。
这是清单。再次,用XXX替换了活动和应用程序的真实路径和名称。我可以向你保证路径是正确的,因为应用程序可以正常运行。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="XXX.XXX"
android:installLocation="auto"
android:versionCode="2"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="19" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="com.android.launcher
.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android
.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<!-- required for admob: -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- required for in-app billing . -->
<uses-permission android:name="com.android.vending.BILLING" />
<!-- needed for payload of in-app billing -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<application
android:name="XXX.XXX.XXX"
android:allowBackup="true"
android:description="@string/app_description"
android:hardwareAccelerated="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="XXX.XXXActivity"
android:clearTaskOnLaunch="true"
android:configChanges="keyboard|keyboardHidden|orientation|
screenLayout|uiMode|screenSize|
smallestScreenSize"
android:finishOnTaskLaunch="true"
android:icon="@drawable/app_icon"
android:label="@string/XXX"
android:launchMode="singleTask"
android:screenOrientation="fullSensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
... (other activities and services)
发生了什么事?
我如何克服这个问题?
答案 0 :(得分:16)
如果您使用任何Android系统图标作为活动图标(即清单包含<activity ... android:icon="@android:drawable/...
),则可能是问题所在。如果是,请尝试将这些图标复制到项目中。在其他地方使用它们应该没有问题,因为徽章不会触及那些。
答案 1 :(得分:13)
对我而言,我试图放置这样的透明图标:
android:icon="@android:color/transparent"
答案 2 :(得分:2)
在我的情况下,问题只是我的应用程序的某个依赖项已声明其中一个要使用的活动 机器人:图标=&#34; @彩色/黑色&#34; 在他们的清单中,而不是使用drawable。您没有收到任何编译错误,应用程序运行正常。只有aapt工具报告错误(或上传到Playstore)。 请注意,图书馆甚至不需要声明android:图标(它们不是可安装的应用程序!)但AndroidStudio似乎默认所有项目都在清单中声明一个。
答案 3 :(得分:2)
我知道答案是正确的,但我相信我的经验可以帮助一些人......
所以我收到同样的错误:
错误获取&#39; android:icon&#39; attribute:属性不是字符串 值
但我的问题与图标无关!!!
我收到此错误的原因在于:
机器人:标签=&#34; @串/ APP_NAME&#34;
我的项目有3种不同的语言,但主string.xml没有@ string / app_name ......这就是原因!
所以要小心!
答案 4 :(得分:0)
我看到你尝试了我想的一切。尝试更换图标可能吗? :)我的意思是只留下可能性是你的偶像。
答案 5 :(得分:0)
尝试为不同的屏幕尺寸创建单独的布局。将文件夹命名为res/layout
和res/layout-large
答案 6 :(得分:0)
当我尝试使用XML drawable作为图标(向PNG图像添加填充等)时,我认为我遇到了这个问题(或者类似的,不确定)。我不认为你的问题是一样的,因为你似乎直接引用了PNG文件。
尝试一些建议(通过消除过程追踪问题):
res/drawable-mdpi/app_icon.png
文件,看看是否有其他错误。 android:icon
属性,看看是否仍有错误。app_icon
的任何其他资源重命名为其他资源。如果所有其他方法都失败了,我可能会开始剥离外部JAR和库项目(并且可能暂时评论引用它们的代码),以查看错误是否被其中任何一个触发。或者,可以从最初的AndroidManifest.xml
开始新鲜,并一次添加一件物品。
另一个想法是试图找出aapt
产生错误的原因。也许下载源并尝试调试它?
答案 7 :(得分:0)
您是否尝试关闭计算机然后再打开?
尝试从活动中删除android:icon="@drawable/app_icon
,因为它将回退到应用程序中指定的图标。
尽量不要使用proguard。
答案 8 :(得分:0)
在可能的情况下,问题是因为我使用@null作为值。完全删除它修复它。当你把@null用于android:icon时会发生同样的情况。
答案 9 :(得分:0)
今天我遇到了同样的问题,而且@ Rahl_Pryde的解决方案在一个小小的改变下运行良好。
在我的情况下,问题是我的一些Activity图标的android透明res颜色。但是改为局部透明色并不能解决问题。
将图标从透明颜色更改为2x2透明png时固定。
答案 10 :(得分:0)
在我的情况下,我通过使用始终默认的res文件夹解决了它,即值,值-es,值-ca
答案 11 :(得分:0)
在我的情况下,问题出现了,因为我在发布之前更改了包名,忘了更改目录名。项目仍在编译,但无法在谷歌播放中发布。
如果您的红色带下划线的包名称有错误
,请检入任何java文件'包名称xxx.yyy.zzz与文件路径不对应 'xxx.eee.zzz'。
答案 12 :(得分:0)
在我的情况下,将我用于我的应用程序图标的png复制到我的“drawable-nodpi”文件夹中,Play商店接受了我的apk。如果您没有nodpi文件夹,那么您可能只需将其从与桶大小相关的可绘制文件夹中复制出来,然后将其粘贴到基础文件夹“drawable”中。
这似乎是Play商店最近的一项要求,因为我在今天之前从未见过这个错误。请注意androiddeveloper的评论。