programing

네이티브와 안드로이드 대응

testmans 2023. 4. 5. 21:26
반응형

네이티브와 안드로이드 대응

리액트 네이티브를 새로운 웹 앱에 사용할까 생각 중입니다.iOS 앱과 Android 앱을 모두 사용하여 배송할 수 있습니까?

로드맵에 기재되어 있는 것은 알고 있습니다만, 개별 오픈 소스 프로젝트(React Android vs React Native 등)인지, 아니면 하나의 프로젝트(React Native 등)인지 불분명합니다.

TLDR: 할 수 있을 것 같습니다.그러나 사용 사례에 따라 다릅니다.

80~99%의 코드 재사용을 목표로 할 수 있습니다(Android/iOS 네이티브 뷰/모듈 사용량에 따라 다름).커스텀 그래픽 코드 또는 저레벨 TCP 네트워크 코드가 있습니까?네이티브 코드로만 실행할 수 있으며 JS 코드에 API로 노출됩니다.플랫폼 고유의 JS 코드의 양은 실제로는 최소입니다.또한 다음과 같은 플랫폼 체크를 사용할 수 있습니다.if (Platform.OS === 'android'){}코드 재이용에 관한 정보를 얻을 수 있습니다.이치노Dropbox와 다른 회사들은 유사한 프로젝트를 수행해왔다: iOS와 Android 프로젝트 간에 '공유' 컴포넌트를 구축하기 위해 c++를 사용하는 한편, 대부분의 UI 코드를 iOS(Objective-c 또는 swift)와 Android(java)로 구현했다.Java Objective-C 스위프트 C++를 사용합니다. 숙달해야 할 언어가 많아지고, 복잡성과 두뇌 주스가 낭비되고 있습니다.iOS와 Android 양쪽에서 다른 네이티브 코드를 작동시키기 위해서는 아마도 매우 힘든 체조 동작과 디버깅이 필요했을 것이다.

React Native는 JavaScript에서 거의 모든 것을 훨씬 쉽게 쓸 수 있게 해줍니다.단, JS 코드의 약 80%만 공유할 수 있다는 단점이 있습니다.가까운 미래에도 Android 및 iOS 버전에는 '플랫폼별' JS 코드를 작성해야 합니다.

그래서 FB는 어디에서나 '실행'하는 대신 '번 배우고, 어디서나 코드화'하는 것을 목표로 한다고 말했다.

그러나 코드 재사용 이외에는 매우 훌륭합니다(80% 이상의 코드 재사용은 Android와 iOS의 두 가지 버전을 유지하는 것에 비해 여전히 큰 개선점입니까?)

응용 프로그램을 새로 고치는 cmd +R은 개발 속도를 크게 향상시킵니다.큰 프로젝트가 컴파일되기를 기다리는 것은 당신이 마음속으로 죽어가는 것을 느끼게 할 뿐이다.

React를 사용하여 무료로 제공되는 선언형 UI입니다. 또 다른 큰 장점입니다!더 이상 특정 UI 코드를 자주 '파헤칠' 필요가 없기 때문입니다.데이터가 변경되었습니까?'flush'만 하면 UI가 그에 따라 업데이트됩니다.뇌즙이 낭비되지 않는다.

그렇게 복잡하지 않은 안드로이드 리액트 네이티브 앱을 iOS로 이식했습니다.그리고 3일이나 걸렸어요.앱용 iOS 버전에 대한 요청은 다소 갑작스럽고 계획되지 않은 움직임이었다.Android를 iOS용으로 구축하면 확실히 더 빠를 수 있습니다.대승리:

또 다른 큰 장점은 1주일간의 앱스토어 리뷰 과정을 거치지 않고 핫코드 푸시를 할 수 있다는 것이다.더 이상 "네, 앱이 승인되었습니다.풀어주자.오 쉬잇.치명적인 버그로 인해 앱이 계속 다운됩니다(수정 프로그램이 가동되기 전까지 최소 일주일간 계속됩니다).그리고 당신은 애플에게 그 과정을 가속화해 달라고 간청해야 합니다."이는 코드 베이스의 주요 부분이 JS로 작성되어 AppHub 또는 CodePush같은 툴을 사용하면 사용자에게 코드를 거의 즉시 배포할 수 있기 때문에 가능합니다.이것은 Apple에 의해 조건부로 허용됩니다.

3.3.2 애플리케이션은 실행 가능한 코드를 다운로드 또는 설치할 수 없다.인터프리터 코드는 모든 스크립트, 코드 및 인터프리터가 응용 프로그램에 패키지되어 다운로드되지 않은 경우에만 응용 프로그램에서 사용할 수 있습니다.위의 유일한 예외는 Apple의 내장 WebKit 프레임워크에 의해 다운로드되어 실행되는 스크립트와 코드입니다.이러한 스크립트 및 코드가 앱스토어에 제출된 어플리케이션의 의도 및 광고 목적에 부합하지 않는 기능을 제공함으로써 어플리케이션의 주요 목적을 변경하지 않는 한.

