Подтвердить что ты не робот

Получение атрибута "Андроид: значок": атрибут не является строковым значением "при загрузке APK в магазин воспроизведения

Фон

После стольких часов моего свободного времени я готов опубликовать свое первое приложение в игровом магазине, но, к сожалению, у меня возникают трудности с загрузкой подписанного приложения.

Я успешно экспортировал приложение с созданным мной хранилищем ключей (все через Eclipse и ADT), поэтому у меня есть подписанный APK для загрузки в магазин воспроизведения ( здесь).

Проблема

Я продолжаю получать это сообщение:

Ошибка загрузки. APK не может быть проанализирован с использованием значка "aap dump". Выход ошибки: не удалось выполнить идентификацию дампа aapt: W/ResourceType (14856): Неизвестный пакет при получении значения для номера ресурса 0x01080049 ERROR получает атрибут android: icon: атрибут не является строкой Значение

как таковой:

enter image description here

Приложение само по себе работает очень хорошо на реальных устройствах, а используемый ими образ является обычным PNG файлом, который используется android-assets веб-сайт.

Что я пробовал

Я искал здесь в StackOverflow и нашел много сообщений об этом ( здесь). Я прочитал много из них и пробовал следующее, но ничего не помогло:

  • поместите значок приложения в другую папку/с ( "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)

Вопрос

Что происходит?

Как мне преодолеть это?

4b9b3361

Ответ 1

Если вы используете любые значки системы Android как значки действий (т.е. манифест содержит <activity ... android:icon="@android:drawable/...), это может быть проблемой. Если да, попробуйте скопировать эти значки в свой проект. Использование их в других местах не должно быть проблемой, поскольку кэш не прикасается к ним.

Ответ 2

для меня это был тот факт, что я попытался установить прозрачные значки следующим образом:

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

Ответ 3

Я знаю, что есть правильный ответ, но я считаю, что мой опыт может помочь кому-то...

поэтому я получаю ту же ошибку:

ОШИБКА получения атрибута android: icon: атрибут не является строкой Значение

но моя проблема не была связана с значком!!!

Причина, по которой я получаю эту ошибку, была здесь:

Android: метка = "@строка/app_name"

В моем проекте есть 3 разных языка, но основной файл string.xml был без @string/app_name... и вот почему!

Поэтому будьте осторожны!

Ответ 4

В моем случае проблема заключалась в том, что одна из моих зависимостей в приложении объявила о том, что одна из их   Android: значок = "@цвет/черный" в своем манифесте, вместо того, чтобы использовать выталкиваемый. Вы не получаете ошибок компиляции, и приложения работают нормально. Только инструмент aapt сообщает об ошибке (или загрузке в PlayStore). Обратите внимание: библиотекам даже не нужен андроид: значок, который будет объявлен (они не являются устанавливаемым приложением!), Но AndroidStudio по умолчанию все проекты объявляют в манифесте.

Ответ 5

Я вижу, вы попробовали все, что я думаю. Попробуйте изменить значок, может быть?:) Я имею в виду только возможность, что слева - это ваша иконка.

Ответ 6

Попробуйте создать отдельные макеты для разных размеров экрана. Назовите папки как res/layout и res/layout-large

Ответ 7

Я думаю, что я попал в эту проблему (или что-то подобное, не уверен), когда я попытался использовать XML-чертеж в качестве значка (чтобы добавить дополнение и т.д. к изображению PNG). Я не думаю, что ваша проблема одинакова, поскольку вы, похоже, напрямую ссылаетесь на файл PNG.

Некоторые предложения по попытке (отслеживать проблему по процессу устранения):

  • Удалите файл res/drawable-mdpi/app_icon.png и посмотрите, есть ли у вас другая ошибка.
  • Удалите все атрибуты android:icon в манифесте и посмотрите, есть ли у вас ошибка.
  • Переименуйте любой другой ресурс с именем app_icon в проект на что-то еще.

Если все остальное не удастся, я, вероятно, начну вытеснять внешние JAR файлы и проекты библиотек (и, возможно, временно комментировать код, ссылающийся на них), чтобы увидеть, была ли ошибка вызвана любым из них. Или, может быть, начать с нуля с минимальным значением AndroidManifest.xml и одновременно добавлять свои материалы по одному элементу.

Другая идея - попытаться выяснить, почему aapt создает ошибку. Возможно, загрузите источник и попытайтесь его отладить?

Ответ 8

Вы пытались выключить компьютер и снова включить его?

Попробуйте удалить android:icon="@drawable/app_icon из Activity, так как он вернется к значку, указанному в приложении.

Не пытайтесь использовать proguard.

Ответ 9

В этом случае проблема заключается в том, что я использовал @null для значения. Полностью удалить это исправление. То же самое происходит, когда вы добавляете @null для android: значок.

Ответ 10

Сегодня я получал ту же проблему, и решение @Rahl_Pryde отлично работало с небольшими изменениями.

В моем случае проблема заключалась в прозрачном цвете res android для некоторых моих значков активности. Но переход на локальный прозрачный цвет не устраняет проблему.

Это исправлено при изменении значка с прозрачного цвета на 2x2 прозрачный png.

Ответ 11

В моем случае я решил это, используя всегда папки res по умолчанию, т.е. значения, значения-es, values-ca

Ответ 12

В моем случае проблема возникла из-за того, что я изменил имя пакета перед выпуском и забыл об изменении имен каталогов. Проект все еще компилировался, но его невозможно было опубликовать в google play.

Проверьте любой java файл, если у вас есть красное подчеркнутое имя пакета с ошибкой

'Имя пакета xxx.yyy.zzz не соответствует пути к файлу 'Xxx.eee.zzz'.

Ответ 13

В моем случае скопировал png, который я использую для своего приложения, в мою папку "drawable-nodpi", и Play Store принял мой apk. Если у вас нет папки nodpi, то, возможно, вам просто нужно скопировать ее из ваших папок с размерами, зависящими от размера ведра, и вставить их в базовую папку "drawable".

Это, кажется, последнее требование к магазину Play, так как я никогда не видел эту ошибку до сегодняшнего дня. Обратите внимание на комментарий androiddeveloper.