android - 字符串资源用作 Android 应用程序标签时的 PackageManager 异常
问题描述
当我在 AndroidManifest.xml 的标签下使用字符串资源 ( @string/my_app_name
) 时,我突然看到在安装时抛出异常。仅在安装或更新应用程序时引发异常。在应用程序的其他地方使用,没有任何错误。android:label
<application>
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>
日志输出:
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)
解决方案
推荐阅读
- arrays - laravel ->get() 没有正确返回关系
- python - tf.train.shuffle_batch_join 和 tf.train.shuffle_batch 的区别
- python - 如何在 Flask 上使用 Authlib 2.0 获取身份验证代码/令牌?
- php - 如何 preg_match() 字符串并将所有结果输出到数组中?
- css - 无法在 Angular2+ 中正确显示引导轮播
- webpack - 从 node_modules 导入 CSS 到 Create React App
- python-3.x - 如何使用 Kivy 创建按钮?
- postgresql - CloudSQL 实例导入后存储使用量减少
- java - 在集群环境中访问 Mojarra JSF Flash 时线程阻塞
- python - 使用和随机化代理