React Native νκ²½ μ ν κ³Ό νΈλ¬λΈ μν
νκ²½μΈν
μ€μΉ
brew install node
brew install watchman
brew install --cask adoptopenjdk/openjdk/adoptopenjdk8Android
1. μλλ‘μ΄λ μ€νλμ€ μ€μΉ
μλλ‘μ΄λ μ€νλμ€ λ₯Ό μ€μΉνκ³ μλ νλͺ©λ€μ 체ν¬ν΄μ€λ€.
- Android SDK
- Android SDK Platform
- Android Virtual Device
2. Android SDK μ€μΉ
μλλ‘μ΄λ μ€νλμ€ SDK Managerμμ Android 10.0 λ²μ μ 체ν¬νμ¬ μ€μΉν΄μ€λ€.
- Inter x86 Atom_64 System Image or Google APIs Inter x86 Atom System Image
βSDK Toolsβ νμΌλ‘ μ΄λνμ¬ μλ λκ°μ§ νλͺ©μ 체ν¬ν ν Apply ν΄μ€λ€.
- βAndroid SDK Build-Toolsβ 29.0.2
- βAndroid SDK Command-line Tools (latest)β
3. ANDROID_HOME νκ²½ λ³μ
vi ~/.zshrcexport ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-toolsμλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ νκ²½λ³μκ° μ μ§μ λμλμ§ νμΈνλ€.
source ~/.zshrc
echo $ANDROID_HOMEλͺ λ Ήμ΄λ€
μν νμΈ
μλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ νκ²½ μΈν μ΄ μλμλμ§λ₯Ό νμΈν μ μλ€.
npx @react-native-community/cli doctor[μ€ν κ²°κ³Ό]
νλ€
μ€ν μ€λ₯
yrun λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μ€ν μ μ€λ₯λλ μν©μ μ νλ©΄ λ¨Όμ Xcodeλ Android Studioλ₯Ό ν΅ν΄ ν΄λΉ λλ ν 리λ₯Ό μ΄μ΄ λΉλ ν μμΈμ μ°Ύλ κ²μ΄ λΉ λ₯΄κ³ μΉμ νλ€.
No bundle URL present
iOS λλ°μ΄μ€μμ No bundle URL present μλ¬κ° λ°μν κ²½μ° νλ‘μ νΈ λ£¨νΈ λλ ν 리μμ λ€μ λͺ
λ Ήμ μ€νν΄ iOS λΉλ λλ ν 리λ₯Ό μμ νκ³ μΈμ
(8081 ν¬νΈ)μ μμ νλ€.
rm -rf ios/build/; kill $(lsof -t -i:{PORT}); react-native run-iosOptional
λ€μ λͺ
λ ΉμΌλ‘ Bash ꡬμ±νμΌ .bashrcμ μΆκ°νμ¬ μ΄λ¬ν μ€λ₯κ° λ°μνμ§ μλλ‘ νλ€.
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrcAndroid μ€ν μ€λ₯
General error during semantic analysis: Unsupported class file major version 60μμΈ
μ μ€λ₯μ μμΈμ jdk λ²μ μ΄ μ§μλμ§ μλ λ²μ μ΄λΌμ λ°μνλ€. jdk μ¬λ¬ λ²μ μ΄ μ€μΉ λμ΄μλ κ²½μ° λ²μ μ λͺ μν΄μ£Όμ§ μμΌλ©΄ μ΄λ° μ€λ₯κ° λ°μν μ μλ€. (μ΄λμ κ²½μ° jdk 16 λ²μ μΌλ‘ μ§μ λμ΄ μμλ€.)
ν΄κ²°
- μ€μΉλμ΄μλ jdk λ²μ νμΈ
/usr/libexec/java_home -V
Matching Java Virtual Machines (3):
16.0.2 (x86_64) "Oracle Corporation" - "OpenJDK 16.0.2" /Users/jigeol/Library/Java/JavaVirtualMachines/openjdk-16.0.2/Contents/Home
15.0.4 (x86_64) "Azul Systems, Inc." - "Zulu 15.34.17" /Users/jigeol/Library/Java/JavaVirtualMachines/azul-15.0.4/Contents/Home
1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Users/jigeol/Library/Java/JavaVirtualMachines/openjdk-16.0.2/Contents/Home- jdk λ²μ λ³κ²½
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)- λ³κ²½λ λ²μ νμΈ
java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)React Native Absolute imports
// AS-IS
import foo from '../../../../../foo';
// TO-BE
import foo from 'src/foo'- ν¨ν€μ§ μ€μΉ
ya -D babel-plugin-module-resolverbabel.config.ts
plugins: [
[
'module-resolver',
{
root: ['.'],
extensions: [
'.ios.ts',
'.android.ts',
'.ts',
'.ios.tsx',
'.android.tsx',
'.tsx',
'.jsx',
'.js',
'.json',
],
alias: {
'@src': './src',
},
},
],tsconfig.json
"baseUrl": "./src",
"paths": {
"@src/*": ["./*"]
}, - μΊμ λΉμ°κ³ μ¬μμ
yst --reset-cacheReact Native μ± μ΄λ¦ λ³κ²½
app.jsonνμΌ μμ
{
"displayName": "{APP_NAME}"
}strings.xmlνμΌ μμ
<string name="app_name"> { APP_NAME }</string>Info.plistνμΌ μμ
<key>CFBundleDisplayName</key>
<string>{APP_NAME}</string>ScrollView VS FlatList
μ± κ°λ°μ νλ©° μ€ν¬λ‘€λλ μ€ν¬λ¦°μ κ°λ°ν΄μΌνλλ° React Native ScrollView λ¬Έμλ₯Ό 보λ FlatListλΌλ κ²λ μλ€λ μ¬μ€μ μκ² λμμ΅λλ€.
λ¬Έμμμ μκ°νκ³ μλ λ΄μ©μΌλ‘λ ScrollViewλ νκΊΌλ²μ λͺ¨λ νμ ꡬμ±μμλ₯Ό λ λλ§ νκΈ° λλ¬Έμ μ½ν
μΈ κ° λ§μ μ€ν¬λ¦°μ κ²½μ° λΆνκ° μκΈΈ μ μλ€κ³ ν©λλ€. (λ λλ§ μλ λλ €μ§, λ©λͺ¨λ¦¬ μ¬μ©λ μ¦κ°)
λ°λ©΄ FlatListλ νλͺ©μ΄ λνλμΌ νλ μμ μ λ‘λ©μ νκ³ λ©λͺ¨λ¦¬μ μ²λ¦¬ μκ°μ μ μ½νκΈ° μν΄ νλ©΄μ 보μ΄μ§ μλ μμλ€μ μ κ±°νλ€κ³ ν©λλ€.
Firebase μ€μ μ€ μ½μ§
GoogleService-Info.plistNot Found
μ΄κ² λλ¬Έμ μ½μ§ μ΄ν .. Xcodeμμ βAdd Files to {PROJECT}βλ‘ μ λ£μ΄μ€¬λλ°λ μκΎΈ μ°Ύμ μ μλ€λ©° Crash λλ€.
/ios λ£¨νΈ κ²½λ‘μ λ£μ΄μ€ λΏλ§ μλλΌ Build Phases > Compile Sources μλ μ λ€μ΄κ° μλμ§ νμΈν΄μΌ νλ€.