버그 및 디버그

에러 처리

만일 다음과 같은 같은 에러가 발생하면

Unable to load script from assets index.android.bundle on windows

구글링 해보니 다음과 같이 하면 된다고 해서 실행했더니 성공했다.

1. (프로젝트 폴더에서) mkdir android/app/src/main/assets
2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
3. react-native run-android

그리고 코드를 수정하고 다시 적용할 때에 Reload가 안되는 에러가 발생할 수 있다. 이때는 휴대폰을 흔들어서 Dev Settings에 가서 Debug server host & port 부분에 다음과 같이 컴퓨터 아이피와 포트 번호를 설정하면 된다.

192.168.0.142:8081

물론 아이피는 컴퓨터 마다 다를 수 있고 포트는 Metro Bundler 창에 나와 있는 번호를 이용하면 된다.

이전버전 에러

이때 버전이 맞지 않아서 에러가 발생할 수 있습니다. 구글링을 참조하여 버전 0.56.0일 때는 다음과 같이 버전을 변경해주면 됩니다.

react-native init FirstProject
cd FirstProject
react-native run-android
npm uninstall react-native
npm install --save react-native@0.55.4
react-native run-android
npm install --save babel-core@latest babel-loader@latest
npm uninstall --save babel-preset-react-native
npm install --save babel-preset-react-native@4.0.0
react-native run-android

다음은 성공한 package.json 파일 내용입니다. 아래 내용 중 "dependencies", "devDependencies" 부분을 복사해서 덮어쓰고 다시 설치 npm install을 해도 됩니다.

{
  "name": "FirstProject",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-preset-react-native": "^4.0.0",
    "react": "16.4.1",
    "react-native": "^0.55.4"
  },
  "devDependencies": {
    "babel-jest": "23.4.2",
    "jest": "23.5.0",
    "react-test-renderer": "16.4.1"
  },
  "jest": {
    "preset": "react-native"
  }
}

실행중 에러

실행하던 중에 다음과 같은 오류가 나오면

:app:incrementalDebugJavaCompilationSafeguard FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:incrementalDebugJavaCompilationSafeguard'.
> java.io.IOException: Could not delete path 'C:\Users\dyoon\SVN_Lecture\ReactNative\work\LearningReactNative\Countly\android\app\build\intermediates\classes\debug'.

다음과 같이 해줍니다.

> npm start -- --reset-cache

그리고 다음과 같은 메시지가 뜨면

Loading dependency graph, done.

Ctrl + C를 눌러 멈추고 다시 실행을 합니다.

> react-native run-android

build error

빌드 중에

AAPT: error: resource android:attr/ttcIndex not found.

error: failed linking references

에러가 발생할 때는 프로젝트 폴더의 android/app/build.gradle 파일의 compileSdkVersion = 28로 설정해 본다. 또는 android/app/build.gradle 파일의 buildToolsVersion '28.0.3'로 설정해 본다. 그리고 휴대폰 디버깅할 때 device offline이 발생하면 휴대폰을 다시 리부팅하고 연결해본다.

또는 안드로이드 스튜디오에서 프로젝트 폴더의 android 를 열고 ProjectStructure의 Properites의 compileSdkVersion=API 27: Android 8.1로 했고 Build Tool Version: 28.0.3으로 처리했습니다.