2017-12-29 10 views
12

htmlファイル入力を使用してファイルをアップロードできるようにカスタムAndroid WebViewを読み込もうとしています(デフォルトでは、Android webviewは入力ファイルで動作しません)。 Im using this code私MainApplication.javaが異なっているので、唯一の違いは、(デフォルトでは、別のクラスから継承)、博覧会のキットを使用して、そのイムです:エキスポキットを使用して反応ネイティブのカスタムネイティブコンポーネントをロード

public class MainApplication extends MultiDexApplication { 

    // Needed for `react-native link` 
    public List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
     new MainReactPackage(), 
     new CustomWebViewPackage() 
    ); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     SoLoader.init(this, /* native exopackage */ false); 
    } 
} 

基本的に何Gitのコードが実行するデフォルトは作るためにネイティブのWebViewを反応させる上書きされますそれは、このコード(this is on CustomWebView.android.js)とrequireNativeComponentを使用して、アンドロイドでCustomWebView.javaを使用:

var RCTWebView = requireNativeComponent('CustomWebView', WebView, { 
nativeOnly: { 
    messagingEnabled: PropTypes.bool, 
}, 

})。

が、私はEXP私はこのエラーを受け取り始めるとCustomWebViewを持っている画面に移動使用してアプリケーションを実行します。問題をまとめると

enter image description here

は私のカスタムネイティブコンポーネントがで読まされていないことですネイティブに反応する。誰かが私を助けることができますか?

答えて

7

エクスポを使用する際にネイティブコードを使用することはできません。あなたが提供するものだけを使用できます。取り出しは、ネイティブコードを使用することができますが、あなたはもうエクスポを使用することはできません。私はそれが不可逆的であると確信しています。

あなたはここに万博を使用しての注意事項についての詳細を見ることができます:デフォルトでhttps://facebook.github.io/react-native/docs/getting-started.html#caveats

+0

こんにちはマット、回答いただきありがとうございます、私はすでに排出しています。 ImはExpoキットを使用しています。ドキュメントには、エクスポフレームワークとともにネイティブコード(キットを取り出したりネイティブに反応させることができます。 – sagits

8

エキスポは、任意のカスタムネイティブモジュールをサポートしていません。これは、1つのperbuiltバイナリを持ち、あなたが書き込むJSバンドルだけをロードするためです。したがって、Expoで作成したコードは純粋なJavascriptだけです。 しかし、万博のドキュメンテーションでは、切り離し後にカスタムネイティブモジュールを追加することができます。ここ 詳細情報:

https://docs.expo.io/versions/latest/guides/detach.html#should-i-detach

https://docs.expo.io/versions/latest/introduction/faq.html#what-is-the-difference-between-expo-and-react-native

https://github.com/expo/expo/issues/56

5

あなたは、それはいくつかのBoilerPlatesを持って使用することは非常に簡単ですIgniteとして知られReact Nativeのためのコードの最高の発電機を起動することができます。

Ignite Expo BoilerPlateを使用すると、expo + nativeモジュールをサポートするすべてのコードを設定できます。 ignite-cliをグローバルパッケージとしてインストールして実行した後ignite new [AppName] -b ignite-expo

これは簡単なステップです。また、便利な他のモジュールもいくつか追加しています。

+0

お返事ありがとうございます。私はすでにすべてのコードを完了して作業していますが、唯一必要なのはこのネイティブモジュールなので、最初からすべてを再起動することはできません(igniteを使用して) – sagits

1

プロジェクトを取り出した後、exp startで使用しようとしても、達成したい結果が得られません。エクスポキットは引き続きサポートされていますが、新しいネイティブコードが必要です。react-native run-androidを使用して実行する必要があります。そうすることで、それはexp startと同じようにJSを提供するだけでなく、あなたのネイティブコードをコンパイルしてあなたのデバイスに入れます。

現在、exp startを使用するとJSバンドルが配信されますが、バンドルは汎用エクスポクライアント内に存在しないため、ネイティブモジュールを見つけることができません。

関連する問題