web-dev-qa-db-ja.com

string.xmlの絵文字記号appがアプリをクラッシュさせる

絵文字シンボルを統合したいですか???? in Android app。したがって、utf-8シンボルの16進コードを検索し、string.xmlファイルに以下を追加します。

<string name="thumbsup">Perfect <node>&#x1f44d;&#x1f44d;</node></string>

これはPerfect ????????になるはずです。ただし、代わりに、コールアクティビティがこれを表示しようとすると、アプリがクラッシュします。

JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0

特に完璧ではない;)

21
toom

そのための修正は、「-utf16」を追加してaaptに追加します。

Android {
    aaptOptions {
        additionalParameters '--utf16'
    }
}

あなたのbuild.gradleファイル、およびaapt2を使用していないことを確認してください。

https://issuetracker.google.com/issues/37140916 を参照してください

7
Menny

Androidの新しいバージョンはクラッシュを引き起こさないようです(私のテストではAPI 24が機能しました)が、古いバージョンをサポートしている場合、それは役に立ちません。理解するには、Javaコード化された文字列を使用します。

public class AppEmojiStrings {

    // This is only a workaround for emoji causing crashes in XML strings.
    // Use the standard strings.xml for all other strings.

    public static final String thumbsUp = "Thumbs up ????"; 
    public static final String iLoveNY = "I \uD83D\uDC99 NY";
}

この方法にはいくつかの欠点がありますが、主な欠点は、レイアウトXMLファイルではアクセスできないことです。しかし、状況によっては実行可能な回避策になる場合があります。

2
Suragch