在将APK上传到Play商店时获取"'android:icon'属性:属性不是字符串值"错误

and*_*per 26 android apk aapt google-play

背景

经过这么多小时的空闲时间后,我准备将我的第一个应用程序发布到游戏商店,但遗憾的是我在上传已签名的应用程序时遇到了困难.

我已经使用我创建的密钥库(所有这些都通过Eclipse和ADT)成功导出了应用程序,因此我将已签名的APK上传到Play商店(此处).

问题

我一直收到这条消息:

上传失败您的APK无法使用'aapt dump Badging'进行分析.错误输出:无法运行aapt转储标记:W/ResourceType(14856):获取资源号为0x01080049的值时没有已知包错误获取'android:icon'属性:属性不是字符串值

因此:

在此输入图像描述

应用程序本身在真实设备上运行良好,正在使用的图像文件是android-assets-studio网站使用的普通PNG文件.

我试过的

我在这里搜索了StackOverflow并发现了很多关于它的帖子(这里).我读了很多,并尝试了下一步,但没有任何帮助:

  1. 将应用程序图标放在不同的文件夹("drawable","drawable-mdpi",...甚至"drawable-xxxhdpi")中,具有多种组合(从每个文件夹中放入/删除).

  2. 在"应用程序"标记和启动器活动标记上设置标签,图标和主题.

  3. 更改图像文件名和文件本身(将其替换为默认的应用程序图标).

  4. 清理项目.

  5. 检查Lint消息.

  6. 更新ADT(至22.3.0.v201310242005-887826),Eclipse(至Kepler Service Release 1),SDK工具(至22.3),SDK构建工具(至19.0.1).一切都是最新的官方版本.

  7. 检查是否没有使用双jar文件(多个库上不存在jar文件,特别是如果它有不同的版本).

  8. 尝试将strings.xml放入"res/values-en"而不是"res/values"

  9. 尝试将"android:value"属性添加到清单上的所有元数据标记(由Google建议).它没用.事实上,在我读过的所有教程中,我从来没有从AppWidget看到过这样的要求,所以我认为不需要它.

  10. 尝试了aapt命令:

    aapt dump badging
    
    Run Code Online (Sandbox Code Playgroud)

这向我展示了游戏商店显示的相同内容(我已经用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
Run Code Online (Sandbox Code Playgroud)

即使文件存在于此文件夹中,也会发生这种情况.

这是清单.再次,用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)
Run Code Online (Sandbox Code Playgroud)

这个问题

到底是怎么回事?

我该如何克服这个问题?

Pab*_*rio 16

如果您使用任何Android系统图标作为活动图标(即清单包含<activity ... android:icon="@android:drawable/...),它们可能是问题所在.如果是,请尝试将这些图标复制到项目中.在其他地方使用它们应该没有问题,因为徽章不会触及那些.


Alb*_*o M 13

对我而言,我试图将透明图标放在这样的事实:

android:icon="@android:color/transparent"

  • 同样发生在我身上 (2认同)
  • 另一种方法是使用1x1透明drawable来消除活动图标. (2认同)