마지막으로 오픈소스 프로젝트에서는 프로젝트 지속 시간이 문제가 되는 경향이 있습니다.React Native에는 문제가 없습니다.(FB Ads Manager)가 내부적으로 사용하고 Facebook(FB 엔지니어 12명)이 지원하는 React Native는 500명에 가까운 기여자와 25k Stars로 생동감이 넘칩니다.본다는 것은 믿을 수 있다:) (https://github.com/facebook/react-native)


편집 1

나는 내가 약간 편견이 있다는 것을 깨닫고 리액트 네이티브에 대한 좋은 이야기만 했다.https://productpains.com/product/react-native/과 Github의 이슈를 통해 전체적인 그림을 볼 수 있습니다.확실히 은탄은 아니야.그렇다고 해도, 대부분의 유저 케이스를 만족시켜, iOS나 Android의 네이티브를 곧바로 사용할 수 있는 것은 아닙니다.

편집 2 Facebook이 출시한 Facebook F8 회의 앱은 100% 오픈 소스이며 iOS와 Android의 네이티브 체험(90%의 네이티브?)을 동시에 85%의 코드 재사용을 실현하는 매우 좋은 튜토리얼을 제공하고 있습니다.체크해주세요 --> https://makeitopen.com

편집 3 Flutter와 그 장단점을 체크할 수도 있습니다.

진정한 네이티브 익스피리언스를 원하신다면 단일 코드 베이스를 사용하는 것은 의미가 없습니다.지금 Navigator 같은 게 있어요.IOS in React Native는 앱 화면 사이를 이동하기 위한 iOS 스타일의 UI를 제공하지만 Android에서 사용하기 시작하면 진정한 Android 앱처럼 느껴지지 않습니다.

따라서 Navigator Android 컴포넌트 또는 이와 유사한 컴포넌트가 플랫폼 간에 다르게 동작하는 다양한 컴포넌트에 대해서도 표시됩니다.

여러분이 얻을 수 있는 한 가지 이점은 어떤 애플리케이션 로직(스토어 또는 백엔드 상호 작용)이든 JavaScript 파일에 쓰여지고 iOS와 Android에 모두 포함될 수 있다는 것입니다.

따라서 React Native는 개발자가 어디에서나 한 번 실행할 수 있는 환경을 제공하지는 않지만, 가능한 한 많은 재사용을 장려하면서 두 플랫폼 모두에서 최고 수준의 UI를 제공할 수 있는 솔루션을 기대합니다.또한 저는 여러 플랫폼에서 개발 및 출하할 수 있는 강력한 빌드 툴도 보고 싶습니다.

React Native for Android가 출시되었습니다. Android 폴더는 새 프로젝트를 만들 때 iOS 폴더와 함께 생성됩니다.

Navigator의 또 다른 힌트IOS가 언급되었습니다.Facebook은 Navigator의 코드를 실제로 유지하고 있지 않다.IOS. 대신 Navigator에 초점을 맞추고 있습니다.

네, 약 5백만 명의 등록 사용자로 운영 중입니다.

iOS에 조금 뒤처진 것도 있지만 빠르게 따라잡고 있습니다.타고 다니기에 좋은 마차입니다.

React Native는 iOS와 Android 모두에 도입할 수 있도록 설계되었습니다.물론 경고는 있다.

React Native는 iOS를 훨씬 더 오랫동안 지원해왔으며 최근에야 Android에 출시되었습니다.각 플랫폼에서 지원되는 항목에는 몇 가지 차이가 있습니다.

예를 들어, 텍스트에 테두리를 지정하면 iOS에는 표시되지만 Android에는 표시되지 않습니다.이 문제를 해결하려면 텍스트 주위에 보기를 배치하고 경계선을 적용해야 합니다.다행히 React Native를 사용하면 각 플랫폼에 대해 별도의 스타일시트를 쉽게 통합할 수 있습니다(또는 단일 스타일시트에 플랫폼별 스타일링도 가능합니다).

Android에 대한 지원은 계속 진화하고 있기 때문에 React Native for Android가 iOS와 동등한 수준이 되는 것은 시간문제입니다.그렇다고 해서 단념할 수는 없습니다.제 경험상, 두 플랫폼 모두 신속하게 개발할 수 있는 훌륭한 방법이며, 약간의 번거로움도 덜어줍니다.

Android와 IOS를 위해 별도의 코드 베이스를 유지할 필요가 없습니다.실제로 빌드 Android와 IOS에 동일한 코드 베이스를 사용할 수 있습니다.코드에 내장된 컴포넌트를 사용하기 전에 리액트 네이티브 매뉴얼(사용 중인 리액트 네이티브 버전에 따라)을 읽을 것을 권장합니다.예:- TextInput 컴포넌트 onKeyPress 함수는 IOS만을 지원합니다.

외부 lib 를 사용하고 있는 경우는, ios 와 Android 의 양쪽 모두의 lib 서포트를 체크합니다.어쨌든, 외부 lib 는 Android 와 IOS 의 양쪽 모두를 개별적으로(install) 설정할 필요가 있습니다.

이게 도움이 되길 바라.

언급URL : https://stackoverflow.com/questions/31297269/react-native-android

반응형