본문 바로가기

카테고리 없음

Windows에서 Cordova 개발환경 구축하기

cordova가 꽤나 괜찮은 웹앱 제작 플랫폼임에도 불구하고 ionic이 갑자기 급부상할동안에도 아주 난해한 documentation때문인지 커뮤니티의 발전이 너무 디딘 편이다. 뭐 하나 검색하려고 하면 없다. 그냥 네이티브로 재미볼까 싶다가도 cordova가 얼마나 괜찮으면 ionic이라는, cordova에 그저 웹 패키지만 제공해주는 툴이 인기를 끄는지 (외국 한정) 알고 싶어서 포기할 수 없었다.

 

아무튼 시작하기 전에, 이 글은 cordova 전용이지만 ionic에서 막히는 경우의 부분들도 해결할수는 있을것이다. 하지만 ionic은 관심이 없기 때문에 따로 글은 쓰지 않을 예정.

 

 

 

* 설치법

일단 안드로이드 스튜디오 설치

 

node.js도 설치하고 nodejs 경로와 global node_modules 폴더를 환경변수 지정해줌.

 

 

 

 

cordova build를 하려는데 뭔가 잘 안되네 ^^ ;

 

 

ANDROID_SDK_ROOT

ANDROID_ROOT

 

은 같은 변수로 지정해주면 된다. android의 sdk는 귀찮게도 C:\Users\bonos\AppData\Local\Android라는 경로에 있는데, program Files 폴더에 있으면 오죽 좋겠나 싶다가도 구글께서 그러하고 싶으시다는데 따라야지 별 수 없다.

 

아, 그리고 ANDROID_ROOT 변수는 deprecated된 변수이지만 예외를 위해 일단 써놓은 것이니 문제생기면 바로 달려가서 변수 추가하는거 잊지 말기~

 

 

 

이 짓거리들을 다 해놓아도

 

Requirements check failed for JDK 8 ('1.8.*')

 

라며 이상한 소리를 해댄다. 지금 최신 버전이 15인데 우리 할아버지도 안쓰실 8을 다운받으라고 하는데, 이것때문에 아직도 JAVA 설치 링크를 띄우지 않았다. 여기로 들어가서 다운받도록 하자. 옛날버전이라 CDN 관리가 잘 안되는지 속도가 뒤1지게 느린 걸 알 수 있다. 나같아도 상식적으로 거들떠보지도 않을 8버전을 아직까지 찾는 정신병자가 있을라나 생각할 것 같다.

 

아직도 구닥다리 8버전을 받으라고 하는 이유는 stackoverflow에서 Carolus라는 유저의 글을 통해 알 수 있다.

 

I took a look at the piece of code that actually checks for the version number of your java. Look for the following: module.exports.check_java in platforms/android/cordova/lib/check_reqs.js. on line 220. You will see a regex and comment left by the team that Java 10 will be supported in the future.

 

The existing regular expression will fail when it is run against the latest versions of java such as Java 10. That is because Java 8 or 9 are saved in the following format: 1.[8-9].** but Java 10 is saved as 10.** and the regular expression looks for a version in the format 1.[8-9].**

 

// Let's check for at least Java 8, and keep it future proof so we can support Java 10 var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);

 

 

(그래서 몇년이 지난 지금까지... 지원 안해주고 뭐하고 있니..? ^^)

 

 

그렇게 길고 기나긴 과정 끝에, 드디어 빌드를 하나 싶더니..

 

Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

 

=> Gradle 없으니까 설치해라. 너 안드로이드 스튜디오 설치안했어? 거 안에 있을텐데..

 

 

이 문구를 보고 Gradle을 따로 더 설치했다간 인생에 800MB를 손해보는 것이다. 안드로이드 스튜디오를 설치했다면 Gradle은 자연스럽게 설치될수밖에 없다. Gradle의 경로는 안드로이드 스튜디오를 실행하여 File탭 -> Settings -> Gradle을 통해 경로를 알 수 있지만 친절한 경로가 아니라서 잘 모를 수 있다. 내 경우에는

 

C:\Users\bonos\.gradle\wrapper\dists\gradle-6.1.1-all\cfmwm155h49vnt3hynmlrsdst\gradle-6.1.1\bin

 

안에 꼭꼭 숨어있었다. (유저 네임마다, gradle 버전마다 경로 내용이 매우 다르니 확인 바람)

 

이 경로를 환경변수로 추가하면 된다.

 

(여기서 주의할 점, .gradle 폴더는 AVD를 한번이라도 실행시켰을 경우에 생긴다. AVD를 먼저 실행시켜주어야 한다.)

 

 

 

하지만 여기서 끝나지 않는 아주 지랄맞은 새1끼들이었는데, 빌드하다가 난데없이 중간에 사망한 뒤

 

Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     platforms;android-29 Android SDK Platform 29
  To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager. 

 

 

라고 내게 일침을 놓는다.. 의역하자면

 

너 라이센스에 문제가 있어서 그런가 Android SDK를 받아들이지 못하네? SDK 라이센스 계약에 동의하고 누락된거 있으면 다시 설치해.

 

이는 참 어이없고도 간단한데, C:\Users\[user-name]\AppData\Local\Android\Sdk\tools\bin 경로로 들어가서

 

./sdkmanager.bat --licenses

 

명령을 내려주고 조항들마다 accept 갈겨주면 된다.

 

 

 

BUILD SUCCESSFUL in 42s

 

이후에야 빌드가 완료된 모습...

 

 

 

그런 뒤에 AVD를 생성하여 cordova emulate android 명령으로 마무리하도록 하자.

 

 

 

명령에도 AVD가 또 알아서 뜨지는 않는데, 이럴때는 AVD를 먼저 실행시켜주고 명령을 주면 된다.

 

 

 

cordova가 이 모든 고난을 이겨내고 할만한 가치가 있느냐고 묻는다면, 확실히 웹앱 프레임워크로는 유일하다시피 하므로 네이티브 짜기 귀찮다 싶은 사람들에게는 그 가치를 고스란히 느낄 수 있음을 시사하는 글이었던 것 같다.