it-swarm.com.ru

ошибка "Android: icon": атрибут не является строковым значением "при загрузке APK в игровой магазин

Фон

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

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

Эта проблема

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

Ошибка загрузки. Ваш APK не может быть проанализирован с помощью 'aapt dump badging' . Вывод ошибки: не удалось запустить значок aapt dump: W/ResourceType (14856): Не известен пакет при получении значения для номера ресурса 0x01080049 ОШИБКА при получении атрибута «Android: значок»: атрибут не является строкой значение

в качестве таких:

enter image description here

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

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

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

  1. поместите значок приложения в другую папку/s («drawable», «drawable-mdpi», ... даже «drawable-xxxhdpi») с несколькими комбинациями (положить/удалить из каждой из папок).

  2. установка метки, значка и темы как для тега «application», так и для тега активности лаунчера.

  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: значение» ко всем тегам метаданных в манифесте (предложено Google). Это не сработало. На самом деле, во всех уроках, которые я читал, я никогда не видел такого требования от AppWidget, поэтому я думаю, что в любом случае это не нужно.

  10. попробовал команду aapt:

    aapt dump badging
    

Это показало мне то же самое, что показывает Play Store (я заменил реальное имя пакета и название приложения на 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)

Вопрос

Что здесь происходит?

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

25
android developer

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

16
Pablo_Cassinerio

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

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

13
Alberto M

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

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

ОШИБКА при получении атрибута «Android: значок»: атрибут не является строкой значение

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

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

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

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

так что будьте осторожны!

2
Stan Malcolm

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

2
Deepers

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

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

Попробуйте не использовать Proguard.

0
FunkTheMonk

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

0
user666

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

0
nrikee

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

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

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

0
RadekJ

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

0
Akshat Agarwal

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

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

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

0
RubensBrilhante

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

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

0
whyoz

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

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

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

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

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

0
Joe

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

0
deathemperor