Aapt ERROR obtener 'android: name' atributo: atributo no es un valor de cadena

Cuando mi apk se genera ejecuto el comando aapt dump badging en él. Sigo recibiendo el siguiente error:

Aplicación: label = 'Name' icon = 'res / drawable / icon_128x128.png'
Application-debuggable launchable-activity: name = 'co.package.name.MainActivity' label = 'Name' icon = '' ERROR obtener 'android: name' atributo: atributo no es un valor de cadena

He intentado agregar un nombre de etiqueta para todas las actividades y eliminar todos los demás valores-xxx carpetas en / res, pero en vano. Sin embargo, si creo un proyecto completamente nuevo y genere un APK nuevo, el APK se puede ejecutar con el aapt dump badging éxito.

Comparé el mensaje impreso de ambos APK y encontré una diferencia principal:

Mensaje de éxito apk:

Etiqueta de aplicación: 'AppLabel'
Application-icon-160: 'res / drawable-xhdpi / icon_128x128.png'
Application-icon-240: 'res / drawable-xhdpi / icon_128x128.png'
Application-icon-320: 'res / drawable-xhdpi / icon_128x128.png'
Aplicación: label = 'AppLabel' icon = 'res / drawable-xhdpi / icon_128x128.png'
Aplicable-debuggable
Launchable-activity: name = 'com.demo.testApp.MainActivity' label = '' icon = '

Mensaje de fallido apk:

Etiqueta de aplicación: 'MyApp'
Application-label-ja: 'MiApp'
Application-label-de: 'MiApp'
Application-label-he: 'MiApp'
Application-label-zh: 'MiApp'
Aplicación-etiqueta-fi: 'MyApp'
Aplicación-etiqueta-nl: 'MyApp'
..
.. (todos los idiomas se adjunta, y finalmente el error se produce)
..
Aplicación: label = 'MyApp' icon = 'res / drawable / icon_128x128.png'
Aplicable-debuggable
Launchable-activity: name = 'com.name.myapp.MainActivity' label = 'MiApp' icon = ''
ERROR obtener 'android: name' atributo: atributo no es un valor de cadena

—– Editar ——
Encontré que no hay relevancia para el problema de "Lenguaje". He modificado mi archivo de manifiesto y asegúrese de que no hay tal "etiqueta de aplicación-XX" impreso, y el error sigue siendo el mismo.

Abajo está mi archivo de manifiesto

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="co.package.name" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <supports-screens android:anyDensity="true" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- Location --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Camera --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.camera" android:required="true" /> <uses-feature android:name="android.hardware.camera.front" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <!-- GCM Necessary --> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <permission android:name="co.package.name.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="co.package.name.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- Calendar R/W --> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <application android:allowBackup="true" android:icon="@drawable/icon_128x128" android:label="@string/app_name" > <!-- GCM meta-data --> <meta-data android:name="com.arrownock.push.SERVICE_TYPE" android:value="GCM" /> <meta-data android:name="com.arrownock.push.gcm.SENDER_ID" android:value="@string/gcm_project_id" /> <meta-data android:name="com.arrownock.push.APP_KEY" android:value="@string/light_appkey" /> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/fb_id" /> <activity android:name=".Main" android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="co.package.name.SplashHP" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SettingsHP" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> </intent-filter> </activity> <activity android:name="co.package.name.LocationSelect" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> </intent-filter> </activity> <activity android:name="co.package.name.SettingOptionAlarm" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SettingOptionNotify" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SettingOptionShare" android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="settingshare" android:scheme="oauth" /> </intent-filter> </activity> <activity android:name="co.package.name.HpCalendar" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SMSList" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SMSEditor" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.SMSChooseToSend" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.ShareToFB" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.ActPOI" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="com.facebook.LoginActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.LogInOutFB" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > </activity> <activity android:name="co.package.name.LoginTwitter" android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="t4jsample" android:scheme="oauth" /> </intent-filter> </activity> <receiver android:name="co.package.name.AlarmReceiver" android:exported="true" > <intent-filter> <action android:name="@string/action_alarm" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <!-- GCM Service --> <receiver android:name="com.arrownock.push.AnPushGCMReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="co.package.name" /> </intent-filter> </receiver> <service android:name="com.arrownock.push.GCMIntentService" /> <receiver android:name="co.package.name.ExtendedReceiver" android:exported="true" android:icon="@drawable/icon_128x128" android:label="Receiver" > <intent-filter> <action android:name="com.arrownock.push.PushService.MSG_ARRIVAL" /> </intent-filter> </receiver> </application> </manifest> 

Tal vez hay un formato incorrecto o error tipográfico en mi archivo de manifiesto?

