aapt 获取“android:name”属性时出错:属性不是字符串值

2024-04-14

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

application: label='名称' icon='res/drawable/icon_128x128.png'
应用程序可调试可启动活动: name='co.package.name.MainActivity' label='Name' icon='' 错误 获取“android:name”属性:属性不是字符串值

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

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

成功消息apk:

应用程序标签:'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'
应用程序:标签='AppLabel' 图标='res/drawable-xhdpi/icon_128x128.png'
应用程序可调试
可启动活动: 名称='com.demo.testApp.MainActivity'标签=''图标='

失败的 apk 消息:

应用程序标签:'MyApp'
应用程序标签-ja:'MyApp'
application-label-de:'MyApp'
应用程序标签-he:'MyApp'
application-label-zh:'MyApp'
应用程序标签-fi:'MyApp'
应用程序标签-nl:'MyApp'
..
..(所有语言都会附上,最后出现错误)
..
应用程序:标签='MyApp'图标='res/drawable/icon_128x128.png'
应用程序可调试
可启动活动: name='com.name.myapp.MainActivity' label='MyApp' icon=''
错误 获取“android:name”属性:属性不是字符串值


- - - 编辑 - - -
我发现与“语言”问题无关。我修改了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 转换为二进制文件的构建过程中出现了问题?

如果以上内容有任何不合理的嫌疑,我真诚地道歉。我在这个问题上卡了三天了,确实没有任何进展。尝试了很多事情,但错误总是相同的。任何建议或评论将不胜感激。


您的意思是这也可能是由损坏的 aapt 工具引起的吗?

当然。从历史上看,Android 工具存在大量错误,没有理由假设aapt dump badging某种程度上是完美的。实际上,您的问题已作为错误提交 https://code.google.com/p/android/issues/detail?id=46311。所以,除非你是also看到您的应用程序执行中可能存在一些问题,我认为aapt dump badging是有问题的项目,不一定是您的应用程序。

