android - 字符串资源用作 Android 应用程序标签时的 PackageManager 异常

标签 android

当我在 @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)

最佳答案

经过更多研究,我发现了这个类似的错误:

从设置 → 构建、执行、部署 → 即时运行禁用即时运行并取消选中启用即时运行(只需取消选中该框)

SO

关于android - 字符串资源用作 Android 应用程序标签时的 PackageManager 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55912626/

相关文章:

android - 如何在Preferences Activity中重启应用或返回LAUNCHER页面?

android - 将对象保存到内部存储器上的文件 (Android)

android - 在后台加载 WebView

当内存不足时,Android 不会从堆栈中杀死 Activity

安卓 : LocationManager dynamically adjust minTime/minDistance thresholds

android - 在 ScrollView 中嵌套框架布局?

android - RecyclerView 在新行中显示以前在 EditText 中输入的值

java - 导入 android_view_TextureView 未找到

android - RxJava Observable 从不执行 onCompleted

android - 海量数据+Objectbox+RecyclerView适配器