—— Editar —-
También considero que tal vez sea una cuestión de descodificación. En mi entorno utilizo utf-8. Tal vez algo está mal en el proceso de construcción de la transformación de XML a archivo binario?

Si hay algo sospechoso en lo anterior, sinceramente pido disculpas. Me he quedado en este tema tres días y realmente no puedo alcanzar un progreso. Intentó muchas cosas y el error siempre es el mismo. Cualquier sugerencia o comentario sería muy apreciado.

¿Quiere decir que esto también puede ser causado por una herramienta de aapt roto?

Por supuesto. Las herramientas de Android han tenido un montón de errores, históricamente, y no hay ninguna razón para asumir que el aapt dump badging es de alguna manera perfecto. De hecho, su problema ya ha sido presentado como un error . Por lo tanto, a menos que también esté viendo algún problema en la ejecución de su aplicación que podría estar atado aquí, asumiría que el aapt dump badging es el elemento con el problema, no necesariamente su aplicación.

Si aún no se ha actualizado a las herramientas R22, podría hacerlo, para ver si este error se ha solucionado y simplemente no han cerrado el problema. Si está en las herramientas R22, puede agregar un comentario a ese problema, señalando esto, e incluir un enlace a esta pregunta de SO, por lo que el equipo de herramientas tiene otro punto de datos en términos del problema.

La misma historia aquí. Recibí este mensaje cuando subí un apk de trabajo a Google Play. Pude reproducirlo con el comando aapt (en … \ android-sdk \ platform-tools). Resultó ser un recurso de cadena en el nombre de un filtro de intención, y fue fijado por codificación difícil.

Me hubiera tomado un tiempo loooooong para depurar esto sin esta respuesta 🙂

Si está utilizando Gradle y desea que su sustitución se base en uno de sus sabores de compilación, puede utilizar una cadena de sustitución personalizada en lugar de utilizar referencias de Android @string. ( http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support )

En el archivo build.gradle, defina un valor para cada sabor de compilación en la sección "manifestPlaceholders":

 productFlavors { pro { manifestPlaceholders = [ proFreeString:"my.pro.string" ] } free { manifestPlaceholders = [ proFreeString:"my.free.string" ] } } 

A continuación, puede utilizar "proFreeString" como una sustitución en su archivo de manifiesto:

  <intent-filter> <action android:name="com.foo.${proFreeString}.ACTION_1" /> </intent-filter> 

Comprobar el nombre de la acción

 <action android:name="@string/action_restart" /> 

cambiar a

 <action android:name="kr.mint.test.restart" /> 

Tengo el mismo problema y lo he solucionado por quitar el @string de manifex.xml.

Original (error):

String.xml

 <string name="alarm_auto_sync">auto_syncx</string> 

Manifex.xml

 <intent-filter> <action android:name="@string/alarm_auto_sync" > </intent-filter> 

Arriba estaría bien como se esperaba. Pero cuando aapt ERROR getting 'android:name' attribute: attribute is not a string value apk a google play hará que el aapt ERROR getting 'android:name' attribute: attribute is not a string value

El problema se resolvió de la siguiente manera:

Fijo:

Manifex.xml

  <intent-filter> <action android:name="auto_syncx" > </intent-filter> 

Sólo tiene que actualizar el @string a la cadena exacta. ¡Espero que esto te ayude!

Acabo de tener el mismo problema. Fue causada por una cadena que no se pudo encontrar.

Android: label = "@ string / app_name_launcher"

Esa cadena en la carpeta valores / strings.xml simplemente no existe.

Lo curioso es que podría crear el archivo .apk sin embargo.

Básicamente, como sugiere el mensaje de error, para solucionar esto solo pasa por todas las líneas de tu archivo Manifest y asegúrate de que cada "android: name" tenga un "string value" correctamente vinculado.

Mejor aún duro tipo de la cadena necesaria para cada atributo "android: name" en el archivo Manifest para depurar el problema.

  • Android Volley Firmado apk problema
  • Creación de archivo APK de Android en línea formulario de sitio PHP
  • Adb - ¿Cómo reinstalar una aplicación, sin retener los datos?
  • Cómo salir de APK de shell
  • "La conversión al formato Dalvik falló con error 1" - sólo en exportación
  • Reconstruir .apk utilizando Eclipse sin ejecución
  • Cómo generar un archivo apk utilizando una línea de comandos?
  • ¿Por qué el tamaño androide de apk difiere cuando se construye desde windows y mac
  • Android Studio instala un APK para cada módulo
  • Instalación silenciosa en dispositivos Android
  • Android APK no instalado en el dispositivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.