sdkmanager - obteniendo el atributo "android: icon '': el atributo no es un valor de cadena" error al cargar un archivo APK en Play Store
for command line tools use tools bin sdkmanager and tools bin avdmanager (13)
Fondo
Después de tantas horas de mi tiempo libre, estoy listo para publicar mi primera aplicación en Play Store, pero, lamentablemente, tengo dificultades para cargar la aplicación firmada.
He exportado exitosamente la aplicación con el almacén de claves que he creado (todo a través de Eclipse y ADT), así que tengo el APK firmado para ser cargado en la Play Store ( here ).
El problema
Sigo recibiendo este mensaje:
Falló la carga Su APK no puede analizarse con ''aapt dump badging''. Salida de error: Error al ejecutar la credencial de volcado aapt: W / ResourceType (14856): no se conoce el paquete al obtener el valor para el número de recurso 0x01080049 ERROR obtener el atributo ''android: icon'': el atributo no es un valor de cadena
como tal:
La aplicación en sí funciona muy bien en dispositivos reales, y el archivo de imagen que se está utilizando es un archivo PNG normal como el que utiliza el sitio web de Android-asset-studio .
Lo que he intentado
He buscado aquí en StackOverflow y he encontrado muchas publicaciones al respecto ( here ). He leído muchos de ellos y he intentado las siguientes cosas, pero nada ha ayudado:
ponga el ícono de la aplicación en una carpeta / s diferente ("drawable", "drawable-mdpi", ... incluso "drawable-xxxhdpi") con múltiples combinaciones (poner / quitar de cada una de las carpetas).
configurando la etiqueta, el icono y el tema tanto en la etiqueta de "aplicación" como en la etiqueta de actividad del iniciador.
cambie el nombre del archivo de imagen y el archivo en sí mismo (lo reemplazó con los iconos de aplicación predeterminados).
limpiar el proyecto
Comprobación de mensajes de pelusa.
actualizando ADT (a 22.3.0.v201310242005-887826), Eclipse (a Kepler Service Release 1), herramientas de SDK (a 22.3), herramientas de compilación de SDK (a 19.0.1). Todo es prácticamente la última versión oficial.
comprobando que no se esté utilizando un archivo jar doble (que no existe ningún archivo jar en más de una biblioteca, especialmente si tiene versiones diferentes).
Intenté colocar el archivo strings.xml en "res / values-en" en lugar de "res / values"
Intenté agregar el atributo "android: value" a todas las etiquetas de metadatos en el manifiesto (sugerido por Google). No funciono De hecho, en todos los tutoriales que he leído, nunca vi tal requisito de un AppWidget, así que creo que no es necesario de todos modos.
intentado el comando aapt:
aapt dump badging
Esto me ha enseñado lo mismo que muestra Play Store (he reemplazado el nombre real del paquete y el nombre de la aplicación con XXX justo aquí):
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
Esto sucede a pesar de que el archivo existe dentro de esta carpeta.
Aquí está el manifiesto. Nuevamente, reemplazó las rutas y los nombres reales de las actividades y la aplicación con XXX. Les puedo asegurar que las rutas son correctas ya que la aplicación puede ejecutarse bien.
<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)
La pregunta
Que esta pasando?
¿Cómo puedo superar esto?
¿Ha intentado apagar y volver a encender la computadora?
Intente eliminar android:icon="@drawable/app_icon
de la Actividad, ya que volverá al icono especificado en la Aplicación.
Trate de no usar proguard.
Creo que fui golpeado por este problema (o algo similar, no estoy seguro) cuando intenté usar un XML dibujable como icono (para agregar relleno, etc. a la imagen PNG). Sin embargo, no creo que su problema sea el mismo, ya que parece referirse directamente al archivo PNG.
Algunas sugerencias para probar (para rastrear el problema por proceso de eliminación):
- Elimine el archivo
res/drawable-mdpi/app_icon.png
y vea si recibió un error diferente. - Elimine todos los atributos de
android:icon
en su manifiesto y vea si aún tiene el error. - Cambie el nombre de cualquier otro recurso llamado
app_icon
en el proyecto a otra cosa.
Si todo lo demás falla, probablemente comenzaría a eliminar los archivos JAR externos y los proyectos de la biblioteca (y probablemente comentaré temporalmente el código que se refiere a ellos) solo para ver si el error fue activado por alguno de ellos. O tal vez comience de nuevo con un mínimo de AndroidManifest.xml
y agregue sus cosas un elemento a la vez.
Otra idea es tratar de averiguar por qué aapt
está produciendo el error. ¿Tal vez descargar la fuente e intentar depurarla?
En el caso de mayo, el problema es porque usé @null para el valor. Eliminando completamente eso lo arregla. Lo mismo sucede cuando pones @null for android: icon.
En mi caso, copié el png que uso para el ícono de mi aplicación en mi carpeta "drawable-nodpi" y la tienda de juegos aceptó mi apk. Si no tiene una carpeta nodpi, entonces tal vez solo necesite copiarla de las carpetas dibujables relacionadas con el tamaño del cubo y pegarla en la carpeta base "dibujable".
Este parece ser un requisito reciente de Play store, ya que nunca antes había visto este error. Toma nota del comentario de androiddeveloper también.
En mi caso, el problema era simplemente que una de las dependencias de mi aplicación había declarado una de sus actividades para usar android: icon = "@ color / black" en su manifiesto, en lugar de usar un dibujable. No obtienes ningún error de compilación, y las aplicaciones funcionan bien. Solo la herramienta aapt informa del error (o la carga en Playstore). Tenga en cuenta que las bibliotecas ni siquiera necesitan que se declare el ícono de android: (¡no son una aplicación instalable!), Pero AndroidStudio parece predeterminar todos los proyectos para declarar uno en el manifiesto.
En mi caso, el problema estaba ocurriendo porque cambié el nombre del paquete antes de liberarlo y me olvidé de cambiar los nombres de directorio. El proyecto aún se estaba recopilando, pero era imposible lanzarlo en Google Play.
Verifique en cualquier archivo java si tiene un nombre de paquete subrayado en rojo con un error
''El nombre del paquete xxx.yyy.zzz no corresponde a la ruta del archivo'' xxx.eee.zzz ''.
En mi caso, lo he resuelto utilizando carpetas de resolución siempre predeterminadas, es decir valores, valores-es, valores-ca
Hoy tuve el mismo problema y la solución de @Rahl_Pryde funcionó bien con un pequeño cambio.
En mi caso, el problema fue un color de resolución transparente de Android en algunos de mis iconos de Actividad. Pero cambiar a un color transparente local no soluciona el problema.
Se solucionó cuando se cambió el icono de un color transparente a un png transparente de 2x2.
Intenta crear diseños separados para diferentes tamaños de pantalla. Nombra las carpetas como res/layout
y res/layout-large
Para mí fue el hecho de que intenté poner iconos transparentes como este:
android:icon="@android:color/transparent"
Sé que hay una respuesta correcta, pero creo que mi experiencia puede ayudar a alguien ...
entonces recibo el mismo error:
ERROR que obtiene el atributo ''android: icon'': el atributo no es un valor de cadena
pero mi problema no estaba relacionado con el icono!
La razón por la que recibo este error fue aquí:
android: label = "@ string / app_name"
Mi proyecto tiene 3 idiomas diferentes, pero el string.xml principal fue sin @ string / app_name ... ¡y este fue el motivo!
¡así que ten cuidado!
Si está utilizando algún ícono del sistema Android como íconos de actividad (es decir, el manifiesto contiene <activity ... android:icon="@android:drawable/...
), podrían ser el problema. Si lo está, intente copiar estos íconos en su proyecto. Usarlos en otro lugar no debería ser un problema ya que las credenciales no los tocan.
Veo que intentaste todo lo que supongo. Intenta cambiar el icono tal vez? :) Quiero decir, solo la posibilidad que queda es su icono.