android - api 19 的无效资源字符串 - Android

标签 android string

我在我们的一个应用程序中遇到了崩溃问题,我正试图找出它的原因。

这似乎是由于资源中的字符不正确而发生的。因此,阅读它后我发现,在 API 19 及之前的版本中,一些非 UTF8 字符造成了麻烦。在崩溃的那一刻,这个字符串被显示:Loading document…

”等同于“...”,但我想知道这是否是造成麻烦的原因。可能吗?这组字符对19及之前的api无效吗?

编辑: 我添加了 PlayStore 给出的跟踪(我所有的):

    "main" tid=1 Native 
"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 obj=0x74b56000 self=0xb4df6500
            | sysTid=12348 nice=0 cgrp=default sched=0/0 handle=0xb6fbcb34
            | state=S schedstat=( 0 0 0 ) utm=806 stm=228 core=0 HZ=100
            | stack=0xbe419000-0xbe41b000 stackSize=8MB
  | held mutexes=
  #00  pc 0000000000017618  /system/lib/libc.so (syscall+28)
            #01  pc 00000000000f5ced  /system/lib/libart.so (_ZN3art17ConditionVariable4WaitEPNS_6ThreadE+80)
            #02  pc 0000000000267623  /system/lib/libart.so (_ZN3art3JNI12NewStringUTFEP7_JNIEnvPKc+610)
            #03  pc 000000000008952d  /system/lib/libandroid_runtime.so (???)
            #04  pc 000000000042c6bf  /data/dalvik-cache/arm/system@framework@boot.oat (Java_android_content_res_StringBlock_nativeGetString__JI+98)
    at android.content.res.StringBlock.nativeGetString (Native method)
    at android.content.res.StringBlock.get (StringBlock.java:82)
            - locked <0x066e19ac> (a android.content.res.StringBlock)
    at android.content.res.AssetManager.getResourceText (AssetManager.java:154)
            - locked <0x0fbb8675> (a android.content.res.AssetManager)
    at android.content.res.Resources.getText (Resources.java:308)
    at android.content.res.Resources.getString (Resources.java:400)
    at android.content.Context.getString (Context.java:409)
    at cat.enterprise.appname.modules.documents.view.DocumentsActivity.insertUnlockPasswordDialog (DocumentsActivity.java:628)
    at cat.enterprise.appname.modules.documents.view.DocumentsActivity.onDocumentClick (DocumentsActivity.java:544)
    at cat.enterprise.appname.adapter.DocumentItemAdapter$1.onClick (DocumentItemAdapter.java:344)
    at android.view.View.performClick (View.java:5204)
    at android.view.View$PerformClick.run (View.java:21153)
    at android.os.Handler.handleCallback (Handler.java:739)
    at android.os.Handler.dispatchMessage (Handler.java:95)
    at android.os.Looper.loop (Looper.java:148)
    at android.app.ActivityThread.main (ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke! (Native method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:742)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:632)
            "FinalizerDaemon" tid=3 Waiting 
"ReferenceQueueDaemon" tid=4 Waiting 
"FinalizerWatchdogDaemon" tid=5 Waiting 
"Binder_1" tid=7 Native 
"Binder_2" tid=8 Native 
"AsyncTask #1" tid=9 Waiting 
"AsyncTask #2" tid=10 Waiting 
"AsyncTask #3" tid=11 Waiting 
"AsyncTask #4" tid=12 Waiting 
"AsyncTask #5" tid=13 Waiting 
"Okio Watchdog" tid=14 Waiting 
"pool-2-thread-1" tid=15 Waiting 
"RealmFinalizingDaemon" tid=16 Waiting 
"Binder_3" tid=17 Native 
"estiona.appname"
        "Signal Catcher" tid=2 Runnable

谢谢

最佳答案

添加一个 values-v19/strings.xml,不包含 U+2026 和更多类似字符。

<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
    <string name="loading_text" tools:ignore="TypographyEllipsis">Loading document...</string>
</resources>

因为JNI UTF-8 encoding bug with some characters , 可能有超出范围的字符。

关于android - api 19 的无效资源字符串 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834243/

相关文章:

javascript - 给定一个字符串,将每个单词的第一个字母移动到每个单词的末尾,然后将 "ay"添加到每个单词的末尾并返回一个新字符串 - JavaScript

python - 如何在 Python 中删除反斜杠和附加在反斜杠上的单词?

android - 如何在不违反基本 OOD 原则的情况下使用 Android 的 getString()?

Android - 将 Parcelable 数据保存到文件中

android - 我应该为 Android L 开发安装哪些系统镜像?

javascript - 作为字符串失败的测试

java - 在 Eclipse 中备份

android - 在 Android O 设备上后台运行的应用程序的位置收集有哪些限制?

python - 将十六进制数据写入文件

Python 替换部分字符串