์ฒซ ๋ฒ์งธ ์น์ ์ ์ฝ์ ๋๊น์ง ์ด ํ ํ๋ฆฟ์ ์ญ์ ํ์ง ๋ง์ญ์์ค.
๋ด ์์คํ ์์ ์ผ๋ฐ Awesome Project๋ฅผ ์คํํ๋ ๋์ ์ง๋ฉดํ ๋ฌธ์ ์ ๋๋ค.
"์"๋ผ๊ณ ๋ตํ ๊ฒฝ์ฐ: ๊ณ ํ์ง ๋ฒ๊ทธ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ๋ฐ ์ฝ 30๋ถ์ด ์์๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ง์ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ๋ฌธ์ ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ๋ฌธ์ ๋ฅผ ๋ ๋นจ๋ฆฌ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ฒ๊ทธ ๋ณด๊ณ ์์ ๊ฒฝ์ฐ ์ด ํ ํ๋ฆฟ์ ๋๋จธ์ง ๋ถ๋ถ์ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. "์๋์"๋ผ๊ณ ๋ตํ ๊ฒฝ์ฐ: React Native์ ๋ฒ๊ทธ ์ถ์ ์๋ง GitHub ๋ฌธ์ ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋์์ด ํ์ํ ๊ฒฝ์ฐ ์ปค๋ฎค๋ํฐ ํ์ด์ง(http://facebook.github.io/react-native/support.html)์ ์์ํ๋ ๋ฐ ๋์์ด ๋๋ ๋ค์ํ ๋ฆฌ์์ค๊ฐ ๋์ด๋์ด ์์ต๋๋ค. ์ด์ ์๋๋ก ์คํฌ๋กคํ์ญ์์ค!๋ค
react-native -v
: 0.47.1node -v
:8.2.1npm -v
:4.1.2yarn --version
:๊ทธ๋ฐ ๋ค์ ๋ค์์ ์ง์ ํฉ๋๋ค.
(์ฌ๊ธฐ์ ๋จ๊ณ๋ฅผ ๊ธฐ๋กํ์ธ์.)
1. ๊ด๋ฆฌ์ ๋ชจ๋์์ ๋ช
๋ น ํ๋กฌํํธ ์ด๊ธฐ
2. ์คํ ๋ช
๋ น: cd
3.run ๋ช
๋ น: react-native init
4. ์คํ ๋ช
๋ น: cd
5.run ๋ช
๋ น์ด: react-native run-android
์ด๋ ๊ฒ ํ๋ฉด ํจํค์ง ์๋ฒ๊ฐ ํฌํธ 8081์์ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ํ์ง๋ง ์ปดํจํฐ์ ๋ชจ๋ฐ์ผ์ ๋ธ๋ผ์ฐ์ ์์ ํจํค์ง ์๋ฒ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋๋ http://๋ฅผ ์ฌ์ฉํด ๋ณด์๋ค.
http://localhost :ํฌํธ
http://127.0.0.1 : ํฌํธ
=> ๋ชจ๋ฐ์ผ๊ณผ ์๋ฎฌ๋ ์ดํฐ ๋ชจ๋์์ ๋ค์ ๋ฉ์์ง์ ํจ๊ป ๋นจ๊ฐ์ ํ๋ฉด์ด ๋ํ๋ฉ๋๋ค.
์ค์ ์ฅ์น์ ์๋ฎฌ๋ ์ดํฐ์์ ํ๋ก์ ํธ๋ฅผ ์คํํด ๋ณด์์ต๋๋ค. ๋ ๋ค์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. "์์ฐ 'index.android.bundle'์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ฒ๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ํจํค์ง๋์๋์ง ํ์ธํ๊ฑฐ๋ ํจํค์ง ์๋ฒ๋ฅผ ์คํํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.'
๋ค์ ๋ก๋ํ๋ฉด "๊ฐ๋ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค." ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ ๋ค์ ๊ฐ๋ฐ ์ค์ ์์ ํธ์คํธ์ ํฌํธ ๋ฒํธ๋ฅผ ์ค์ ํ๋๋ฐ "๊ฐ๋ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค."๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํ๋ก์ ํธ๋ ์ค๋ฅ ์์ด ์๋ฎฌ๋ ์ดํฐ์ ์ ํ์์ ์คํ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ฌ๋ฌ ๋ฒ ์๋ํ์ง๋ง ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋์ผํ ํจํด์ผ๋ก ๋ฐ์ํฉ๋๋ค.
(๋ฌธ์ ๋ฅผ ์ฌํํ๊ธฐ ์ํด ์์ ํ๋ก์ ํธ์ ๋ํ ๋งํฌ์ ์ ํํ ์ง์นจ์ ๋ถ์ฌ๋ฃ์ต๋๋ค.)
์ฌ์ ํ ๋ฌธ์ :
๋ฐ์ 16.0.0-alpha.6
RN 0.44.3
๋
ธ๋ 8.2.1
npm 5.3.0
์์ค์ฝ๋ 8.3.3
iOS 10.3 ์๋ฎฌ๋ ์ดํฐ
๊ทธ๋ ๋ค๋ฉด ์ด์ ๋ฒ์ ์์ ์์ ํด์ผ ํฉ๋๊น?
์ด๊ฑธ ๋ง๋๋ ๊ฐ๋น์ด ์ ๋๋ค....
์ต์ ๋ฒ์ ์ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
ํจํค์ง ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์
๋๊น? react-native run-android
์คํํ ๋ ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. react-native start
๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด์ ์ผ๋ก ์์ํ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ํจํค์ง ํ๋ก๊ทธ๋จ์ด ์ ํ ์์๋์ง ์๋ ๊ฒ์ธ์ง ์๊ณ ์ถ์ต๋๋ค.
์, ํฌ์ฅ๊ธฐ๊ฐ ์คํ ์ค์
๋๋ค. react-native run-android ๋ช
๋ น์ ์คํํ๋ฉด packager๊ฐ 8081์์ ์คํ ์ค์ด๊ณ "Loading Dependency Graph. Done"์ด๋ผ๋ ๋
ธ๋ js ์ฐฝ์ด ์ด๋ฆฝ๋๋ค.
๊ทธ๋ฌ๋ ์์คํ
๋ธ๋ผ์ฐ์ ์์ " localhost:8081/index.android.js "๋ฅผ ์๋ํ๋ฉด "์ด ์ฌ์ดํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค"๋ผ๋ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ผ๋ฐ nodejs API๋ฅผ ๋ง๋ค๊ณ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฆฝ๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. iOS ์๋ฎฌ๋ ์ดํฐ๋ ์ ์๋ํฉ๋๋ค.
RN์์ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ ๋๋ง๋ค ๋งค๋ฒ ์๋ก์ด ๋ฒ๊ทธ์ ๋ฒฝ์ ๋ถ๋ชํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๋ค์๋ฌ์ ๋ ๋์ ํด ๋ด์ผ์ง...
๊ฐ์ ๋ฌธ์ . ๋๊ตฌ๋ ์ง ๊ทธ๊ฒ์ ํด๊ฒฐ?
๋ค์์ ์คํํด ๋ณด์ญ์์ค.
adb reverse tcp:8081 tcp:8081
๋ช
๋ น ํ๋กฌํํธ์์ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์คํํ์ญ์์ค.
@ashafizullah : ์ ๋ ์๋ํด ๋ดค์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ด์ด ์์ต๋๋ค.
๋ด ์ฅ์น์์๋ ๋ฐ์ํฉ๋๋ค.
USB๊ฐ ์ฐ๊ฒฐ๋์ด ์๊ณ adb๊ฐ ๋ฐ๋๋ก ๋์ด ์๊ณ ํจํค์ง ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ ๋๋ค.
์ฅ์น์ ๋ธ๋ผ์ฐ์ ์์ ๋ค์ ๋งํฌ๋ฅผ ์ด๋ฉด ๋ฒ๋ค์ด ์ฑ๊ณต์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค.
http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false
๋ฐ๋ผ์ Java ์ฝ๋ ์์ฒด์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? ์ ๋ ์ฌ๊ธฐ์ ๋งํ์ต๋๋ค. IOS ํ๋ก์ ํธ์์ ์๋ฒฝํ๊ฒ ์๋ํฉ๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ Android ์ฑ์ ๋ค์ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
<uses-permission android:name="android.permission.INTERNET" />
๋ฐ๋ผ์ Android ์ฝ๋๊ฐ ์ฑ์์ ์๊ฒฉ URL์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ์ญ์์ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๋๋ฐ ์๋ฌด๋ ๊ทธ๊ฒ์ ํด๊ฒฐํ ์ ์์ต๋๊น?
์ ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋๋ฐ ํน์ ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ์๋ฉด ์ฌ๋ ค์ฃผ์ธ์. ๊ฐ์ฌ ํด์.
์๋ ์ฌ๋๋ค. ๋๋ react-native์์ console.dir()์ ์ฌ์ฉํ๊ณ ์ด ๋์์ ์ป์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ console.dir()์ด browser.window ํจ์์ด๊ณ ๋ฐ์ ๋ค์ดํฐ๋ธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ด ์ ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. console.dir()์ ์ ๊ฑฐํ ํ - ๋ด ์ฑ์ด ์๋ํ์ต๋๋ค.
Mac์์ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ์์์ด ์์ต๋๊น?
๋๋ ์ฅ์น ํ ์คํธ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋๋ก์ด๋ 4.1.2
์ผ. ์๋๋ก์ด๋ ๋ฒ์ ์ด 5.0 ๋ฏธ๋ง์ธ ๋ถ๋ค์ USB ๋์ ์์ดํ์ด ์ฐ๊ฒฐ์ ์๋ํด ๋ณด์ จ๋์? ๋ด ์ฑ์ Wi-Fi๋ฅผ ํตํด ์ฐ๊ฒฐ๋ ํ Android 4.3(Huawei mediapad T1 8.0)์์ ์ ์์ ์ผ๋ก ์์๋ฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์์๋๋ฐ ๋์๊ฒ ๊ทธ๊ฒ์ postgresSQL์์ ์ฌ์ฉํ๊ณ ์๋ ํฌํธ 8081๋ก ๋ฐํ์ก์ต๋๋ค.
๋๋ ์ค๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋๋ก์ด๋ 4.4.2 ๋ฐ 6.
์ฌ๊ธฐ์์๋ ๊ฐ์ ๋ฌธ์ ์
๋๋ค. ์งง์ ์ ์๊ธฐ ์๊ฐ ํ์ Mac์ ๋ค์ ์ด ๋๋ง๋ค ๋ฐ์ํฉ๋๋ค. ์๋ฌด๋ ์ด๊ฒ์ ํด๊ฒฐ ํ์ต๋๊น?
adb reverse tcp:8081 tcp:8081
- ์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค
๋ด ์ค๋ฅ๋ inotify limits๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ๋์์ต๋๋ค.
์ด ๋งํฌ๋ https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers ๋ฅผ ๋์์ต๋๋ค.
๊ฐ์์ด ๋ฌธ์ , ๋์์ฃผ์ธ์
๋๋ ๋ํ localhost์์ ๊ทธ๊ฒ์ ์คํํ๋ ค๊ณ ์๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์๋ฎฌ๋ ์ดํฐ์์๋ ์๋ํ์ง๋ง ๋ฌผ๋ฆฌ์ ์ฅ์น์์๋ ์๋ํ์ง ์์ต๋๋ค.
์ฅ์น์ ์๋ฎฌ๋ ์ดํฐ ๋ชจ๋์์ Android์ ๋ํด ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํฌ์ฅ๊ธฐ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ฆฌ์ ์ฅ์น์ ๋ํด "adb reverse ..."๋ฅผ ์ํํฉ๋๋ค. ๋ํ ์ฌ์ฉ์ ์ง์ ํฌํธ์์ ์คํํ์ฌ "react-native start --port 8088"์ ์ํํ ๋ค์ ์ฑ์ dev ์ค์ ์์ IPaddress:8088 ์ ์ค์ ํฉ๋๋ค.
์ง๋ฌธ: ์ฑ(๋ด Android ์ฅ์น์์)๊ณผ Windows PC์์ ์คํ๋๋ ํฌ์ฅ๊ธฐ ๊ฐ์ ์ฐ๊ฒฐ์ ์๋ชป ์ฐพ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ ๋ฐ์ดํธ: "adb reverse --list"๋ฅผ ์คํํ๋ฉด ๋ ๊ฐ์ ์ญ ํญ๋ชฉ์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์์ ํ ํ ํจ๊ณผ๊ฐ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ฌ์ ํ "ํ์ดํธ ํ์ด์ง"๋ง ๊ฐ์ง๊ณ ์์ง๋ง ๊ทธ๊ฒ์ ๋ค๋ฅธ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Android์์๋ ๋์ผํ ๋ฌธ์ , iOS๋ ์๋ํฉ๋๋ค...
์ด๋ป๊ฒ ์ด๋ฐ ์ผ์ด ์ผ์ด๋ ์ ์์ต๋๊น
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค
๊ทธ๋ฌ๋ ์ด์ ์๋ ๋ชจ๋ ๊ฒ์ด ๋์๊ฒ ์ ์๋ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ด ๋ฐ์คํฌํ์ ๋งค์ฐ ๋๋ฆฌ๊ฒ ๋ง๋๋ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋์ ๋๋ ๋ฐ์ ๋ค์ดํฐ๋ธ ์์์์ ์ป์ ์๋ฎฌ๋ ์ดํฐ์ ๋ฉํธ๋ก ๋ฒ๋ค๋ฌ๋ฅผ ๋ซ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋๋ ์๋์์์ด ์ฝ๋๋ฅผ ์๋ํ์ง๋ง ์ ํ ์ด์ด ์์์ต๋๋ค.
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์ด๊ฒ์ผ๋ก ๋ฉฐ์น ์ ๋ญ๋นํ์ต๋๋ค. ๋ด ์ปดํจํฐ์์ ๊ธฐ๋ณธ ํฌํธ 8081์ด ์ฐจ๋จ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. https://github.com/facebook/react-native/issues/10715 ์ ์ง์นจ์ ๋ฐ๋ผ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ์ผ๋ฉฐ ์ด์ ์๋ํฉ๋๋ค.
๊ธฐ๊ธฐ์ ์น ๋ธ๋ผ์ฐ์ ์์ ์ด URL์ ์ด์ด๋ณผ ์ ์์ต๋๊น?
http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false
@kevinresol , ํจํค์ง ๊ด๋ฆฌ์๊ฐ ํฌํธ 8081์์ ์์๋์๋ค๊ณ ๋งํ๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ก์ธ์คํ ์ ์์ผ๋ฉด ํฌํธ๊ฐ ๋ฐฉํ๋ฒฝ์ ์ํด ์ฐจ๋จ๋์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ๊ธฐ๋ณธ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ํฌํธ๋ฅผ ์ด ์ ์๋์ง ํ์ธํ์ญ์์ค.
์ด์ ๊ฒ์๋ฌผ ์์ ์ธ๊ธํ๋ฏ์ด ์ฅ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋ฒ๋ค์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
@kevinresol๊ณผ ๋๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ๋ฒ๋ค์ ๋ณผ ์ ์์ง๋ง ์ค๋ฅ๊ฐ ์ง์๋ฉ๋๋ค. ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉ ์ค์ด์ง๋ง ์ฌ์ ํ adb reverse๋ฅผ ์๋ํ์ง๋ง ์ด์ด ์์ต๋๋ค.
@bruno02100 Windows์์ Wi-Fi๋ฅผ ํตํด ์ก์ธ์คํ๋ ๊ฒฝ์ฐ ๋ฐฉํ๋ฒฝ์ ๋นํ์ฑํํด ๋ณด์ญ์์ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํ์ญ์์ค.
@jerrykurian ์ ๋ Android ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํํ๋ Mac์ ์์ต๋๋ค. ๋ฐฉํ๋ฒฝ์ด ์ด๋ฏธ ๊บผ์ ธ ์์ต๋๋ค. ์ ๋ง ์ด์ํฉ๋๋ค.
Debug server host & port for device
๋ฅผ $#$ Dev Settings
192.168.x.x:8081
๋ก ์ค์ ํ ํ (์ ํ๋ฅผ ํ๋ค๋ฉด ๋ฉ๋ด๊ฐ ๋ํ๋ฉ๋๋ค)
๋๋ฅผ ์ํ ์ผ์ด์ผ
์ถ์ : ์๋์ผ๋ก ๋ฒ๋ค์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ฉด ์๋์ผ๋ก ๋น๋๋ฉ๋๋ค.
Wi-Fi ๋ฌธ์ ๋๋ Wi-Fi ์๋ฃจ์
์ด ์ฃผ์ ์์ ๋ฒ์ด๋ฌ๋ค๊ณ ์๊ฐํฉ๋๋ค. OP๋ adb reverse
๋ก USB๋ฅผ ํตํด localhost
์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๋ค.
์ด ์ค๋ฅ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ ์ ๊ฐ๋๋ ํ์๋ง ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋์ ์ง๊ธ์ ์ด ์ค๋ฅ๊ฐ ๋ํ๋ ๋๋ง๋ค ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ค์ ์์ํ๊ณ react-native run-android๋ฅผ ์คํํฉ๋๋ค. ์ ๋ง ์ง์ฆ๋์ง๋ง ์ด๊ฒ์ ๋ํด ์ดํด๋ณผ ์๊ฐ์ด ๋ง์ง ์์ผ๋ฏ๋ก ํด์ผ ํฉ๋๋ค.
Android ์คํ๋์ค๋ฅผ ํตํด ๋น๋ํ ํ ๊ฐ๋ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ง๋ง ์ฝ๋๋ฅผ ํธ์งํ ๋ ์ฝ๋๋ฅผ ์๋ก ๊ณ ์น๋ฉด ๋ด ์ฅ์น ๋๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋ด ์ข
์์ฑ
"๋ฐ์": "16.0.0",
"๋ฐ์ ๋ค์ดํฐ๋ธ": "0.50.4",
์ฅ์น์์ ๋๋ฒ๊ทธ ์๋ฒ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ @xlebenny ์ ์๋ฃจ์ ์ด ์๋ก ๊บผ๋ธ CRNA ํ๋ก์ ํธ์์ ์ ์๊ฒ ํจ๊ณผ์ ์์ ํ์ธํ ์ ์์ต๋๋ค.
Android์์ CRNA๋ฅผ ๊บผ๋ด๊ณ ์คํํ๋ ๋จ๊ณ๋ณ ๋ฐฉ๋ฒ
ํฐ๋ฏธ๋์์:
create-react-native-app myApp
cd myApp
yarn run eject
(๊ธฐ๋ณธ ์ต์
์ธ "์ผ๋ฐ React Native ํ๋ก์ ํธ"๋ฅผ ์ฌ์ฉํ์ต๋๋ค)react-native run-android
(์ด์ ์ฑ์ ์ปดํ์ผํ๊ณ ์ ํ๊ธฐ์ ์ค์นํด์ผ ํฉ๋๋ค)
์ ํ:
index.js
" ์์
์ด ํ์๋์ด์ผ ํฉ๋๋ค( react-native run-android
๋ฅผ ์คํํ ๋ ์ด๋ฆผ).Live Reload(์์ค ํ์ผ์ด ๋ณ๊ฒฝ๋ ๋)๋ ์ฌ์ ํ ๊ฐ๋ฅํฉ๋๋ค. ์ ํ๋ฅผ ํ๋ค๊ณ "Enable Live Reload"๋ฅผ ํฐ์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
@ashafizullah ๊ทธ ๋ช ๋ น์ด ์ด๋ป๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ
@plong0 ์ด ๋๋ฅผ ์ํด ํด๊ฒฐํ์ต๋๋ค!
@bruno02100 ์์ ์ง์ ํ ๊ฒ์ฒ๋ผ ์ด ์ค๋ฅ๋ ์ฅ์น๋ฅผ ์ฅ๊ธฐ๊ฐ ์ด์์ ๋ ๋ํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฎฌ๋ ์ดํฐ ์ค์ ์์ ๋น ๋ฅธ ๋ถํ ์ ๋นํ์ฑํํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค ๐
adb shell์ ์ ๋ ฅํ๊ณ ๋ก์ปฌ ์๋ฒ์์ ์์ ์ค์ธ์ง ํ์ธํ์ญ์์ค. dev ์ค์ ์์ ์๋ฒ์ ip์ ํฌํธ๋ฅผ ์ค์ ํฉ๋๋ค. ์์ ํด์ผ ํฉ๋๋ค.
@plong0 ๋์์ ์ฃผ์
์ ๊ฐ์ฌํ์ง๋ง ๋์์ด๋์ง ์์์ต๋๋ค.
MAC์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ด ์ฑ์ ์คํํ ์ ์์ต๋๋ค.
@ramintagizade - ์ฑ์ด ๋ด ๋ก์ปฌ ์๋ฒ์์ ์์ ๋๊ธฐํ๋์ง ์ด๋ป๊ฒ ํ์ธํฉ๋๊น? ๋ช
๋ น์ ๋ฌด์์
๋๊น:
adb shell [command]
?
์, adb ์ ธ ๋ฐ netstat์ ๋๋ค.
http://facebook.github.io/react-native/docs/running-on-device.html ๊ธฐ๋ฐ
๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ IP ์ฃผ์(์: http://192.168.43.188:8081/)์ ์ก์ธ์คํ์ฌ ํ์๋๋์ง ํ์ธํฉ๋๋ค.
React Native Packager๊ฐ ์คํ ์ค์ ๋๋ค.
๋ฌธ์ ๋ฐฉ๋ฌธ
๊ทธ๋ฐ ๋ค์ ์๋ฎฌ๋ ์ดํฐ์์ ๊ฐ๋ฐ์ ์ค์ ์ ์ก์ธ์คํฉ๋๋ค.
Mac ์ฌ์ฉ์์ ๊ฒฝ์ฐ ์๋ ๋จ๊ณ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
1๋จ๊ณ: "adb reverse tcp:8081 tcp:8081 " ์คํ
2๋จ๊ณ: "๋ช
๋ น m"์ ๋๋ฆ
๋๋ค.
3๋จ๊ณ: "๊ฐ๋ฐ์ ์ค์ "์ ๋๋ฆ
๋๋ค.
4๋จ๊ณ: "๋๋ฒ๊ทธ ์๋ฒ ํธ์คํธ ๋ฐ ์ฅ์น ํฌํธ"๋ฅผ ๋๋ฆ
๋๋ค.
5๋จ๊ณ: ํ์
์์ 'port_id' ์น์
์ "10.0.2.2:${port_id}"๋ฅผ ์
๋ ฅํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ์ค์ธ ํฌํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
6๋จ๊ณ: ์ด์ "react-native run-android"๋ฅผ ์คํํฉ๋๋ค.
Windows ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ์ฌ Wi-Fi๋ฅผ ํตํด ์ค์ Android ์ฅ์น์์ ์ฑ์ ๋๋ฒ๊ทธํ๋ ค๋ ๊ฒฝ์ฐ ์ฅ์น๊ฐ PC ๋๋ ๋ฉํฑ์ ํฌํธ์ ์ก์ธ์คํ์ง ๋ชปํ ์ ์์ต๋๋ค.
ํฌํธ์ ์ก์ธ์คํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค.
1. ๋จผ์ ๋ฐฉํ๋ฒฝ์์ ๊ท์น์ ๋ง๋ญ๋๋ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
```
์คํ ๋ํ ์์ ์ด๊ธฐ
-์ ํ wf.msc
- ์ธ๋ฐ์ด๋ ๊ท์น ํด๋ฆญ
-์ค๋ฅธ์ชฝ์ ์๋ ์ ๊ท์น์ ํด๋ฆญํฉ๋๋ค.
-ํ์
๋ฉ๋ด์์ ํฌํธ๋ฅผ ์ ํํ๊ณ ๋ค์์ ํด๋ฆญํฉ๋๋ค.
- tcp ํฌํธ์ ํน์ ๋ก์ปฌ ํฌํธ๋ฅผ ์ ํํ๊ณ 8081(๊ธฐ๋ณธ๊ฐ)๊ณผ ๊ฐ์ ํฌํธ ๋ฒํธ๋ฅผ ์
๋ ฅํฉ๋๋ค.
- ์ฐ๊ฒฐ ํ์ฉ
- ํ๋กํ ์น์
์์ ๋ชจ๋ ์ ํ
- ์ ์ ํ ์ด๋ฆ๊ณผ ์ค๋ช
์ ์ ๊ณต
-๋ง์นจ ํด๋ฆญ
์ด์ react-native run-android๋ฅผ ์คํํด ๋ณด์ญ์์ค.
๋์ค์ ๋ด ์๋ฎฌ๋ ์ดํธ๋ ์ฅ์น(์๋๋ก์ด๋)์ ์ธํฐ๋ท(๋๋ ๋คํธ์ํฌ) ์ฐ๊ฒฐ์ด ์ ํ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ง๋ง ๋น์ทํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. WiFi ๋๋ LTE ๊ธฐํธ๊ฐ ์ ํ ์์์ต๋๋ค. ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ค์ ์์ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ง๋ง ํ๋ฉด ๋ชจ๋๋ก ์ ํํ๊ณ ํ๋ฉด ๋ชจ๋๋ฅผ ๋ค์ ๋๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ ์ผ๋ฐ์ ์ธ Android ๋ฒ๊ทธ์ผ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฃจ์ ์ ๊ฐ๋จํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์ค๋ฅ๋ ์ฝ๋ ๋ฌธ์ ๋๋ ์ข ์์ฑ ๋ฌธ์ ์ ๊ฐ์ ์ด์ ๋ก ํ์ฌ ๋น๋๊ฐ ์คํจํ์์ ์๋ ค์ค๋๋ค.
macOS์ Android ์๋ฎฌ๋ ์ดํฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ธ์ด ํ์คํ์ง ์์ต๋๋ค. ์๋ก์ด Android AVD๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋ค์ํ Android Studio ์ ๋ฐ์ดํธ๋ฅผ ์ค์นํ์๊ฒ ์ต๋๊น?
์ด ๋ช
๋ น์ด ์ค๋จ๋์์ต๋๋ค.
watchman watch-del-all
์ด๊ฒ์ ๋๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
````
์์กฐ ์ ๊ฑฐ ํ์๊พผ
์์กฐ ์ค์น ๊ฒฝ๋น์
watchman watch-del-all
````
๋ง์ง๋ง์ผ๋ก ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ค์ ์์ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋ง์นจ๋ด ๋ด ๋ฌธ์ ๋ฅผ ์ฐพ์์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์๋ฎฌ๋ ์ดํฐ ํ๋ก์ ์ค์ ์ ์ํ ๊ฒ์ด์์ต๋๋ค.
์๋ฎฌ๋ ์ดํฐ ์ค์ ์ผ๋ก ์ด๋ํ์ฌ ํ๋ก์๋ฅผ ์ค์ ํ์ง ๋ง์ญ์์ค.
๋์์ด ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋
๋ชจ๋,
Windows ํ๊ฒฝ์์ ์คํํ๊ณ Android ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฎฌ๋ ์ด์
ํ๋ ๋์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
์ํ ์ฐฉ์ค๋ฅผ ๊ฑฐ์ณ ์๋์ ๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
1>> ๊ธฐ๋ณธ๊ฐ์์ "node_modules\react-native\local-cliserverserver.js"์ ํฌํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
process.env.RCT_METRO_PORT || 8081
์๊ฒ
๊ธฐ๋ณธ๊ฐ: process.env.RCT_METRO_PORT || 9088
ํฌํธ๊ฐ ์ฐจ๋จ๋๊ฑฐ๋ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐ๊ธ๋ ๊ฒฝ์ฐ.
์ฐธ๊ณ : ํฌํธ ๋ฒํธ๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ ๋ 9088์ ์ ํํ์ต๋๋ค.
2>> react-native run-android --port 9088 ๋ช
๋ น์ ์คํํฉ๋๋ค(์ฌ๊ธฐ์ ํฌํธ ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์). ์ด ํฌํธ๋ ์คํ ์ค์ธ adb๋ก ๋ณด๋ด์ด ์๋ฒ์ adb๊ฐ ๊ฐ์ ํฌํธ์ ์์ด์ผ ํฉ๋๋ค.
3>> ์ด์ Android ์คํ๋์ค ์๋ฎฌ๋ ์ดํฐ์์ Ctrl+m์ ๋๋ฌ " Dev Setting "์ผ๋ก ์ด๋ํ ๋ค์ Debug Server port & host for Device ๋ฅผ ์ ํํ๊ณ " localhost:9088 "์ ์ค์ ํฉ๋๋ค.
4>> http://localhost :9088/debugger-ui/ URL์ ์ฌ์ฉํ์ฌ ํฌ๋กฌ์์ ๊ฐ๋ฐ์ ์ฝ์์ ์ฝ๋๋ค.
์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ณ๊ฒฝํ ๋ด์ฉ์ ๋ก๋ํ๊ธฐ ์์ํฉ๋๋ค.
์ง๊ธ ์ฝ๋ฉ์ ์ฆ๊ฒจ๋ณด์ธ์ :)
๊ฒ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! 2018๋ 1์์ ์ถ์๋ ์ต์ ๋ฒ์ ์ React Native v0.53.0์ ์ฌ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์ต์ ๋ฒ์ ์์ ๊ณ์ ์ฌํ๋๋์ง ํ์ธํ ์ ์๋์?
๋๋ ์ด๊ฒ์ ๋ซ์ ๊ฒ์ด์ง๋ง ์ด๊ฒ์ด v0.53.0 ์ด์์์ ์ฌ์ ํ ๋ฌธ์ ์์ ํ์ธํ ์ ์๋ค๋ฉด ์์ ๋กญ๊ฒ ์ ๋ฌธ์ ๋ฅผ ์ด์ด์ฃผ์ญ์์ค.
๊ธฐ์ฌ ๋ฐฉ๋ฒ โข ์ ์ง ๊ด๋ฆฌ์์๊ฒ ๊ธฐ๋ํ ์ ์๋ ์ฌํญ
์, "react-native": "0.53.0"์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋์ด ๋ฌธ์ ๋ ๋ด๋ถ ํ์ฌ ํ๋ก์๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํ์ต๋๋ค. ํ์ฌ์์ ์ผ๋ถ ํฌํธ๋ฅผ ์ฐจ๋จํ๊ฑฐ๋ ์ฌ์ฉ ์ค์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ์ฌ๊ธฐ์ ๊ฒ์ํ์ต๋๋ค.
Android ์ค์ ๊ธฐ๊ธฐ์์ ๋์ผํ ๋ฌธ์ .. ๋ฒ์ 5.1.1
๋จ์ํ ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ 'yarn'์ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ์น๋ฉด ๋ชจ๋ ํ์ธ๋ฉ๋๋ค.
@ashafizullah ๊ทธ์ ์๋ฃจ์ ์ด ์๋ํฉ๋๋ค!!!!
์๋ฎฌ๋ ์ดํฐ์ด๋ ์ค์ ์ฅ์น์ด๋ Android์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋ฉ๋๋ค.
@Alijaaan ๋ถ๋ช ํ ๋๊ฐ์ ๋ฌธ์ ๊ฐ์์์ต๋๋ค. ๊ฐ์ฌ ํด์!
๋ด๊ฐ ์ฐพ์ ์ ์ผํ ์๋ฃจ์ ์ Android ์คํ๋์ค AVD Manager ์์ ํ์ฌ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๋ค์ ์์ ์ ์์ํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค @Alijaaan
Android Studio ํ๋ก์ ์ค์ ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
"Android ์คํ๋์ค ํ๋ก์ ์ค์ ์ฌ์ฉ"์ ์ ํ ์ทจ์ํ ๋ค์ "ํ๋ก์ ์์"์ ์ ํํฉ๋๋ค. ์ด์ ๋ชจ๋ ๊ฒ์ด ์ ์์
๋๋ค.
@esutton ์ ์๊ฒฌ ์ด ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
BTW watchman์ ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ํํธ์จ์ด์
๋๋ค. ๋๋ ์์์ RN ๋ฌธ์ ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ช ์๊ฐ ๋์ ํ๋ฃจ๋ฅผ ์ผ์ ์ค์งํ๊ณ watchman watch-del-all
์คํํ๊ธฐ๋ง ํ๋ฉด ๋๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ณ ํญ์ ๊ธฐ๋ปค์ต๋๋ค. ์ด์ ๊ทธ ๋ช
๋ น๋ ๋ฉ์ถ๊ณ ๊ฐ๋ ๋ค์ ์ค์นํด์ผ ํ๋ฏ๋ก ๋์ฑ ํ๋ณตํ ๊ฐ๋ฐ์์
๋๋ค.
react-native run-android --port 9088์ด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. @Louies89 ๊ฐ์ฌํฉ๋๋ค
๋๋ ํด๊ฒฐ์ฑ
์ ์ฐพ๋๋ค
1. ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ๋๊ธฐ
2๋ฐฉํ๋ฒฝ์ ๋ซ์๋ผ
ํนํ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฐ๊ณผ ๊ฐ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฝ๋์ ์ต๊ทผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ํ ์ผ, ๋ช ๋จ๊ณ ๋ค๋ก ์ด๋ Ctrl + z , ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ ์ ๊ฑฐํ๊ณ ๋ค์ ์์ํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ react-native run-android ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค! ์๋ง๋ ์๋ฎฌ๋ ์ดํฐ์ ์บ์ฑ๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
@pinchez254๋ ๋ง์ ์ ๋์ํฉ๋๋ค.์ฒซ ์คํ์ ํญ์ ๊ด์ฐฎ์ต๋๋ค.
npm start ๋ช ๋ น์ ์ฌ์ฉํ์ฌ npm ์๋ฒ๋ฅผ ์์ํ์ญ์์ค.
์๋
ํ์ธ์, Dev Setting(192.168.1.103:8081)์ ๋ด PC IP ์ฃผ์๋ฅผ ์
๋ ฅํ๊ณ 8081 tcp ํฌํธ์ ์ก์ธ์คํ๊ธฐ ์ํด ๋ฐฉํ๋ฒฝ์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์์ฑํ์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"could not connect to development serve"
๋ํ
๋ธ๋ผ์ฐ์ "http://localhost:8081/index.delta?platform=android&dev=true&minify=false"
๋ฅผ ์
๋ ฅํ๋ฉด ๋น๋๊ฐ ์์๋๊ณ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ต๋๋ค!
๋๋ฅผ ์ํด ์คํ:
adb reverse tcp:8081 tcp:8081
react-native start --reset-cache
react-native run-android
ํธ๋ฆญ์ ํ๋ค
๋ ๊ฐ์ ํฐ๋ฏธ๋์ ์ด์ด์ผ ํ์ต๋๋ค.
์ฒซ ์คํ
sudo npm start
์คํ ํ
react-native run-ios
react-native run-android
, react-native start --port=8088
์คํreact-native run-android --port=8081
:)
๋ด๊ฐ ํด๊ฒฐํ ์ ์์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ - ํฌํธ 8081์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ๊ฒ์ํ๊ณ 9088(์ฌ์ฉํ์ง ์์)๋ก ๋ณ๊ฒฝํ๊ณ ํฌํธ 9088๋ก ์์ํ๋ ๊ฒ์ ๋๋ค. ๋ํ Dev ์ค์ ์ ํฌํธ 9088๋ก ๋ณ๊ฒฝํ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํธ 8081์ ๋ํ ์ฐธ์กฐ๋ ๊ฑฐ์ ์์์ต๋๋ค. node_module/react-native ๋๋ ํ ๋ฆฌ. ํฌํธ 8081์ ๋ด ํ๊ฒฝ์์ ๋ฐ์ด๋ฌ์ค ๊ฐ๋์ ์ํด ์ฌ์ฉ๋์์ต๋๋ค.
๋๋ฅผ ์ํด Android ํ๋ซํผ ๋๊ตฌ๊ฐ ์ค์น๋์ง ์์์ต๋๋ค. ๊ทธ๋์ ๋ค์ ๋ช
๋ น์ด๋ก ์ค์นํ์ต๋๋ค.
์์กฐ ํต ์ค์น android-platform-tools
๊ทธ ํ * react-native run android *๋ก Android ์คํ๋์ค ๋๋ ๋ช ๋ น์ค์์ ์คํ
Mac์ ์ฌ๋ถํ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ฒซ์งธ, ํ๋ก์ ํธ ํ์ผ์ ์๋์ง ํ์ธํ ํ ์ด ์๋ฃจ์
์ด ๋์์ด ๋ฉ๋๋ค.
react-native start
์ฝ๋ ENOSPC์ ํจ๊ป ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
์ด ๊ฒฝ์ฐ ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค.
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
๊ทธ ํ react-native start
๋ฅผ ๋ค์ ์คํํ๋ฉด ENOSPC ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๋ค์์ผ๋ก react-native run-android
๋ฅผ ์คํํ์ญ์์ค.
๊ฑฐ๊ธฐ์, ๊ทธ๊ฒ์ ์๋๋ก์ด๋ ์คํ๋์ค์ ์๋๋ก์ด๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ๋
์ค์์ ์ ์๊ฒ ํจ๊ณผ์ ์
๋๋ค.
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด ์์
์ ์ํํ์ฌ ์๋ฃจ์
์ ์ฐพ์์ต๋๋ค.
๋จผ์ ๋ชจ๋ ๋
ธ๋ ๋ชจ๋์ ์ญ์ ํ์ต๋๋ค.
sudo rm -rf node_modules/
๊ทธ๋ฐ ๋ค์ npm ํจํค์ง๋ฅผ ๋ค์ ์ค์นํ์ต๋๋ค.
npm install
๊ทธ๋ฐ ๋ค์ ๋ฐ์ ํจํค์ง๊ฐ ๊ด์ฐฎ์์ง ํ์ธํ๊ธฐ ์ํด ์ด ๋ช ๋ น์ ์คํํฉ๋๋ค.
react-native start
๊ทธ๊ฒ์ ํจํค์ง๊ฐ ๊ด์ฐฎ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ๋ฃจํธ๋ก ์๋๋ก์ด๋๋ฅผ ์คํํฉ๋๋ค.
react-native run-android --root
๊ทธ๋ฐ ๋ค์ ์ด๊ฒ์ด ์๋ํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
๋ํ Android 9๋ถํฐ ์ผ๋ฐ ํ
์คํธ HTTP(๋น HTTPS) ์ ์ก์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธ์ง๋์ด ์์ต๋๋ค. ์ฑ์ ์คํํ๋ ๊ธฐ๊ธฐ์์ ๊ฐ๋ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ํ๋ ค๋ฉด ์ด ์์ฑ์ _AndroidManifest.xml_ ํ์ผ์ application
์์์ ์ถ๊ฐํ์ธ์.
android:usesCleartextTraffic="true"
์ด Stackoverflow ๋ฌธ์ ์ ๋ํ ์ถ๊ฐ ์ ๋ณด
๊ธฐ๋ณธ ์น ๋ธ๋ผ์ฐ์ ์ URL์ ์ ๋ ฅํ์ฌ ์ฅ์น๊ฐ ๊ฐ๋ฐ ์๋ฒ์ ์ก์ธ์คํ ์ ์๋์ง ํ ์คํธํ ์ ์์ต๋๋ค.
๋ถํํ๋ ๋ฐ์ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๋๊ตฌ๋ ์ค๋ฅ์ ์์ธ์ ์ผํค์ง๋ง ์ ์ฉํ ์คํ ์ถ์ ์ ์ป์ ๋์ ์ฑ ๋ด์์ ์์ฒด HTTP ์ฐ๊ฒฐ์ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ํ์๋ฉ๋๋ค.
@delj ๋ฐ์ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๋๊ตฌ๊ฐ ์ค๋ฅ์ ์์ธ์ ์ผํค๋ ๊ฒ์ ๋ถํํ ์ผ์ ๋๋ค.
ํ: android:usesCleartextTraffic= "true" ๋ก ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด manifestPlaceholders ๋ฅผ ์ฌ์ฉํ์ธ์.
AndroidManifest.xml
````
android:usesCleartextTraffic="${isDebug}"
>
````
์๋๋ก์ด๋/์ฑ/๋น๋.gradle
๋น๋ ์ ํ { ๋๋ฒ๊ทธ { manifestPlaceholders = [isDebug:true] } ํ์ด ์ฃผ๋ค { manifestPlaceholders = [isDebug:false]minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release } }
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ Windows 10์์ ๋๋ฅผ ์ํด ์ผํ ๊ฒ์ ๋ง ๊ทธ๋๋ก CMD๋ฅผ ๊ด๋ฆฌ์๋ก ์ฌ๋ ๊ฒ์ ๋๋ค.
๋๋ ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด ๋ฐฑ์ ์ ์ด ์ ์์ต๋๊น? ์ด๊ฒ์ ์์ ํ ํฐ๋ฌด๋์๋ ๊ฒ์ ๋๋ค. ํธ์ง์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๊ณ ์์๋์ง ์๋ ๊ฒฝ์ฐ "์์ํ๊ธฐ" ์์ต์๋ ์ด๋ป์ต๋๊น? ๋๋ ๋ง ๊ทธ๋๋ก ์ด ๋ฒ๊ทธ์ ๋ช ์๊ฐ์ ๋ณด๋๋ค. ํ์ด์ค๋ถ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ค์ ํํ ๋ฆฌ์ผ์ ์์ ํ ์๋ชป๋์๊ฑฐ๋ ๋งํฌํ ์ ์๋ ์ ์๋ ค์ง ๋ฌธ์ ํด๊ฒฐ ์ฌ๋ก์ ๋๋ค.
๋ด ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํ 3๋จ๊ณ๋ฅผ ์ํํ ๋ ํฌํธ ๊ฐ์ ์ถ๊ฐํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค. ๋๊ตฌ๋ ์ง ๋์์ฃผ์ธ์.
๋๋ ์์ ํ ๋์ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๊ณ ์น๋ ๋ฐ ํ ์๊ฐ์ ๋ณด๋์ต๋๋ค.
์ฌ๊ธฐ์์ ์งํ ์ค์ธ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ๊ทธ ์ค ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ผ๋ฐ ํ
์คํธ ์ค์ ์
๋๋ค. ์์
์ ์ํํ๊ธฐ ์ ์ ์ฑ์ ์ต์ Android SDK๋ก ์
๋ฐ์ดํธํ์ง ์์ผ๋ฉด ์ด๋ฌํ ์ค์ ์ด ์๋ํ์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์๋์ง ํ
์คํธํ๋ ค๋ฉด ์ต์์ ๋ ๋๋ง ๊ธฐ๋ฅ ์ค ํ๋์ ์ด ์ฝ๋๋ฅผ ์ฝ์
ํ์ญ์์ค. ์: <App
fetch('http://jofarnold.com')
.then(res => res.text())
.then(d => alert('ok'))
.catch(e => {
console.error(String(e));
});
http
๊ฐ ์๋๋ผ https
์ ์ฃผ์ํ์ญ์์ค. ์, ๋ด ์ฌ์ดํธ๋ http๊ฐ ์๋๋๋ค. ํ์ง๋ง ์ง๊ธ์ ํํ๊ฐ ์๋ค!
์ด์ ์๋
fetch('https://httpbin.org')
.then(res => res.text())
.then(d => alert('ok'))
.catch(e => {
console.error(String(e));
});
http ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
์ด๋ ๊ฒ์ด ์คํจํฉ๋๊น? ๋ ๋ค ์คํจํ๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก ์ ๊ฐ ๋์๋๋ฆด ์ ์์ต๋๋ค. ํ์ง๋ง ํด๋น URL์ด ์๋ฎฌ๋ ์ดํฐ์ Chrome์์ ์๋ํ๋์ง ํ์ธํ์ฌ ๋คํธ์ํฌ๊ฐ ์๋ํ์ง ์๋ ๊ฒ์ ๋ฐฐ์ ํ์ญ์์ค. ์ฒซ ๋ฒ์งธ๋ ์คํจํ๊ณ (๋ฐ์ ๊ธฐ๋ณธ ๋ ๋๋ฐ์ค ์ ๊ณต) ๋ ๋ฒ์งธ๋ ์ฑ๊ณตํ๋ฉด( ok
๊ฒฝ๊ณ ) Android ๋ณด์ ์ค์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ ๊ฒ ํฉ์๋ค.
๋จผ์ <application
์น์
์ android/.../AndroidManifest.xml์ ๋ค์์ ์
๋ ฅํฉ๋๋ค.
<manifest
....
<application
... other settings
android:usesCleartextTraffic="true" <---------- this
android:networkSecurityConfig="@xml/network_security_config" <------- and this
>
... etc
๊ทธ๋ฐ ๋ค์ android/...res/xml/network_security_config.xml์ ํ์ผ์ ๋ง๋ญ๋๋ค(xml ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค. ํ์ผ ์ด๋ฆ์ ํน๋ณํ ๊ฒ์ด ์๋๋ผ ์์ ์ฐธ์กฐ์ ๋์ผํด์ผ ํฉ๋๋ค). :
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">jofarnold.com</domain>
</domain-config>
</network-security-config>
ํ ํฐ๋ฏธ๋์์ react-native start --reset-cache
๋ฅผ ์ํํ๊ณ ๋ค๋ฅธ ํฐ๋ฏธ๋์์ react-native run-android
๋ฅผ ์ํํ๋๋ก ๋ค์ ์ปดํ์ผํ์ญ์์ค.
์ด์ ์ฑ์ ๋ก๋ํ๋ฉด ํ์ธ ํ์
์ด ํ์๋ฉ๋๋ค. ์ข์ ๋ฌผ๊ฑด! ๋ด ์์ ํ์ง ์์ ์ฌ์ดํธ๋ฅผ fetch
๊ด๋ฆฌํ์ต๋๋ค.
์ด์ ๋ฐ์ ๋ค์ดํฐ๋ธ๋ฅผ ๋ถ๋ฅํด์ผ ํฉ๋๋ค. ๋๋ฅผ ์ํด ์๋ฒ๋ 10.0.2.2์ ์๊ณ ๋๋ฒ๊ฑฐ๋ localhost ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ๋๋ค(๊ธฐ์ต์ด ๋์ง ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ์์ ๋ถ๋ถ์ ์ผ๋ก ์ด๊ฒ์ ์ฐ๊ณ ์์ต๋๋ค). ์ด๋ ์ชฝ์ด๋ ๊ทธ๋ค์ ๋ค๋ฅด๋ฏ๋ก ์๋ํ์ง ์์ต๋๋ค.
์ด๋ฅผ ์ํด ์์ jofarnold.com
๋ฅผ localhost
๋ก ๋ณ๊ฒฝํ ๋ค์ ์ฑ์ ์ค์ ๋ฉ๋ด(mac์ ๊ฒฝ์ฐ cmd-M) > ๊ฐ๋ฐ์ ์ค์ ์ผ๋ก ์ด๋ํฉ๋๋ค. "JS Delta ์ฌ์ฉ"์ ๋๊ณ (์ ์๋ํ์ง ์์) ๋๋ฒ๊น
์์ ์๋ฒ ํธ์คํธ์ ํฌํธ๋ฅผ localhost:8081
๋ก ์ค์ ํฉ๋๋ค.
๋ณด์ ๊ตฌ์ฑ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
๋ค์ ์ปดํ์ผํ๊ณ react-native start --reset-cache
๋ฅผ ๋ค์ ์์ํ๋ฉด loading...
๋๋ ๋ฌด์์ด๋ ๊ฐ์ ์ฑ ์๋จ์ ๋
น์ ๋ง๋๊ฐ ํ์๋ฉ๋๋ค. ํฐ๋ฏธ๋์์ Delta, Map ๋ฑ๊ณผ ๋ฒ๋ค๋ก ํ์๋์ด์ผ ํฉ๋๋ค.
๋ด ์๊ฐ์ adb reverse
์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ด์จ๋ RN ์คํฌ๋ฆฝํธ์ ์ผ๋ถ๋ก ์ํ๋ฉ๋๋ค.
ํ์ด์ ๋น๋๋ค!
๋ด ๋ฌธ์ ๋ ๋ด Android ์๋ฎฌ๋ ์ดํฐ๊ฐ Wi-Fi ๋ฐ ๋ฐ์ดํฐ์์ ์ฐ๊ฒฐ ํด์ ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ๋ค์ ์ผ๊ณ ์คํํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๋ฉด ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ด ๋ฌธ์ ๋ ๋ด Android ์๋ฎฌ๋ ์ดํฐ๊ฐ Wi-Fi ๋ฐ ๋ฐ์ดํฐ์์ ์ฐ๊ฒฐ ํด์ ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ๋ค์ ์ผ๊ณ ์คํํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๋ฉด ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ด๊ฐ Mateo์ ์๊ฒฌ์ ์ถ๊ฐํด์ผ ํ๋ ํ ๊ฐ์ง ์ค์ํ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. MacBook์ ๋ซ๊ณ ๋ค๋ฅธ Wi-Fi ๋คํธ์ํฌ์์ ๋ค์ ์์ํ๋ฉด ์๋ฎฌ๋ ์ดํฐ์ "์์ดํ์ด"๊ฐ ์คํจํ ์ ์์ต๋๋ค. ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ด ํนํ ์๋ฎฌ๋ ์ดํฐ์ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ด ์ฃผ์ ์ ๋ํ ์ข์ SEO๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ด โโ๋๊ธ์ ๋จ๊ธฐ๋ ๊ฒ์ด ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Android 5.0 ์ด์์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์ง๋ง Android 4..4์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
Android 5.0 ์ด์์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์ง๋ง Android 4..4์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋๋ ๋์ํ๋ค
Android 9 ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ @delj ์ ๋ช
์๋ ๋๋ก manifest.xml์ Application ํ๊ทธ์ android:usesCleartextTraffic="true"
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ํจํค์ง ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ ๋๊น?
react-native run-android
์คํํ ๋ ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.react-native start
๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด์ ์ผ๋ก ์์ํ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ํจํค์ง ํ๋ก๊ทธ๋จ์ด ์ ํ ์์๋์ง ์๋ ๊ฒ์ธ์ง ์๊ณ ์ถ์ต๋๋ค.
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์?? OS 10.13.6์ด ์ค์น๋ Mac์ด ์๊ณ ์๋ฒ๊ฐ ์๋์ผ๋ก ์์๋๊ธฐ ์ ์
@JofBigHealth ๊ฐ์ฌํฉ๋๋ค. ์ ์ํ ๋๋ก ์ํํ์ผ๋ฉฐ ์๋ฎฌ๋ ์ดํฐ์์ ์๋ํ๊ณ ์ค์ ์ฅ์น์ ์ฐ๊ฒฐํฉ๋๋ค.
ํ์ง๋ง ์ํ ์ฑ๋์์ ์ฑ์ ๋ค์ด๋ก๋ํ ๋ ์ฑ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ฒ๊น
ํ ์ ์์ด ์์ต๋๊น?
@ sheva007 "์ํ ์ฑ๋"์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง ์ค๋ช ํ๊ณ ๋ ์์ธํ ํฌํจํ ์ ์์ต๋๊น?
@JofBigHealth ๋๋ฝ๋ ์ ๋ณด์ ๋ํด ์ฃ์กํฉ๋๋ค.
์
๋ฐ์ดํธ: ์ด์ ์๋ํฉ๋๋ค. Google Play์์ ํ
์คํฐ๊ฐ ์
๋ฐ์ดํธ๋ ์์
๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ์ต๋๋ค. ์ ๋ง ๊ณ ๋ง์ :)
๋ด ์๋ ๋ฌธ์ ๋ ์ฑ์ด < Android 9 ์ ์๋ํ์ง๋ง Android 9์ ๋คํธ์ํฌ ํธ์ถ์ ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๊ทํ์ ์๋ฃจ์
์ ์ฌ์ฉํ ๋ ๋คํธ์ํฌ ํธ์ถ์ ํฌํจํ ์ฑ์ด ์์๋๋ก ์๋ํฉ๋๋ค.
ํ์ง๋ง Google Play ์ํ ์ฑ๋์ ์ ์ถํ์ ๋ ๋คํธ์ํฌ ํธ์ถ์ ํ์ง ์์ต๋๋ค.
ํฌํธ๋ฅผ ๋ฐ์ ์ํค๋ ๊ฒ์ด ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.
@ashafizullah ๊ฐ ์ ์ํ ๋๋ก
๋ด๊ฐ ์ด์๋ Android Studio๋ฅผ ๋ซ์ผ๋ฉด ์ด์ํ๊ฒ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ด์ ๋ถ๋ถ๋ช ...
์
๋ฐ์ดํธ: 0.57.7๋ก ์
๊ทธ๋ ์ด๋ํ ๋ ์๋ฎฌ๋ ์ดํฐ์ ๊ฒฝ์ฐ adb
์ญ๋ฐฉํฅ ํ๋ก์ ์์ ์ ์ํํ๊ฑฐ๋ ๊ฐ๋ฐ์ ๋ฉ๋ด์์ ํฌํธ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 10.0.1.1:8080(๋ฉ๋ชจ๋ฆฌ์์ ์ถ์ธก) ๋ฐ Just Works์ ๊ฐ์ต๋๋ค. react-native start
๋๋ react-native start --reset-cache
(ํ์ํ ๊ฒฝ์ฐ)๋ฅผ ์คํํ๊ณ Android Studio์์ ๋น๋ํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค. ๋๋ฒ๊น
์ผ๋ก ์ค์ ํ๋ค๋ฉด ๋๋ฒ๊ฑฐ๋ฅผ ์คํํด์ผ ํ๊ณ Android Studio์์ ๋ค์ ๋น๋ํด์ผ ํ ์ ์์ต๋๋ค. ๋๋๋ก ์ฒ์์ ์ฐ๊ฒฐ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค(๊ฒฝํฉ ์กฐ๊ฑด์ผ๋ก ์์ฌ๋๋ ๊ฒฝ์ฐ). ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ด์ฐฎ์ต๋๋ค. ์ฑ ๋งค๋ํ์คํธ์์ ๋ณด์ ์ค์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
์ฅ์น๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค.
์ฅ์น์์ ์คํํ๋ ค๊ณ ํ ๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฅ์น์ ๋ํ ์๋ฃจ์ ์ด ์์ต๋๊น?
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋์์ฃผ์ธ์.
ํ๊ฒฝ ๋ณ์์ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. "adb" ๊ฒฝ๋ก๋ C:Users\user\AppData\Local\Android\Sdk/platformtools์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ด๊ฒ์ Windows 10์์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. (๋๋ฒ๊ทธ ์๋ฒ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์ค์ ํ ํ .. )
๋ฐฉํ๋ฒฝ ์ค์ (Windows ๋ฐฉํ๋ฒฝ>Windows ๋ฐฉํ๋ฒฝ์ ํตํด ์ฑ ๋๋ ๊ธฐ๋ฅ ํ์ฉ)์ ํ์ธํ๊ณ ๋ ๊ฐ์ Node.js ์ฑ์ด ์์ง๋ง ๊ทธ ์ค ํ๋๋ ๋ฐฉํ๋ฒฝ์ ํต๊ณผํ ์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค! ์์๋ฅผ ์ ํํ๊ณ ์ ์ฅํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํ์ต๋๋ค!
์ด ์ข์ ์ง๋ฌธ .. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ผ.!
Android 9 ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ @delj ์ ๋ช ์๋ ๋๋ก manifest.xml์ Application ํ๊ทธ์
android:usesCleartextTraffic="true"
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ถ์ฒ
๊ฐ์ ์ค๋ฅ์
๋๋ค.
windows7+์๋๋ก์ด๋ ์คํ๋์ค3.3.2.
๋
ธ๋ ์๋ฒ๊ฐ ํ์ฑํ๋์ด ์๊ณ ์๋ฎฌ๋ ์ดํฐ ํฌ๋กฌ์์ 127.0.0.1์ vivsitํ ์ ์์ง๋ง Awesome ์ฑ์ ๋
ธ๋ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
AndroidManisfesto.xml์ android:usesCleartextTraffic="true"
๋ ์ถ๊ฐํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
@aflext ๋นจ๊ฐ์ ์์์์ adb reverse tcp:8081 tcp:8081
๋ช
๋ น์ ์คํํ์
จ์ต๋๊น? ๊ทธ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.
@JofBigHealth URL์ 127.0.0.1:8081
์์ localhost:8081
๋ก ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
์ ๊ฒฝ์ฐ ์๋ฃจ์ ์ "์๊ฒฉ์ผ๋ก JS ๋๋ฒ๊ทธ" ๋นํ์ฑํ/ํ์ฑํ์์ต๋๋ค.
@ashafizullah : ์ ๋ ์๋ํด ๋ดค์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ด์ด ์์ต๋๋ค.
@ashafizullah ์, ์ ์๊ฒ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
Windows๋ฅผ ํตํด ์ด ํ๋ก์ ํธ๋ฅผ ์คํํ ์ ์์ต๋๊น????
๋ด ์ค๋ฅ๋ inotify limits๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ๋์์ต๋๋ค.
์ด ๋งํฌ๋ https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers ๋ฅผ ๋์์ต๋๋ค.
์ด๊ฒ์ ์๋ํฉ๋๋ค! ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!!
๋ด ์ค๋ฅ๋ inotify limits๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ๋์์ต๋๋ค.
์ด ๋งํฌ๋ https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers ๋ฅผ ๋์์ต๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค. ๊ณ ๋ง์.
<application ...
ํ๊ทธ์ android:usesCleartextTraffic="true"
๋ฅผ AndroidManifest.xml
์ ์ถ๊ฐํ๊ณ ์ฑ์ ๋ค์ ๋น๋ํ์ต๋๋ค. ๊ทธ ํ, dev ์๋ฒ์์ ์ ์์ ์ผ๋ก ๋ก๋๋๊ธฐ ์์ํ์ต๋๋ค.
๋๋ฒ๊ฑฐ๋ฅผ ์คํํ๊ณ ๋ค๋ฅธ ์ฅ์น์ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ต๋๋ค. ๋ฐ๋ผ์ ๋๋ฒ๊ฑฐ์ ์ฐ๊ฒฐ๋ iOS ์๋ฎฌ๋ ์ดํฐ๋ Android ์ฅ์น๊ฐ ํจํค์ ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ฐจ๋จํ๊ณ ์์์ต๋๋ค. iOS ์๋ฎฌ๋ ์ดํฐ์์ ์๊ฒฉ ๋๋ฒ๊น ์ ์ค์งํ๋ฉด Android ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ Android ์ฅ์น์์๋ ์๊ฒฉ์ผ๋ก ๋๋ฒ๊น ์ ์์ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ Windows 10์์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. (๋๋ฒ๊ทธ ์๋ฒ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์ค์ ํ ํ .. )
๋ฐฉํ๋ฒฝ ์ค์ (Windows ๋ฐฉํ๋ฒฝ>Windows ๋ฐฉํ๋ฒฝ์ ํตํด ์ฑ ๋๋ ๊ธฐ๋ฅ ํ์ฉ)์ ํ์ธํ๊ณ ๋ ๊ฐ์ Node.js ์ฑ์ด ์์ง๋ง ๊ทธ ์ค ํ๋๋ ๋ฐฉํ๋ฒฝ์ ํต๊ณผํ ์ ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค! ์์๋ฅผ ์ ํํ๊ณ ์ ์ฅํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ ์ผ๋ก ์๋ํ์ต๋๋ค!
์ด๊ฒ์ ์ ๋ฌธ์ ์ด๊ธฐ๋ ํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
https://www.youtube.com/watch?v=XhiE0HEiYd4
ํ์ง๋ง .... ์๋ฎฌ๋ ์ดํฐ์์ ์ฑ์ ๋ค์๋ก๋ํ๋ฉด ๋ค์ ์ถฉ๋ํ๊ณ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
๊ฐ๋ฐ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋ฐฉํ๋ฒฝ์ node.js์ genymotion player.exe๋ฅผ ์ถ๊ฐํ๊ณ ๋ชจ๋ ์ฌ์์(geny, react)์ ํด์ ๋ค์ ์คํ์ ํด๋ดค๋๋ฐ...
ctrl+Win cmd ๋ช
๋ น์ค ipconfig๋ฅผ ์ฌ์ฉํ์ฌ ipV4 ์ฃผ์๋ฅผ ์ฐพ์ต๋๋ค. ๊ด์ฐ์ 192.168.0.111์
๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค!
<application ...
ํ๊ทธ์android:usesCleartextTraffic="true"
๋ฅผAndroidManifest.xml
์ ์ถ๊ฐํ๊ณ ์ฑ์ ๋ค์ ๋น๋ํ์ต๋๋ค. ๊ทธ ํ, dev ์๋ฒ์์ ์ ์์ ์ผ๋ก ๋ก๋๋๊ธฐ ์์ํ์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์์ฒญ ๊ณ ๋ง์.
์ค์ Android ๊ธฐ๊ธฐ์์๋ง ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํด๊ฒฐ์ฑ
:
1) android/app/src/main/res/xml/network_security_config.xml ํ์ผ ์ถ๊ฐ
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
2) android/app/src/main/AndroidManifest.xml์ ๋ผ์ธ ์ถ๊ฐ
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
>
์น๋ฃ๋ฒ์ ์ฐพ์ผ์ญ์์ค.
์ด ๋ฌธ์ ๋ ๋ค์ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋์์ต๋๋ค.
adb reverse tcp:8081 tcp:8081 ์ ์คํํ ํ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ์ด์ ์๋ ํจํค์ง ์๋ฒ ์ฐฝ์ ์ด์์ง๋ง ์ข
์์ฑ ๊ทธ๋ํ ๋ก๋๊ฐ ์๋ฃ๋ ํ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์์ต๋๋ค. ๋ฉ์ธ์ง.
์ด์ ์์์ ์ธ๊ธํ ๋ช
๋ น์ ์คํํ ํ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค.
์ด๋ ๋คํธ์ํฌ ๋ณด์ ๊ตฌ์ฑ ์ ๋ฐ๋ผ Android 9.0 ์ด์์ ์ ์ฉ๋ฉ๋๋ค.
๊ทธ๋์ ์น์์ ์ฐพ์ ๊ฐ๋ฅํ ๋ชจ๋ ์๋ฃจ์
์ ์๋ํ ํ ๊ธฐ๋ณธ Android logcat์ ์๋์ผ๋ก ์กฐ์ฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. android:usesCleartextTraffic="true"
๋ฅผ ์ถ๊ฐํ ํ์๋ logcat์์ ์ด๊ฒ์ ์ฐพ์์ต๋๋ค.
06-25 02:32:34.561 32001 32001 E unknown:ReactNative: Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.29.96 not permitted by network security policy
๊ทธ๋์ ๋ฐ์ ๋ค์ดํฐ๋ธ ์ฑ์ ์์ค๋ฅผ ๊ฒ์ฌํ๋ ค๊ณ ํ์ต๋๋ค. debug
๋ณ์ข
์๋ main
๋ณ์ข
๊ณผ ์ถฉ๋ํ๋ react-native์ ์ํด ์ ์๋ network-security-config๊ฐ ์ด๋ฏธ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
์ด์ ๋ํ ์ฌ์ด ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค.
<app-src>/android/app/src/debug/res/xml/react_native_config.xml
๋ก ์ด๋
์์ ์ IP ์ฃผ์๋ก ์ ์ค์ ์ถ๊ฐํ์ญ์์ค.
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">10.0.2.2</domain>
<domain includeSubdomains="false">10.0.3.2</domain>
***<domain includeSubdomains="false">192.168.29.96</domain>***
</domain-config>
</network-security-config>
๋ด ์ปดํจํฐ์ ๋ก์ปฌ IP(Linux์ ๊ฒฝ์ฐ ifconfig
์์ ํ์ธ)๊ฐ 192.168.29.96์ด๋ฏ๋ก * ์ ์์ ์ค์ ์ถ๊ฐํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ Android์ฉ์ผ๋ก ์ ๋ฆฌํ๊ณ ๋ค์ ๋น๋ํด์ผ ํฉ๋๋ค!
cd <app-src>/android
./gradlew clean
cd <app-src>
react-native run-android
์ด๊ฒ์ด ๋น์ ์ ์ํด ์๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ด๊ฐ ํ ์ผ: (์๋ฎฌ๋ ์ดํฐ Android Pie 9์์ ์์ ์ค)
Ctrl+M
๋ฐ Dev Setting
Debug server host & port for device
์ IP ๋ฐ ํฌํธ๋ฅผ ์ค์ ํฉ๋๋ค. Bundler์ ํธ์คํธ ๋ฐ ํฌํธ(๊ธฐ๋ณธ๊ฐ: localhost:8081
)๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์ค์ ํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ํฌํธ๊ฐ ์ฐจ๋จ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค.adb reverse tcp:8081 tcp:8081
์คํandroid:usesCleartextTraffic="true"
$7$#$์ <application>
๋
ธ๋์ AndroidManifest.xml
์ถ๊ฐ@Eyesonly88 ๋๋ถ ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
ํนํ targetSdkVersion์ API 28๋ก ์ค์ ํ ๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ ๊ฒฝ์ฐ.
network_security_config ํ์ผ์ ๋ค์ ์ค์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
์ถ์ : ์ ๊ฒฝ์ฐ์๋ ๊ฐ ํ๋ ์ด๋ฒ์ ๋ํด ์ฌ๋ฌ network_security_config ํ์ผ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊น ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊ทธ ํ๋ ์ด๋ฒ์ network_security_config ํ์ผ์ ์ด ์ค์ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ์ต๋๋ค.
==================================================== =========================
์๋ ๋ฒ๊ทธ์ ๋ํ ์ถ๊ฐ ์ ๋ณด:
https://developer.android.com/training/articles/security-config.html ๋ก ์ด๋ํ๋ฉด ์์ ์ฝ๋ ์ค์ด Android API 24 ~ API 27์ ๋ํ ๊ธฐ๋ณธ ๋ณด์ ๊ตฌ์ฑ์์ ์ ์ ์์ต๋๋ค. (Android 7.0 ~ ์๋๋ก์ด๋ 8.1).
์ด๊ฒ์ ๋ด๊ฐ ์ค๋ฅ์ ์ง๋ฉดํ๋ Android 9, API 28์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋์์์ ์๋ฏธํฉ๋๋ค.
๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๋ฉด Android API 28์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
.
์ด๊ฒ์ด ์ด์ API์ ๋ํ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ธ ์ด์ ์
๋๋ค.
์ฒ์์ ์ ์๊ฒ ํจ๊ณผ๊ฐ ์์๋ ๋ค๋ฅธ ๊ฒ์ targetSdkVersion์ api 27๋ก ์ค์ ํ๋ ๊ฒ์ด์์ต๋๋ค. API 28์์ ์คํํ๊ณ ์ถ์ง ์๋ค๋ฉด ์ด๊ฒ๋ ํจ๊ณผ๊ฐ ์์ ์ ์์ต๋๋ค.
Android 9 ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ @delj ์ ๋ช ์๋ ๋๋ก manifest.xml์ Application ํ๊ทธ์
android:usesCleartextTraffic="true"
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.์ถ์ฒ
๋น์ ์ ๋ด ์๊ฐ์ ์ ์ฝํ์ต๋๋ค. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
์๋ค ์ ์๋ฎฌ๋ ์ดํฐ์์ Wi-Fi๋ฅผ ์ด๋ฉด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ๊ฒ์ yarn start
sudo yarn start
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค.
๋ด package.json์ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค.
{
...
"scripts":{
"start":"react-native start"
}
....
}
xCode ๋๋ Android Studio์ ๊ฐ์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์ ์์ ๊ฐ๋ฐ์ ์๋ฒ ์ฃผ์๋ฅผ IP๋ก ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค. ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์ ๊ฑฐํ๊ณ ์ฑ์ ๋ค์ ์คํํ์ญ์์ค. ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค.
Android 9 ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ @delj ์ ๋ช ์๋ ๋๋ก manifest.xml์ Application ํ๊ทธ์
android:usesCleartextTraffic="true"
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.์ถ์ฒ
๋น์ ์ ๋ด ํ๋ฃจ๋ฅผ ์ ์ฅ
๋ด๊ฐ ํ ์ผ: (์๋ฎฌ๋ ์ดํฐ Android Pie 9์์ ์์ ์ค)
- ์๋ฎฌ๋ ์ดํฐ์์
Ctrl+M
๋ฐDev Setting
Debug server host & port for device
์ IP ๋ฐ ํฌํธ๋ฅผ ์ค์ ํฉ๋๋ค. Bundler์ ํธ์คํธ ๋ฐ ํฌํธ(๊ธฐ๋ณธ๊ฐ:localhost:8081
)๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์ค์ ํ๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ํฌํธ๊ฐ ์ฐจ๋จ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค.- ํ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์
adb reverse tcp:8081 tcp:8081
์คํandroid:usesCleartextTraffic="true"
$7$#$์<application>
๋ ธ๋์AndroidManifest.xml
์ถ๊ฐ- ์์ ์ธ ๊ฐ์ง ์ฌํญ์ ์๋ฃํ ํ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
@rafidamr ์ ์๋ฃจ์ ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ ๋ ํ์ฌ ํ๊ฒฝ์์ ํฌํธ 8081์ ์ฌ์ฉํ ์ ์์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด Metro Bundler๋ฅผ ๋ค๋ฅธ ํฌํธ๋ก ์ ํํ์ต๋๋ค.
adb reverse tcp:8088 tcp:8088
react-native run-android --port 8088
๊ทธ๋ฆฌ๊ณ ๋น์ฐํ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ๋ฐ์ ์ค์ ์์ ์ ํฌํธ๋ฅผ ๊ฐ๋ฆฌ์ผฐ์ต๋๋ค.
@camposbrunocampos ๊ฐ์ฌํฉ๋๋ค ๐๐ผ , API level 28
target: Android 9.0
๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
network_security_config.xml
๋ฅผ ์
๋ฐ์ดํธํ์ผ๋ฉฐ ์ด์ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ ๋๋ก ์๋ํฉ๋๋ค.
ios์ android์์ ์์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค(android studio ์์ด, xcode๊ฐ ์๊ณ xcode๊ฐ ์๋ Android ์คํ๋์ค์์ ์๋) ๋๋ ์์ ๋ช ์๋ ๋ชจ๋ ๊ฒ์ ์๋ํ์ต๋๋ค.
๊ทธ๋์ ๋์์ด๋์ง ์์ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ด๊ฐํด์ผ ํ ์ ์ผํ ์ผ์ ๋ค์์ ์ํํ๋ ๊ฒ์ ๋๋ค. sudo npm start from react native project directory. ๊ถํ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. (๋งฅ์ ์ฌ์ฉํ์ฌ)
@inspiraluna ๊ธฐ๋ณธ npm ์ค์น ๋ฌธ์ ์ ๋๋ค. ์์คํ ๋๋ ํ ๋ฆฌ๋ฅผ chownํด์ผ ํฉ๋๋ค.
๋งค๋ํ์คํธ์์ android:usesCleartextTraffic= "true"๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐํฉ๋๋ค.
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค.
<application ...
ํ๊ทธ์android:usesCleartextTraffic="true"
๋ฅผAndroidManifest.xml
์ ์ถ๊ฐํ๊ณ ์ฑ์ ๋ค์ ๋น๋ํ์ต๋๋ค. ๊ทธ ํ, dev ์๋ฒ์์ ์ ์์ ์ผ๋ก ๋ก๋๋๊ธฐ ์์ํ์ต๋๋ค.
์ด๊ฒ์ ๋์๊ฒ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง ์ฒ์์ ์ด ์์ ์ฌํญ์ ์๋ํ์ง๋ง ์๋ํ์ง ์์๋ค๊ณ ๋งํ๋ฉด์ ์ด ๋ฌธ์ ๋ฅผ ์์ํ๊ฒ ์ต๋๋ค. ์ ์๋ฎฌ๋ ์ดํฐ๋ก ์๋ก ์์ํ๊ณ , abd๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฃฝ์ด๊ณ ๋ค์ ์์ํ๊ณ , Android Studio๋ฅผ ๋ค์ ์ค์นํ๊ณ , gradle์ ์ ๋ฐ์ดํธํ๋ ๋ฑ์ ์์ ์ ์ํํด์ผ ํ์ต๋๋ค.
@Eyesonly88 ๊ฐ์ฌํฉ๋๋ค..ํจ๊ณผ๊ฐ ์๋ค์
๋๋ ์ถ๊ฐํ๋ค
android:usesCleartextTraffic= "true" to AndroidManifest.xml
์๋ฎฌ๋ ์ดํฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด SO ๋ต๋ณ ์ MainApplication.java
ํ์ผ์ ํ์ธํ๊ณ getUseDeveloperSupport
๋ฉ์๋์์ BuildConfig.Debug
๋ฅผ ์ ๊ฑฐํ๋๋ก ์ ์ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<strong i="11">@Override</strong>
public boolean getUseDeveloperSupport() {
// Return true to load JS from the packager.
// If BuildConfig.DEBUG is false, assets will be loaded from assets folder.
return true; // BuildConfig.DEBUG;
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์์ ์คํํด ๋ณด์ญ์์ค.
adb reverse tcp:8081 tcp:8081
๋ช ๋ น ํ๋กฌํํธ์์ ํ๋ก์ ํธ๋ฅผ ๋ค์ ์คํํ์ญ์์ค.