aapt错误获取“android:name”属性:属性不是string值

当我的apk生成时,我执行命令aapt dump badging 。 我不断收到以下错误:

application:label ='Name'icon ='res / drawable / icon_128x128.png'
application-debuggable launchable-activity:name ='co.package.name.MainActivity'label ='Name'icon =''ERROR gets'android:name'attribute:attribute is not a string value

我已经尝试为所有活动添加一个标签名称,并删除/ res下的所有其他值-xxx文件夹,但徒劳无益。 但是,如果我创build了一个全新的项目并生成新的APK,则可以使用aapt dump badging命令成功执行APK。

我比较了两个APK的打印信息,发现了一个主要区别:

成功消息apk:

应用标签:“AppLabel”
应用程序图标-160: 'RES /抽拉-xhdpi / icon_128x128.png'
应用程序图标-240: 'RES /抽拉-xhdpi / icon_128x128.png'
应用程序图标-320: 'RES /抽拉-xhdpi / icon_128x128.png'
application:label ='AppLabel'icon ='res / drawable-xhdpi / icon_128x128.png'
应用程序debugging的
launchable-activity:name ='com.demo.testApp.MainActivity'label =''icon ='

消息失败的apk:

应用标签:“MyApp的”
应用标签JA:“MyApp的”
应用标签-DE: 'MyApp的'
应用程序标签,他却说:“MyApp的”
应用标签-ZH: 'MyApp的'
应用标签音响:“MyApp的”
应用标签-NL: 'MyApp的'
..
..(所有的语言将被附加,最后发生错误)
..
application:label ='MyApp'icon ='res / drawable / icon_128x128.png'
应用程序debugging的
launchable-activity:name ='com.name.myapp.MainActivity'label ='MyApp'icon =''
错误获取“android:name”属性:属性不是string值

—–编辑——
我发现这与“语言”问题没有关系。 我修改了我的Manifest文件,确保没有打印出这样的“application-label-XX”,错误仍然是一样的。

以下是我的清单文件

 <?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> 

也许在我的清单文件中有错误的格式或错字?

——编辑—-
我也认为这可能是一个解码的问题。 在我的环境中,我使用utf-8。 在将XML转换为二进制文件的构build过程中,可能有什么错误?

如果上面有任何不合理的嫌疑人,我诚恳地道歉。 我在这个问题上坚持了三天,实在无法取得进展。 试了很多东西,错误总是一样的。 任何build议或意见将非常感激。

Solutions Collecting From Web of "aapt错误获取“android:name”属性:属性不是string值"

你的意思是这也可能是由一个破的aapt工具造成的?

当然。 从历史上看,Android工具有很多bug,没有理由认为aapt dump badging是完美的。 事实上, 你的问题已经被提交作为一个错误 。 所以,除非您在应用程序的执行过程中看到了一些可能与此绑定的问题,否则我会假设aapt dump badging是问题的项目,不一定是您的应用程序。

如果你还没有更新到R22工具,你可能会这样做,看看这个bug是否已经修复,而他们根本没有解决问题。 如果您使用的是R22工具,那么您可能会为该问题添加一条评论,指出这一点,并且包含一个到这个SO问题的链接,所以工具团队在问题上有另一个数据点。

这里同样的故事。 当我上传工作apk到谷歌播放时,我得到了这个消息。 我能够用aapt命令(在… \ android-sdk \ platform-tools)中重现它。 事实certificate,这是一个意图filter名称中的string资源,并通过硬编码进行修复。

如果没有这个答案,这将花费我一个loooooong的时间来debugging这个:)

如果您正在使用Gradle并且希望您的replace基于您的某个构build版本,则可以使用自定义replacestring而不是使用Android @string引用。 ( http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support

在您的build.gradle文件中,为“manifestPlaceholders”部分中的每个构build风格定义一个值:

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

然后你可以在你的Manifest文件中使用“proFreeString”作为replace:

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

检查行动名称

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

改成

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

我有同样的问题,我已经通过从manifestx.xml中删除@string来解决它。

原件(错误):

string.xml

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

Manifex.xml

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

以上将如预期的那样正常工作。 但是当我上传apk到谷歌播放它会导致aapt ERROR getting 'android:name' attribute: attribute is not a string value

问题解决如下:

固定:

Manifex.xml

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

你只需要将@string更新为精确的string。 希望这会帮助你!

我只是有同样的问题。 这是由一个无法find的string造成的。

机器人:标签= “@string/ app_name_launcher”

该文件夹的values / strings.xml中的string根本不存在。

有趣的是,我可以创build.apk文件。

基本上,如错误消息所示,要解决这个问题,只需经过Manifest文件的每一行,并确保每个“android:name”具有正确链接的“string值”。

更好的是,在Manifest文件中为每个“android:name”属性键入所需的string来debugging问题。