Skip to content

Instantly share code, notes, and snippets.

@ainvyu
Created October 14, 2013 16:30
Show Gist options
  • Save ainvyu/6978367 to your computer and use it in GitHub Desktop.
Save ainvyu/6978367 to your computer and use it in GitHub Desktop.
초기설정

설정

PATH 변수에 Java 경로와 Android SDK 경로 설정이 필요하다.

환경 변수에 JAVA_HOME을 추가한다. JAVA_HOME의 값은 jdk가 설치된 디렉토리를 넣는다.

setx -m JAVA_HOME "C:\Program Files\Java\jdk1.7.0_21"

환경 변수에 ANDROID_HOME 을 추가한다. 이것은 반드시 필요하진 않고 아래 PATH 변수 추가의 편의를 위해 넣는다.

setx -m ANDROID_HOME "D:\utils\development\sdk\android_sdk\android-sdk_r21.1-windows\android-sdk-windows"

PATH 변수에 다음과 같이 %JAVA_HOME%\bin과 Android SDK가 깔린 경로의 tools 디렉토리를 추가한다.

;%ANDROID_HOME%\tools
;%ANDROID_HOME%\platform-tools
;%JAVA_HOME%\bin

[[/setting/ant]]가 필요하므로 Ant를 설치하고 설정해놓는다.


Phonegap 설치 (npm 이용)

npm install -g phonegap
npm install -g cordova

사용법 (phonegap) (이 방법을 추천)

$ phonegap create my-app
$ cd my-app
$ phonegap run android

사용법 (cordova) (잘 안되는듯)

$ cordova --verbose create hello com.example.hello "Hello World"
$ cd hello
$ cordova --verbose platform add android
$ cordova --verbose build

Platform 삭제

$ cordova --verbose platform rm android

index.html 에서 phonegap.js 대신 cordova.js 로 변경

실행시 phonegap.js에서 Plugin loading may fail이 뜨는데 내용을 보면 cordova.js를 포함한 <script> 태그를 찾는 내용 (findCordovaPath)이다. 그래서 cordova.js를 script 태그로 넣으면 중복 로딩을 한다고 한다.

이는 phonegap.js가 아닌 cordova.js를 로딩해야 해결이 된다. phonegap.js와 cordova.js는 한글자 틀리지 않고 똑같다! 그래서 이런 문제가 생기는 것이다.


Phonegap 설치 (직접 빌드)

아래 명령을 쳐서 현재 어떤 버젼의 SDK가 설치되어 있는가 체크한다.

android list

만약 아무 것도 안깔려있으면 아래 명령을 쳐서 뜨는 윈도우에서 설치해놓는다.

android

그리고 아래 링크로 들어가 cordova를 다운 받아 적당한 곳에 풀어놓는다.

http://cordova.apache.org/#download

압축을 풀면 나오는 여러 압축 파일중 cordova-android.zip의 압축을 풀어놓는다.

그리고 아래 명령을 쳐서 빌드를 시작한다. 아래의 android-17는 현재 SDK가 r17 일때를 가정한 것이다.

cd %CORDOVA_ROOT%\cordova-android\framework
android update project -p . -t android-17
ant jar

그리고 프로젝트를 생성한다.

cd %CORDOVA_ROOT%\cordova-android\bin
create C:\Users\envi\test com.example.test HelloWorld

이후 Android studio를 열어 해당 디렉토리를 Import 시키면 된다.

Troubleshooting

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

cordova로 프로젝트를 생성 후 빌드해서 올리면 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo 에러가 난다.

이는 Android studio 에서 빌드시 out 디렉토리에 MainActivity에 해당되는(AndroidManifest의 에 해당 되는 클래스) 클래스의 *.class 파일이 맞지 않는 곳에 빌드가 되어서 그렇다. 빌드시 out\test\test\com\example\test에 해당 파일이 생성되는데 out\production\test\com\example\test에 생성 되어야 하는게 맞다. 실제로 해당 파일을 맞는 곳에 옮겨주고 빌드를 하면 제대로 작동한다.

Module setting에 들어가서 Modules에 해당 메인 모듈의 Paths 탭에 들어가서 Inherit project compile output path를 Use module compile output path로 바꾸고 Test output path를 Output path와 똑같이 만들고 다시 빌드를 하면 제대로 동작한다. (이게 맞는 방법인지는 모르겠다.)

Atom x86 에뮬레이터에서 레이아웃이 깨지는 현상

AVD Manager에서 해당 AVD을 Edit해서 Emulation Options에서 Use Host GPU 옵션을 해제하면 된다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment