web-dev-qa-db-ja.com

Android ReactネイティブアプリでIntlを適切に使用する

Intlの数値フォーマッターを使用しようとしています。これは、iOSで完全に機能し、デバッガーがiOSまたはAndroidのいずれかに接続されている場合にのみ機能しますが、デバッガーが接続されていない場合はAndroid Androidの古いJSCに。

少し調べた結果、2つの解決策が見つかりました。

  • Intlポリフィルを使用する
  • AndroidでカスタムJSCを使用する

Intlreact-intlをyarnを使用してインストールした後、最初にこのようにintlポリフィルを試しました。

//in my app's index.js
if (!global.Intl) {
    global.Intl = require('intl');
}

まだReferenceError: Can't find variable: Intlと書いてありますが。

それから私はあきらめてカスタムJSCを含めようとしました(カスタムAARが正しく参照されていることを確認しました)が、それでも同じエラーが発生します。何をしても、デバッガーが接続されていないと、IntlをAndroid)で実行できません。

私は何が間違っているのですか? (私はReact Native 0.59.9)にいます

4
Can Poyrazoğlu

この質問を削除したかったのですが、すでに別の回答があるため削除できません。


それはJSCとは何の関係もありませんでした。ビルドスクリプトがAPKを適切に更新していないと思っていたので、古い偽のAPKを何度も試していました。それ以外の場合は、新しいAPKで動作するため、すべてが適切に行われていたようです。

0
Can Poyrazoğlu

カスタムJSCを使用している場合は、国際バージョンを次のようにインポートすることを忘れないでください JSCのread me Android Buildscripts

Reactネイティブバージョン0.59の場合、元のアーティファクトIDをAndroid-jsc-intlに置き換えます

dependencies {
+   // Make sure to put Android-jsc at the the first
+   implementation "org.webkit:Android-jsc-intl:r241213"
+
    compile fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.Android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
}
1
TimeWalker