월 14,300원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결배달앱 클론코딩 [with React Native]
실제기기에서 테스트 과정에서
안녕하세요, 강좌의 내용대로 학습하고 테스트하는 과정에서 문제가 있어 질문 남깁니다. 가상 기기에서는 서버에 토큰도 잘 나오고, 회원가입 및 이후 단계 모두 정상적으로 작동하나 실제 기기(LG 스타일러스, android 7)를 연결하고, ip 변경 및 실제 연결 확인(adb devices)도 정상이고, metro에서는 기기의 토큰도 잘 나오는 것을 확인했으나, 서버에서는 가상기기처럼 기기의 토큰 정보가 나오지 않아 회원가입도 안되는 걸로 확인됩니다. 어떤 부분을 확인해야 이 문제를 해결할 수 있을지 도움 받고 싶습니다 감사합니다.
- 해결됨배달앱 클론코딩 [with React Native]
질문있습니다!
질문1. 리액트 노드버드 툴킷과 이번 강의에서 리덕스 툴킷 사용법에 차이가 있더라구요. 노드버드에서는 예를 들어 login을 한다고 했을 시 dispatch로 보내주고 action폴더가 따로 있어서 action파일에서 백앤드 요청후 response를 받고 reducer폴더에서 pending. fulfilled, rejected에 따라 상태가 변하더라구요. 그런데 이번 프로젝트에서는 로그인시 먼저 axios로 api 백앤드 요청을 다이렉트로 한다음 백에서 받아온 response를 다시 dispatch하고 바로reducer폴더에서 상태관리를 시켜주더라구요. 여기서는 pending. fulfilled, rejected도 없더라구요? 이번 프로젝트에서는 리덕스 툴킷의 사용량이 적어서 이런방식을 적용하신건가요? 아니면 이번 방법이 더 효율적이라서 그렇게 하신건지 궁금합니다!. 딱히 실무에서 pending. fulfilled, rejected를 적용할 필요가 없는것인가요? 질문2. 리덕스는 램같은 것이어서 보안에 민감한 데이터를 넣어놔도 된다고 하셨는데, 해커들은 리덕스의 상태와 데이터를 못보나요? 또한 예를들어 실무에서는 리덕스에 어떤 보안에 민감한 데이터를 저장하는 궁금합니다!
- 미해결배달앱 클론코딩 [with React Native]
로그인 '비밀번호' 데이터 처리에 대한 질문입니다.
강의 시청 중 궁금한 점이 있어서 질문 드립니다. 앱 '비밀번호'를 암호화해서 서버(스프링)와 통신하는 방법은어떤 방법이 있을까요?(실무에서요) -웹을 예로 들면, RSA 암호화를 사용하여 웹 클라이언트와 서버(스프링)가 통신 시, 비밀번호를 암호화를 해서 사용할 수 있는데요~ -앱에서는 서버(스프링)과 통신 시, 비밀번호를 어떻게 암호화 해서 처리하는지 궁금합니다. (실무에서요) 앱에서 RSA 암호화를 사용한다면... 일단 처음에 서버에서 키값을 가져와야하는데요. 웹과 비슷하게 구성해서 하면 되나요? -제가 앱 개발을 해보지 않아서... 감이 없습니다~^^;;; 실무에서 어떻게 처리하시는지 궁금합니다~
- 미해결배달앱 클론코딩 [with React Native]
which javac
안녕하세요 제로초님! Git Bash에서 which javac를 쳤더니 경로에 bin이 포함되지 않는 /c/Program Files/Common Files/Oracle/Java/javapath/javac 가 뜹니다. 이럴때 JAVA_HOME 환경변수는 그냥 이 경로 전체를 붙여넣으면 될까요? 감사합니다!
- 미해결배달앱 클론코딩 [with React Native]
react-native-nmpa ios 빌드 오류
안녕하세요 강사님 강의 잘 보고 있습니다!! react-native-nmap 설치하는 과정에서 android는 잘 동작하는데 ios는 빌드 오류가 납니다. Podfile에 pod 'NMapsMap'도 넣어주고 xcode에서 bundle id까지 수정했는데 이런 오류가 납니다. ㅠ 노트북은 macbook m1 air를 사용하고 있습니다. // 터미널 문구 info Found Xcode workspace "FoodDeliveryApp.xcworkspace" info Building (using "xcodebuild -workspace FoodDeliveryApp.xcworkspace -configuration Debug -scheme FoodDeliveryApp -destination id=4BDB24A8-2FAC-4B60-B43D-208AB82BE481") error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening FoodDeliveryApp.xcworkspace. Command line invocation: /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace FoodDeliveryApp.xcworkspace -configuration Debug -scheme FoodDeliveryApp -destination id=4BDB24A8-2FAC-4B60-B43D-208AB82BE481 User defaults from command line: IDEPackageSupportUseBuiltinSCM = YES note: Using new build system note: Planning Analyze workspace Create build description Build description signature: 45f1ce7cd1236994427031452d16ebc3 Build description path: /Users/a/Library/Developer/Xcode/DerivedData/FoodDeliveryApp-bhfyfhetxyujlxbhakmqeeloavkh/Build/Intermediates.noindex/XCBuildData/45f1ce7cd1236994427031452d16ebc3-desc.xcbuild note: Build preparation complete note: Building targets in dependency order /Users/a/Documents/inflearn/FoodDeliveryApp/ios/FoodDeliveryApp.xcodeproj: error: The linked library 'libPods-FoodDeliveryApp.a' is missing one or more architectures required by this target: x86_64. (in target 'FoodDeliveryApp' from project 'FoodDeliveryApp') objc[29745]: Class AMSupportURLConnectionDelegate is implemented in both /usr/lib/libamsupport.dylib (0x203f87678) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x1088342c8). One of the two will be used. Which one is undefined. objc[29745]: Class AMSupportURLSession is implemented in both /usr/lib/libamsupport.dylib (0x203f876c8) and /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x108834318). One of the two will be used. Which one is undefined. ** BUILD FAILED **
- 미해결배달앱 클론코딩 [with React Native]
회원가입 로직 질문입니다~!
강사님~ SignUp.tsx에서 로직부분에 질문이 있습니다. try { setLoading(true); const response = await axios.post( `${Config.API_URL}/user`, { email, name, password } ); Alert.alert('알림', '회원가입이 완료되었습니다.'); navigation.navigate('SignIn'); } catch (error) { const errorResponse = (error as AxiosError).response; if (errorResponse) { Alert.alert('알림', errorResponse.data.message); } } finally { setLoading(false); } }, [navigation, loading, email, name, password]); 위 코드를 실행했더니 회원가입이 될때 이런 경고가 나왔습니다. 언마운트된 컴포넌트(SignUP)의 state를 바꿀 수 없다는 얘기인데, 애뮬레이터에서 경고창 눌러보니 finally { setLoading(false); } 이 부분이 문제더라구요. 그래서 finally는 비워두고 catch절에만 setLoading(false); 을 두고 실행했더니 잘 작동합니다. 질문 두가지입니다. 1. 회원가입이 완료되면 화면이 바뀌니 제가 한대로 catch절에만(실패했을때) setLoading(false);를 넣는게 맞는 방법일까요? 2. 1번대로 하든 기존의 로직대로 하든, 회원가입이 완료되면 loading state는 true로 남아있는거라고 보면 될까요?(1번대로 하면 loading을 바꾸지 않고 화면이동, 기존의 로직대로 하면 경고 발생) Stack Navigator을 쓰면 '회원가입'과 '로그인' 화면을 쌓아두고 호출하는 것을 위로 보여주는 것으로 알고 있습니다. 강사님께서 컴포넌트의 state는 유지될 수도 있고 안될수도 있다고 하셨는데 이것과 관련하여 2번이 조금 헷갈립니다..! 도움 부탁드립니다..!
- 미해결배달앱 클론코딩 [with React Native]
cocoapods 에러 질문입니다...
1. 먼저 cocoapods 을 설치했습니다. 설치 후 목록입니다. 정상적으로 설치가 된 것으로 보입니다. ㅜㅜㅜㅜ 그런데 프로젝트 init 을 진행하면 자꾸 cocoapods 이 설치되어 있지 않다고 설치하고 뜨네요.. 여기서 gem 으로 설치를 진행하면 다음과 같이 뜨고, cd ./FoodDeliveryApp/ios && pod install 이 명령어를 입력해도...workspace 파일이 보이지 않는걸 보니 근본적인 해결책이 아닌거 같습니다... 이러한 현상은 어떻게 해결하면 좋을까요?ㅠ 한 두시간 정도 구글링을 해보아서 gem list 에 있는 cocoapods 을 전부 제거해주고 재 설치를 해도 이렇고 마찬가지로 다 삭제후 brew 로 설치해도 똑같은 현상이 발생합니다... cocoapods 은 잘 설치되어있는거 같은데 init 을 하면 설치되지 않았다고 하는지 모르겠어요..ㅠㅠ (참고로 제 맥북은 m1 이 아니라 인텔입니다..!)
- 해결됨배달앱 클론코딩 [with React Native]
iOS 환경에서 ch2까지 진행 후 로그인 및 회원 가입 과정 진행 안되는 문제
안녕하세요, 앱 개발 공부를 위해 수강중인 사람입니다. Mac 환경에서 작업 중이고, iOS, Android 두 곳에서 모두 사용할 앱을 만들기 위해 공부중인데, 강의 내에서 사용 중인 코드를 그대로 입력 후 실행을 하니, Android에서는 정상적으로 잘 되는 것 같은데, iOS에서는 회원가입 버튼을 눌러도 무한로딩이 걸리고 시간이 지나면 console.error : undefined라는 에러가 발생합니다. 로그인을 누르면 로딩이 걸리다가 다시 로그인 글자가 보이고 다음 화면으로 넘어가지 않습니다.. 어느 부분을 해결해야 Android와 동일하게 작동하는 지 말씀을 듣고 싶습니다. https://github.com/munsangu/RNSTUDY 위의 주소는 강의 내용대로 작성중인 코드입니다! 감사합니다!
- 해결됨배달앱 클론코딩 [with React Native]
질문 있습니다!
안녕하세요 제로초님! 질문있습니다! 질문1. .env에 비밀번호나 중요한 것을 넣어두면 안된다고 하셨는데 그러면 AWS S3 SECRET ACCESS KEY나 FIREBASE API KEY같은것도 넣어두면 안되나요?... 안된다면 어디에 저장하는게 좋나요? 질문2. refreshToken은 회사마다 다르지만 유효기간이 보통 1일,30일 1년정도 라고 하셨는데, 카카오톡이나 인스타그램 혹은 배달의 민족같은 경우 1년이 지나도 계속 로그인 되어 있잖아요? (다시 로그인할 필요 없이) 이런경우는 보통 refreshtoken의 유효기간을 무한대로 설정한 경우인가요? 아니면 예를들어 refreshToken의 유효설정이 1일이어서 refreshToken의 유효기간이 만료되었다고 가정했을 시 로그인이 해제되지 않게 하면서 발급해주는 방법이 있는것인가요?... 어떻게 하는걸까요? 궁금합니다!
- 미해결배달앱 클론코딩 [with React Native]
맥(m1) ios에서 react-native-nmap 추가 후, 오류가 발생하는데 해결 방법이 없을까요?
안녕하세요~ 네이버 맵 라이브러리를 추가하고 시뮬레이터에서 아래의 빌드에러가 발생하고 있습니다. (ios만 에러) 검색을 통해 해결하려고 했지만... ^^;;; (git-lfs도 설치 했으며, pod install --repo-update 실행, pod 'NMapsMap','3.14.1' 추가 등) 도저히 해결방법을 찾을 수 없어 질문을 남깁니다. -맥: m1 macbook air ** BUILD FAILED ** The following build commands failed: Ld /Users/sim/Library/Developer/Xcode/DerivedData/gyeryongdeliveryapp-fxicpyojtyyylwfbbvatfzocwczb/Build/Products/Debug-iphonesimulator/gyeryongdeliveryapp.app/gyeryongdeliveryapp normal (in target 'gyeryongdeliveryapp' from project 'gyeryongdeliveryapp') (1 failure) 저와 비슷한 증상을 겪고 있으신분들이 있는 것 같습니다. https://github.com/QuadFlask/react-native-naver-map/issues/132 혹시 해결 방안이 있을까요?
- 미해결배달앱 클론코딩 [with React Native]
안녕하세요~ typescript template 관련 질문입니다.
저번에도 typescript template를 포함한 프로젝트 생성에 관해서 질문 드렸었는데요.. 결국 해결하지 못해 manual로 생성하는 방법을 구글링을 통해 알게 되었습니다. 그 방법이 일단 react-native init 로 프로젝트를 생성 후 1. npm install typescript @types/react @types/react-native --save-dev 2.프로젝트 root 폴더에 tsconfig.json 파일 생성 후 다음과 같이 내용을 채워주는 것입니다. { "compilerOptions": { "allowJs": true, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "isolatedModules": true, "jsx": "react", "lib": ["es6", "es2017"], "moduleResolution": "node", "noEmit": true, "strict": true, "target": "esnext", "skipLibCheck": true }, "exclude": ["node_modules", "babel.config.js", "metro.config.js", "jest.config.js"] } 이런식으로 typescript 프로젝트를 생성해도 native 단까지 처리 할 수 있을까요?
- 미해결배달앱 클론코딩 [with React Native]
제로초님 안녕하세요 안드로이드 스튜디오 프로젝트 생산 시 질문입니다.
프로젝트 생산 시 설정은 어떻게 해야 하나요 ? 강의에서 그냥 넘어가 버리셔가지고 잘 모르겠습니다.
- 미해결배달앱 클론코딩 [with React Native]
질문있습니다!
안녕하세요. 제로초님 질문1. 리액트네이티브에서는 stylesheet에서는 dip가 가능하다고 하셨는데 styled-components에서는 안되는것 같더라구요 styled-components에서는 dip대신 어떤걸 사용하는 편인가요?...(기기마다 해상도가 다르기 때문에 dip를 사용하는걸로 알고있습니다.) 질문2. absolute와 relative에 대해서 배웠는데요! 만약 position을 아무것도 정해주지 않았을 시 기본값은 무엇으로 되나요?
- 해결됨배달앱 클론코딩 [with React Native]
안녕하세요 navigation.push 성능에 대해 질문드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 유튜브에서 강의를 듣고 인프런으로 넘어왔습니다 좋은 강의 감사드립니다 navigation.push를 쓰면서 성능 저하를 겪고 있습니다. 1. push 를 썼을 때, 지나온 스크린들의 갯수 상관없이 성능 저하가 안 일어나게 하는 방법이 있을까요? 2. 아니면, 제가 앱 구조를 잘 못 잡은 걸까요? 아래는 제가 현재 만들고 있는 앱 구조 설명과 push를 사용했을 때 찍은 로그에 대한 내용입니다. 앱 최초 진입 시에, 홈화면이 최초로 보입니다. 거기에 있는 a컴포넌트 ( 버튼이라 생각하셔도 됩니다 ) 를 클릭하면, 상품의 상세 화면(Post-detail, Post-detail은 지도도 있고, 비메오 영상도 있습니다.)을 보여주는 스크린으로 push 를 써서 이동합니다. 위 Post-detail 스크린은, 연관 상품을 보여주기 위해, 하단부에 다시 a컴포넌트를 재사용하고 있습니다. a컴포넌트를 누르면 다시 Post-detail로 이동하는 구조입니다 navigate가 아니라, 왜 push를 썼냐면, 유저 입장에서 스크린을 이동했을 때, 이동한 모든 스크린을 기록하기 위함이었습니다. 근데, 스택이 쌓일 수록, 성능 저하가 체감될 정도로 더뎌지는 게 보였습니다. Post-detail에 ``` const refCount = useRef(0); ... console.log(refCount.current++); return ( ... ) ``` 위처럼 코드를 작성하면, 콘솔에는 1 부터 숫자가 차례대로 올라가는 것이 아니라, 진입했던 각 Post-detail의 refCount에서 출발을 하더라구요. 예를들어, 1번째 Post-detail -> refCount = 1 (1번 Post-detail에서 a 컴포넌트 눌러서 2번째 Post-detail로 이동) 2번째 Post-detail -> refCount = 1 그리고 1번째 Post-detail 의 refCount = 2 가 찍힙니다 push로 했던 것을 navigate로 바꿨을 경우엔, route 객체를 찍어보니, 데이터 자체가 교체되는 식으로 바뀌더라구요. 그래서 최초에 홈화면에서 a컴포넌트를 누르면 navigate를 통해 Post-detail로 진입하고, 그 후에 a 컴포넌트를 눌러도 새로운 Post-detail 스택으로 이동하는 것이 아니라, 이미 열려져 있는 Post-detail 화면에서 데이터가 교체되는 걸로 보였습니다. 제가 해결하려했던 방식을 설명드리면, 리덕스에 현재 눈으로 보고 있는 스크린의 이름과 정보 몇개를 가져다놓고, push로 이동할떄마다 리덕스에 있는 데이터와 현재 스크린의 데이터를 비교해서, 현재 눈으로 보고 있는 스크린 외에는 전부 렌더링이 안 일어나게 코드를 짰었습니다. 이러니까, 뒤로가기를 시도했을 경우, 지나온 Post-detail 의 데이터가 아예 없어서, 텅 빈화면이 있었습니다.
- 미해결배달앱 클론코딩 [with React Native]
혹시 ios splash-screen 은 영상이 없는건가요?
안녕하세요 제로초님 ~ 영상 잘보고있습니다 splash-screen 안드로이드는 잘 따라햇는데 ios 영상은 없는것 같아서 여쭤봅니다
- 미해결배달앱 클론코딩 [with React Native]
TextInput의 onChangeText
안녕하세요 강의 열심히 듣고 있는 코린이입니다. 궁금한것이 있어서 질문을 남깁니다. 이메일부분에서 TextInput의 onChangeText를 강사님은 따로 함수(onChangeEmail)를 만들어서 넣어줬는데 onChangeText에 바로 setEmail를 넣어주는 것이랑 동작하는 일은 비슷해보이는데 성능적으로 어떠한 차이점이 있을까요? // SignIn.tsx ... // 강사님 코드 const [email, setEmail] = useState(''); const onChangeEmail = useCallback(text => { setEmail(text); }, []); <TextInput placeholder="이메일을 입력해주세요." onChangeText={onChangeEmail} /> // 궁금한 코드 const [email, setEmail] = useState(''); <TextInput placeholder="이메일을 입력해주세요." onChangeText={setEmail} /> ...
- 미해결배달앱 클론코딩 [with React Native]
apk, aab 부분 관련 오류입니다.
안녕하십니까 제로초님. 항상 강의 잘 듣고 있습니다. 우여곡절 끝에 여기까지 왔는데 apk, aab 추출하는 부분에서는 도저히 해결책을 못찾을 거 같아서 질문드립니다. 우선 에러는 위와 같고 제 build.gradle은 다음과 같습니다. apply plugin: "com.android.application" apply plugin: 'com.google.gms.google-services' apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle" import com.android.build.OutputFile /** * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets * and bundleReleaseJsAndAssets). * These basically call `react-native bundle` with the correct arguments during the Android build * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the * bundle directly from the development server. Below you can see all the possible configurations * and their defaults. If you decide to add a configuration block, make sure to add it before the * `apply from: "../../node_modules/react-native/react.gradle"` line. * * project.ext.react = [ * // the name of the generated asset file containing your JS bundle * bundleAssetName: "index.android.bundle", * * // the entry file for bundle generation. If none specified and * // "index.android.js" exists, it will be used. Otherwise "index.js" is * // default. Can be overridden with ENTRY_FILE environment variable. * entryFile: "index.android.js", * * // https://reactnative.dev/docs/performance#enable-the-ram-format * bundleCommand: "ram-bundle", * * // whether to bundle JS and assets in debug mode * bundleInDebug: false, * * // whether to bundle JS and assets in release mode * bundleInRelease: true, * * // whether to bundle JS and assets in another build variant (if configured). * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants * // The configuration property can be in the following formats * // 'bundleIn${productFlavor}${buildType}' * // 'bundleIn${buildType}' * // bundleInFreeDebug: true, * // bundleInPaidRelease: true, * // bundleInBeta: true, * * // whether to disable dev mode in custom build variants (by default only disabled in release) * // for example: to disable dev mode in the staging build type (if configured) * devDisabledInStaging: true, * // The configuration property can be in the following formats * // 'devDisabledIn${productFlavor}${buildType}' * // 'devDisabledIn${buildType}' * * // the root of your project, i.e. where "package.json" lives * root: "../../", * * // where to put the JS bundle asset in debug mode * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", * * // where to put the JS bundle asset in release mode * jsBundleDirRelease: "$buildDir/intermediates/assets/release", * * // where to put drawable resources / React Native assets, e.g. the ones you use via * // require('./image.png')), in debug mode * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", * * // where to put drawable resources / React Native assets, e.g. the ones you use via * // require('./image.png')), in release mode * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", * * // by default the gradle tasks are skipped if none of the JS files or assets change; this means * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to * // date; if you have any other folders that you want to ignore for performance reasons (gradle * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ * // for example, you might want to remove it from here. * inputExcludes: ["android/**", "ios/**"], * * // override which node gets called and with what additional arguments * nodeExecutableAndArgs: ["node"], * * // supply additional arguments to the packager * extraPackagerArgs: [] * ] */ project.ext.react = [ enableHermes: true, // clean and rebuild if changing ] apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native-code-push/android/codepush.gradle" /** * Set this to true to create two separate APKs instead of one: * - An APK that only works on ARM devices * - An APK that only works on x86 devices * The advantage is the size of the APK is reduced by about 4MB. * Upload all the APKs to the Play Store and people will download * the correct one based on the CPU architecture of their device. */ def enableSeparateBuildPerCPUArchitecture = true /** * Run Proguard to shrink the Java bytecode in release builds. */ def enableProguardInReleaseBuilds = true /** * The preferred build flavor of JavaScriptCore. * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' /** * Whether to enable the Hermes VM. * * This should be set on project.ext.react and that value will be read here. If it is not set * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode * and the benefits of using Hermes will therefore be sharply reduced. */ def enableHermes = project.ext.react.get("enableHermes", false); /** * Architectures to build native code for in debug. */ def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") android { ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortError false } defaultConfig { applicationId "com.y2gcoder.fooddeliveryapp" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 2 versionName "0.0.5" resValue "string", "build_config_package", "com.y2gcoder.fooddeliveryapp" } splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } release { if (project.hasProperty('RELEASE_STORE_FILE')) { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } } } buildTypes { debug { signingConfig signingConfigs.debug if (nativeArchitectures) { ndk { abiFilters nativeArchitectures.split(',') } } } release { // Caution! In production, you need to generate your own keystore file. // see https://reactnative.dev/docs/signed-apk-android. signingConfig signingConfigs.release minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } // applicationVariants are e.g. debug, release applicationVariants.all { variant -> variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } } } dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" // From node_modules implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" implementation 'com.naver.maps:map-sdk:3.14.0' implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') implementation files('libs/com.skt.Tmap_1.70.jar') debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { exclude group:'com.facebook.fbjni' } debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { exclude group:'com.facebook.flipper' exclude group:'com.squareup.okhttp3', module:'okhttp' } debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { exclude group:'com.facebook.flipper' } implementation platform('com.google.firebase:firebase-bom:29.1.0') implementation 'com.google.firebase:firebase-analytics' if (enableHermes) { def hermesPath = "../../node_modules/hermes-engine/android/"; debugImplementation files(hermesPath + "hermes-debug.aar") releaseImplementation files(hermesPath + "hermes-release.aar") } else { implementation jscFlavor } } // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use task copyDownloadableDepsToLibs(type: Copy) { from configurations.implementation into 'libs' } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 나름 제로초님이 올려주신 깃헙과 구글링을 해봤는데, 네이티브 쪽을 모르다 보니 쉽게 해결할 수가 없습니다. 혹시 이러한 문제를 겪어보신 적 있으십니까?
- 미해결배달앱 클론코딩 [with React Native]
flipper에서 React DevTools 실행시 에러
강사님~ 메트로 서버 켜고 플리퍼를 실행했습니다. 강의 내용 처럼 React DevTools를 보려고 했는데 아래 사진과 같은 에러메시지가 뜹니다..! 인터넷 검색을 해보니 자료가 그렇게 많지는 않더라구요. 어떤 글에서는 react-devtools 버전 문제라고 써있는데 정확하게 이해가 안되서요.. 혹시 이럴땐 어떻게 하면 될까요..!?
- 미해결배달앱 클론코딩 [with React Native]
npx react-native init AwesomeTSProject --template react-native-template-typescript 문제
안녕하세요~ npx react-native init AwesomeTSProject --template react-native-template-typescript 이렇게 프로젝트를 생성하면 아래와 같이 에러가 발생합니다. 구글링으로 검색해서 npm uninstall -g react-native-cli 이런식으로 cli를 지우고 다시 npm i -g @react-native-community/cli 이렇게 설치를 했습니다. 그런데도 같은 에러가 발생하는데 이유를 모르겠습니다. ㅠㅠ 살려주세요.!!
- 미해결배달앱 클론코딩 [with React Native]
xcode에서 workspace파일이 보이지 않습니다.
강사님 프로젝트를 신규 생성하고 xcode에서 Open a project or file을 클릭, 플젝 루트에서 workspace파일을 찾았는데 보이지가 않습니다. 아래 사진처럼 나옵니다. 프로젝트 설치했던 내용은 다음과 같습니다. npm i -g react-native npx react-native init FoodDeliveryApp --template react-native-template-typescript 설치 진행 중 cocoapod 설치 안됬으니 하라고 나오더라구요. sudo랑 brew로 설치하는 두 옵션 있어서 sudo로 했는데 실패했습니다(코코아팟 설치 문의 내용과 동일). 이 상태에서 xcode로 파일을 열려고 했습니다. workspace가 안나오는게 코코아팟이 설치가 안되서일까요..? 아니면 다른 원인일까요.?