如果您尚未更新到 R22 工具,您可以这样做,看看这个错误是否已修复,并且他们只是还没有解决问题。如果您使用 R22 工具,您可以向该问题添加评论,指出这一点,并包含指向此 SO 问题的链接,以便工具团队在该问题方面拥有另一个数据点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aapt 获取“android:name”属性时出错:属性不是字符串值 的相关文章

  • Android 在 ListView 中获取精确的滚动位置

    我想获得 ListView 滚动的确切像素位置 不 我指的不是第一个可见位置 有办法实现这一点吗 好的 我找到了一个解决方法 使用以下代码 View c listview getChildAt 0 int scrolly c getTop
  • 混合应用程序开发(PhoneGap、Cordova、Ionic)

    我试图了解一切是如何运作的 但对此主题有一些疑问 我将解释我如何理解这些东西 首先让我们从Cordova这是翻译平台JS CSS HTML文件到本机应用程序中 但这并不完全是事实 实际上 它只是将所有 html css 文件放入 asset
  • 构建 gradle 系统应用程序作为 AOSP 构建的一部分

    我有一个基于 AOSP 的自定义 ROM 并且正在开发一个系统应用程序 该应用程序在 ROM 构建期间打包 就像任何其他系统应用程序一样 是否可以将此应用程序切换为 gradle 样式应用程序 并在 AOSP 构建期间使用 gradle 构
  • 上传到 Google Play 商店后应用程序屏幕截图变得模糊

    我制作了一个简单的 Android 应用程序 并已在 Google Play 商店上发布 一切似乎都运行良好 但是 我上传的应用程序的屏幕截图在 Play 商店上变得模糊 即使真实图像看起来不错 我在 SO 上发现了一些类似的问题 但没有一
  • Android 上的透明视频

    有什么办法让Android播放带有透明区域的视频吗 当我尝试在 VideoView 中播放包含透明区域的 WebM 视频时 视图的背景保持黑色 我希望看到透明区域上显示的父视图的背景 而不是黑色 到目前为止 我发现的唯一可行的解 决方案是从
  • Android Wear 应用程序无法通过手机安装

    我正在尝试使用找到的 Package with Android Studio method 通过 Android 手机安装可穿戴应用程序here http developer android com training wearables a
  • 为什么无法将 INT 保存到 SharedPreferences 中?

    我有一个奇怪的问题 我以前从未有过 当我尝试将 int 值保存到我的 SharedPreference 中 然后在其他 Activity 中恢复时 即使我保存其他值 例如 1 值也始终为 0 private String Number pr
  • onPageSelected 不适用于第一页

    我的寻呼机适配器 扩展 PagerAdepter 中有一个文本视图 我使用 MainActivity 的 onPageSelected 更新此文本视图 它更新位置 gt 0 的文本视图 但起始页 位置 0 在启动时不会更新 当我向前滑动然后
  • Android 中如何获取帧

    实际上 我需要从视频中获取所有帧 但在使用 Mediametadataretriever 缩略图 时间戳获取帧时 我经常重复获取第一帧 然后获取特定时间帧 我通过更改所有 GetFrameAtTime options 尝试了很多修复 但仍然
  • Android 2.x 天城文 unicode 问题

    我正在尝试使用以下代码支持 android 2 x 的梵文字体 即使 android 2 x 无法渲染梵文字体 除了 raswa 和 dirga 存在一些问题之外 代码工作正常 是否有可能在 android 2 x 中获得正确的梵文表示形式
  • 检查互联网连接是否可用?

    我正在开发在线应用程序 问题 当互联网关闭或不可用时 它会给我错误 强制关闭 我尝试使用broadCast Receiver进行处理 但没有满足确切的解决方案 正在寻找更好的解决方案 public class MyBroadcastRece
  • 可扩展列表指示器

    我有一个可扩展的列表 所以两个问题 我见过一些类似的问题 但从未找到答案 我该怎么办 隐藏箭头 组指示器 当没有孩子的时候 我尝试在适配器中执行此操作 public View getGroupView int groupPosition b
  • Android源代码中PathClassLoader的实例是在何时何地创建的?

    当我研究android源码时 我注意到app中的通用类加载器是一个实例PathClassLoader 并且该类中有两个构造函数 一种是这样的 public PathClassLoader String dexPath ClassLoader
  • 迁移到 AndroidX 后 Google 登录无法正常工作

    我已将 Google Sign 集成到我的 Android 应用程序中 当我使用 spp Compact v28 库时它工作得很好 但在将我的应用程序迁移到 androidx 后失败 但出现以下异常 java lang Incompatib
  • 不同应用的 Admob 广告单元 ID 相同吗?

    Context 我们正在努力整合admob在我们的应用程序中 我们有 25 个应用程序 主要是动态壁纸 当我们在里面创建广告单元ID时admob 我们提供应用程序名称作为 Playstore 中我们自己的应用程序包名称之一 我们有两个活动
  • 如何在Java中从一组选定的颜色中输出随机颜色? (安卓)

    因此 我希望每当用户输入答案时都为字符串赋予随机颜色 我的问题是 我不确定如何使字符串的随机颜色成为特定范围的颜色 例如 如果我希望字符串随机变成蓝色 红色 绿色 粉色 白色或棕色 只有这些颜色 没有其他颜色 到目前为止 我已经使用以下代码
  • AndroidJUnit4 测试未找到

    我像这样注释了我的课程 RunWith AndroidJUnit4 class public class WorkdayProviderTest 此外 还注释了我的测试方法 如下所示 Test public void insert data
  • 将自定义文件与我的 Android 应用程序关联

    我想将特定扩展名的文件 例如任何扩展名为 xyz 的文件 与我的应用程序关联 这意味着 当用户在文件资源管理器 或其他地方 如 gmail 驱动器等 中点击 SaveFile1 xyz 时 我的应用程序应该启动 并且文件的 Uri 将在 I
  • Android Studio 不允许我更改 SDK 位置

    我打开 Android Studio 然后我打开 SDK 管理器 我拥有最新版本 但是我的 SDK 平台需要 Android 6 0 它甚至不让我点击任何东西 在此图像中 您可以看到文本和复选框变色 我无法单击 SDK 平台内的任何内容 甚
  • Android:单击分组通知会重新启动应用程序

    我正在尝试解决我在通知方面遇到的问题 在我的应用程序中 当有人单击列表项下载文件时 我将创建一个通知 带有不确定的进度和随机生成的整数代码 在下载回调中 我使用原始通知的相同 ID 更新通知以停止进度 单击通知应该打开手机上的下载文件夹 使

随机推荐