android - 설치 - 리액트 네이티브 엑스포




엑스포 키트를 사용하여 반응 네이티브로 사용자 정의 네이티브 구성 요소로드 (3)

당신은 React Native 위한 최선의 코드 생성기로 시작할 수 있습니다. Ignite 알려진 것은 Ignite 가있는 매우 사용하기 쉽습니다.

주어진 유용한 보일러 판에서 Ignite Expo BoilerPlate 를 사용하면 expo + native 모듈을 지원하는 모든 코드를 설정할 수 있습니다. ignite-cli 를 글로벌 패키지로 설치하고 ignite-cli 실행 한 후 ignite new [AppName] -b ignite-expo

그래서 이것은 당신을위한 쉬운 단계 일 것입니다. 또한 유용한 모듈을 추가합니다.

HTML 파일 입력을 사용하여 파일을 업로드 할 수 있도록 사용자 정의 Android WebView를로드하려고합니다 (기본적으로 Android webview는 입력 파일에서 작동하지 않습니다). 이 코드를 사용하면 , 유일한 차이점은 엑스포 키트를 사용하는 것이므로 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);
  }
}

기본적으로 자식 코드는 기본 반응 기본 웹 뷰를 재정 의하여 Android에서 CustomWebView.java를 사용하고이 코드와 함께 requireNativeComponent를 사용합니다 ( CustomWebView.android.js에 있음 ).

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

});

그러나 내가 exp 시작을 사용하여 응용 프로그램을 실행하고 CustomWebView가있는 화면으로 이동하면이 오류가 나타납니다.

문제를 요약하면 내 기본 구성 요소가 React Native에서 읽히지 않습니다. 누군가 나를 기쁘게 도와 줄 수 있습니까?


엑스포는 기본적으로 맞춤 네이티브 모듈을 지원하지 않습니다. 이는 바이너리 바이너리가 하나뿐이기 때문에 작성한 JS 번들 만로드하기 때문입니다. 따라서 Expo로 작성한 모든 코드는 순수한 자바 스크립트 일 수 있습니다. 그러나 Expo 문서에서는 분리 후 사용자 정의 네이티브 모듈을 추가 할 수 있다고 말합니다. 더 많은 정보는 여기 :

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


프로젝트를 추출한 후 exp start 을 통해 프로젝트를 사용하려고해도 결과를 얻지 못합니다. 엑스포 키트가 여전히 지원되는 동안 새로운 네이티브 코드가 필요합니다. react-native run-android 사용하여 실행해야합니다. 그렇게하면 exp start 처럼 JS를 제공 할뿐만 아니라 네이티브 코드를 컴파일하여 장치에 저장합니다.

지금은 exp start 사용하여 JS 번들을 제공하지만 번들은 일반 EXPO 클라이언트 내에 존재하지 않기 때문에 네이티브 모듈을 찾을 수 없습니다.





expo