当我在 @string/my_app_name
中使用字符串资源 ( android:label
) 时,我突然看到在安装时抛出异常在<application>
下AndroidManifest.xml 中的标记。只有在安装或更新应用程序时才会抛出异常。 my_app_name
在应用程序的其他地方使用时没有任何错误。
我的xml文件最近没有改过,但是这个异常是最近才开始出现的。它可能与 Android Studio、Gradle 或 API 更新有关,但我不确定此异常是从哪个特定更新开始出现的。我正在运行最新的稳定版本(Android Studio 3.4、Gradle 5.1.1、目标 Android API 28)。重启 Android Studio、清理、重建、清除缓存等都没有帮助。
我确定它是标签属性,因为它是引用的字符串,如果我更改 android:label
来自 @string/my_app_name
对于硬编码文本,异常消失。我做错了什么?
AndroidManifest.xml(为简洁起见进行了删减):
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mycompany.myapp"
android:installLocation="internalOnly"
android:versionCode="123"
android:versionName="1.23"
>
...permission-related things...
<application
android:allowBackup="true"
android:allowClearUserData="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/my_app_name"
android:theme="@style/Theme.AppCompat"
tools:ignore="GoogleAppIndexingWarning">
<activity
...activity-related things...
</activity>
<service
...service-related things...
</service>
</application>
</manifest>
Strings.xml(为简洁起见进行了删减):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="my_app_name">My App</string>
...
</resources>
logcat 输出:
2019-04-29 20:29:39.384 22487-22534/? W/PackageManager: Failure retrieving text 0x7f10002a in package com.mycompany.myapp
android.content.res.Resources$NotFoundException: String resource ID #0x7f10002a
at android.content.res.Resources.getText(Resources.java:348)
at android.app.ApplicationPackageManager.getText(ApplicationPackageManager.java:1678)
at android.content.pm.PackageItemInfo.loadUnsafeLabel(PackageItemInfo.java:204)
at android.content.pm.PackageItemInfo.loadLabel(PackageItemInfo.java:194)
at tvw.f(SourceFile:32)
at tvw.c(SourceFile:1)
at txt.c(SourceFile:7)
at ude.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at ifd.run(Unknown Source:5)
at java.lang.Thread.run(Thread.java:764)
最佳答案
关于android - 字符串资源用作 Android 应用程序标签时的 PackageManager 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912626/