Phonegap 개발시 발생하는 에러 대처법

스크린샷 2013-07-17 오후 2.57.10

항상 Native만 작업하다가 Hybrid로 작업을 할 기회가 생겨 이렇게 포스팅을 합니다.
생각보다 웹과 앱이 서로 주고받을 수 있다는게 신기하기도 하고 재미있습니다.

폰갭을 2013년 7월 현재 총 9개의 OS를 지원하며 꾸준한 업데이트가 이루어지고 있는 몇안되는 하이브리드 툴입니다.
제가 폰갮을 선택한 것도 활발한 커뮤니티와 꾸준한 업데이트때문이기도 합니다.

차후 다양한 것들을 넣어볼 기회가 올런지 모르겠지만, 앞으로 작업을 하면서 발생하는 문제점들을 꾸준하게 업데이트하도록 하겠습니다

 

테스트 조건

  • OS X 10.8.4 (Mountain Lion)
  • xcode 4.6.3
  • PhoneGap 2.9.0

 

개발시 부딪힌 문제

  1. libCordova.a 파일을 찾을 수 없어 Archive 생성이 안되는 경우
    1. 에러 메시지
    2. 타켓 > 빌드세팅(Build Setting)에서 “Other Linker Flags”를 찾는다.
    3. “$(TARGET_BUILD_DIR)/libCordova.a” 다음으로 변경한다.
    4. “$(BUILD_PRODUCTS_DIR)/libCordova.a” 로 변경한다.
    5. 이래도 안되면 “$(TARGET_BUILD_DIR)/libCordova.a” 삭제한다.
    6. 다음 “-force_load”를 “-all_load”로 변경한다.
    7. 참고URL : http://goo.gl/P116D
  2. Xcode4 – warning: no rule to process file
    1. 에러 메시지
    2. 타겟 > 빌드단계(Build Phases)로 이동한다.
    3. Complie Sources를 확장시켜 경고메시지에 나오는 파일을 찾아 선택한다.
    4. 찾은 barcodescanner.js 파일을 Copy Bundle Resources로 드래그시켜 이동한다.
    5. 이와 같이 웹리소스를 넣는 Wi-Fi Import/Export 나 하이브리드 작업시 자주 부딪힐 수 있는 문제니 참고하면 된다.
    6. 참고URL : http://goo.gl/XwSzs
  3. 안드로이드 폰갭내 브라우저의 Scale 예외 사항
    1. 갤럭시 노트1의 경우 4.0.4에서는 2배를 해야 제대로 출력되고 이외는 1.0으로 해도 정상적으로 출력
    2. 옵G 4.1.2에서 2배로 해야 정상적으로 출력
  4. 동시에 플러그인 호출할 때 발생하는 문제
    1. 동시에 동일 플러그인을 호출하는 경우 작동을 할 때 안할때가 있다.
    2. 페이지에 이미 로딩되었다고 판단되지만 네트웍이 느린 경우 cordova.js를 불러오기전에 먼저 플러그인을 호출해 작동을 하지 않는 경우가 있다. 이 때는 정말 뭐가 문제인지 몰라서 정말 한참을 고민했다. 이경우 해당 플러그인의 호출에 지연을 줘서 호출하니깐 정상적으로 동작했다.
  5. www 로컬폴더내 상대경로 인식못하는 문제
    1. jQueryMobile을 활용해서 제작하던 중 안드로이드에서만  _assets라는 경로를 인식 못하는 문제가 발생했다.
    2. 이름을 변경하고 나서 상대경로가 제대로 인식이 되었다.
  6. PushPlugin 사용시 유의해야할 점
    1. 문제 : 사용자가 푸시를 비활성화 하는 경우 success든 fail이든 함수를 호출해 웹단으로 전달해줘야 하는데 아무런 인자 값을 넘겨주지 못해 페이지 멈춤 증상이 발생
    2. 푸시 활성화 여부를 체크해 비활성화 되어 있는 경우 예외 처리를 별도로 함
    3. iOS 처리 코드

       
  7. 네트워크 불능시 대처 방법
    1. 문제 : PhoneGap 에서 제공하는 ConnectAPI를 이용하면 웹페이지에서 네트워크의 연결 상태를 체크할 수 있지만, 외부 URL로 연결하고 일부분만 활용하는 문제로 인해 API 사용을 할 수 없는 상태
    2. iOS 해결 프로세스
      1. Reachability 를 이용해 Native Delegate에서 코드 처리
      2. UIAlertView를 이용해 메시지를 출력하고 확인을 누르는 경우 강제 종료되도록 처리했슴
    3. iOS 처리 코드

       

 

 

Published by

안반장

Web과 App 개발을 하고 있으며 최근 워드프레스에 관심이 많아져 네이버 카페 워드프레스 홈페이지의 TF팀으로 활동 중 입니다.개인적으로는 안반장의 개발 노트라는 블로그를 운영하면서 개발의 즐거움과 고충들을 차곡차곡 담아가고 있습니다.