메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

Love2d의 안드로이드 포트는 알파 단계입니다.

차차 개선되어 나가긴 하겠지만 아직 불안정한 부분이 많으며, 일어날 수 있는 오작동과 그로 인한 결과는 일절 책임지지 않습니다.

 

이 문서는 Windows 사용자 기준입니다.

Linux나 Mac을 사용할 정도의 내공이 있으신 분들은 자신의 OS에 무언가가 필요할 경우 구글 등으로 검색해서 지혜를 찾아내는 혜안이 있으실 것이므로 

Windows 사용자 기준으로 문서를 작성합니다. 

 

0. 앞서

Love2d 안드로이드를 빌드하기 위해서는 PC와는 또 다른 개발환경이 필요하다.

PC처럼 그냥 exe 파일이랑 합체! 하면 좋겠지만 안드로이드는 그렇게 되지 않는다.

그래서 소스 코드를 받아서 빌드해야 한다.

안드로이드 개발에 대해 하나도 몰라도 상관없다.(나도 모른다.) 남이 만든거 컴파일만 하면 되는 거니까.

 

그냥 .love 파일을 핸드폰에서 돌리고 싶다면 그냥 최신 버전의 apk 파일을 받아 설치하면 된다.

( https://bitbucket.org/MartinFelis/love-android-sdl2/downloads )

그러나 '나는 내 게임으로 apk를 만들어서 올릴거야!' 라는 야망을 가지신 분들은 게임 이름, 버전 정보, 아이콘 등을 바꿔야 하므로 빌드를 새로 하고

약간의 수정 사항을 거쳐야 한다.

 

1.개발 환경 구축

일단 빌드하기 위한 개발 환경을 구축한다.

그냥 안드로이드 개발환경이라 cocos2d-x 등과 그닥 차이 없다.

만일 이미 상기의 개발환경을 갖추고 있다면 아래의 것들이 설치되어 있는지, 설정이 제대로 되어 있는지 정도만 확인하면 충분하겠지만

그런거 없는 사람들은 따라하면서 개발환경을 구축하자.

 

1-1. Java SDK(JDK) 설치

http://www.oracle.com/technetwork/java/javase/downloads/index.html

여기에서 자기 버전에 맞는거 찾아 다운로드해서 설치하면 된다.

약관에 동의해야 다운로드 받을 수 있고, 그 다음은 다음다음 넥스트 OK의 연속.

 

1-2. Ant 설치

http://ant.apache.org/bindownload.cgi

Current Release of Ant  부분으로 가서(Ctrl+F로 찾으면 됨) .zip archive 를 받아준다.

( http://apache.mirror.cdnetworks.com//ant/binaries/apache-ant-1.9.4-bin.zip )

다운로드받아서 압축파일을 C:\ant 경로에 풀어준다.

당연히 없을테니 만든다.

 

1-3. Android SDK 설치

http://developer.android.com/sdk/index.html

우리는 안드로이드 스튜디오 그런거 필요 없다. 따라서 아래쪽의 SDK Tools Only 부분으로 가서 받는다.  

( http://dl.google.com/android/installer_r24.0.1-windows.exe )

설치 다음다음.

 

1-3-1. Android SDK 패키지 설치

공식 문서에서는 이렇게 설치하라고 한다.

    Android SDK Platform-tools API 19.0.1
    Android SDK Build-Tools API 19.0.1 (or API 19.0.2, it doesn't matter)
    SDK Platform Android 4.4.2 API 19
    ARM EABI v7a System Image API 19
    Google APIs ARM System Image API 19
    Sources for Android SDK API 19
    Android Support Library
    Google USB driver

 

가급적 위의 버전으로 설치하자.

Android SDK Platform-tools 등의 경우 19.0.1 버전이 없을 수 있는데 그럼 그냥 요령껏 19 설치하던지, 최신 버전 설치하던지.

 

1-4. Android NDK 설치

r10 이상의 버전에서는 빌드 오류가 발생하니 r9d 버전을 설치하자.

http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip (64비트 사용자는 이쪽) 

http://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip (32비트 사용자는 이쪽)

자기 OS에 맞는 것 다운받아서 c:\ndk에 압축 해제하자.

 

고생했다. 이제 개발도구 설치는 끝났다.

 

2. 소스코드 다운로드받기

git따위 쓰지 않는다, 나는 야매니까!

다운로드 링크 https://bitbucket.org/MartinFelis/love-android-sdl2/downloads 로 가면 Download repository가 있다. 받아준다.

c:\love_android에 압축을 풀었다.

 

3. 환경변수 설정

윈도우키+Pause를 누르거나 내컴퓨터-우클릭-속성 누른다.

좌측의 고급 시스템 설정을 눌러준다.

고급 탭으로 가서 맨 아래의 환경변수.. 버튼을 누른다.

시스템 변수(S)에서 새로만들기를 눌러준다.

아래의 값들을 추가하자.

 

이름: ANT_HOME

값: C:\ant

 

이름: JAVA_HOME

값: C:\Program Files\Java\jdk1.8.0_25 (JDK 버전이 다르면 경로가 달라질 수 있으니 내가 어디에다 설치했는지 한번 확인해보자.)

 

이름: ANDROID_SDK

값: C:\Program Files\Android\android-sdk (설치 경로가 여기가 맞는지 확인해보자.)

 

이름: ANDROID_HOME

값: ANDROID_SDK랑 똑같음.

 

이름: ANDROID_NDK

값: C:\ndk

 

이름: ANDROID_SWT

값: %ANDROID_SDK%\tools\lib\x86 (64비트 사용자는 %ANDROID_SDK%\tools\lib\x86_64 를 입력.)

 

그리고 Path를 선택, 편집 버튼을 누른 뒤 아래의 값을 덧붙인다.

;%ANT_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_NDK%

 

4. ndk-build 실행

명령 프롬포트를 실행한 뒤 cd c:\love_android 명령을 실행하여 소스를 받아놓은 곳으로 간다.

이후 ndk-build 실행.

멀티코어라면 좀 더 효율적인 작업을 위해 --jobs 명령어를 사용할 수 있다.

ndk-build --jobs 3 식으로. 숫자는 코어수 +1을 의미한다.

듀얼코어라면 코어 2개+1이니까 3이고, 쿼드코어라면 코어 4개+1이니까 5 넣어주면 될 것이다.

싱글코어는 그런거 없다. 그냥 ndk-build.

시간이 좀 걸리고, 기다리면 된다. 

 

5. ant 실행

ant debug 명령어를 실행한다.

모든 것이 성공적이라면 c:\love_android\bin\love_android_sdl2-debug.apk 가 생겼을 것이다.

빌드 성공!

 

만약 아이콘을 바꾸거나 AndroidManifest.xml을 수정하게 된다면 위의 과정을 모두 거칠 필요는 없고

그냥 ant debug만 다시 해주면 된다.

 

구글 Play Store에 게임을 내기 위해서는 이 apk 파일에 서명을 해야 하는데 (keystore)

이에 대한 내용은 http://blog.naver.com/norubal29a/22020266816 링크를 참조하길 바란다.

 

다음 글에서는 소스를 수정하여 엔진이 아닌 자신의 게임을 apk로 만드는 방법에 대해 다루어 보겠다. 

조회 수 :
572
등록일 :
2014.12.15
00:59:56 (*.209.38.113)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=797992
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
45 Lua 소코반: 상자를 만들고 옮기고 상자와 상자가 겹치거나 상자와 벽이 겹치지 않게 해 보자! 노루발 677   2013-09-17 2013-09-17 08:32
-- 플레이어 위치를 저장하는 변수 -- 초기 시작지점은 5, 5로 설정. playerx = 5 playery = 5 -- 박스의 위치를 저장하는 배열. box = {} -- 움직인 횟수 저장 moves = 0 -- 맵 데이터를 저장하는 8*8의 2차원 배열 Map 생성 map = {} for a = 1, 8 do     ma...  
44 cocos2d-x Clipping Layer 수정 똥똥배 670   2013-09-10 2013-09-13 07:28
흔히 구글에서 찾아보면 다음과 같은 Clipping Layer 소스를 찾을 수 있다. CCEGLView::sharedOpenGLView()->setScissorInPoints( // scissorRect is the rectangle you want to show. clippingRegion.origin.x + getPosition().x, clippingRegion.origin.y + ...  
43 cocos2d-x 2.2.2 윈도우 환경 기본 메모리 누수 똥똥배 640   2014-03-10 2014-03-11 03:51
cocos2d-x 2.2.2를 윈도우에서 실행시키고 나서 종료하면 기본으로 4바이트의 메모리 누수가 발생한다. 이건 CCScriptEngineManager가 원인인데 CCObject들은 delete를 실행할 때마다 CCScriptEngineManager의 sharedManager를 호출하기 때문이다. 결국 모든 C...  
42 QT 프로젝트 배포에 필요한 거 똥똥배 602   2013-07-11 2013-07-11 04:25
일단 빌드한 EXE와 리소스 파일은 당연히 필요할 테고, 그 다음으로, QtCore4.dll QtGui4.dll 파일이 필요하다. 디버그 모드라면 QtCored4.dll, QtGuid4.dll 가 필요하겠지만, 디버그 모드를 배포할 생각은 아닐 것이므로 필요없을 듯. 하지만 이것만으로 끝난...  
41 cocos2d-x 2.2.2 문자열 출력 버그 [2] 똥똥배 601   2014-06-10 2014-08-23 22:35
cocos2d-x 2.2.2, 맥에서만 나타는 문제다. 윈도우, 안드로이드에서는 아무 이상 없다. 줄 수가 꽤 긴 문자열을 출력할 경우, 문자가 전부 다 나오지 않고 잘린다. 잘리는 기준은 줄이다. 문자 수가 어떻든 간에 줄 수에 따라서 잘려버린다. 아마 문자열의 줄 ...  
40 소코반: 맵을 초기화하자. 노루발 588   2013-09-17 2013-09-17 08:27
8*8 맵의 데이터가 담길 2차원 배열(테이블)을 초기화하는 코드이다. Map = {} for a = 1, 8 do     Map[a] = {}     for b = 1, 8 do         Map[a][b] = 0     end end Map 테이블의 [1][1]부터 [8][8]까지 모두 0이라는 값이 담기고 Map[0][0]이나 Map[1][...  
39 Love2D를 사용하기 위한 Lua 강좌: 코딩 스타일, 변수 노루발 585   2013-09-17 2013-09-17 08:22
안녕하세요, 노루발입니다. 어제는 Lua에 대해 대강 알아보고 입력과 출력을 다뤄봤습니다. 출력은 print([출력할 것]), 입력은 io.read()였습니다. 일단 본격적인 프로그램 작성에 앞서 Lua의 코딩 스타일에 대해 알아보겠습니다. 코드를 작성하는 것을 코딩...  
38 구글 인앱 구매 Soomla로 구현해본 후 팁 똥똥배 577   2014-09-20 2014-09-20 18:45
1. 일단 알파 테스트라도 앱을 출시시켜야 인앱이 작동한다. 그리고 APK 업로드 후에 바로 인앱이 적용되지 않는다. 구글에 게시되는 데, 시간이 걸리므로 인앱 등록 - APK 등록을 마친 후 다음날부터 구현하는 게 깔끔하다. 이걸로 모르고 하루종일 왜 안되나...  
» Love2d 안드로이드 빌드하기 노루발 572   2014-12-15 2014-12-15 00:59
Love2d의 안드로이드 포트는 알파 단계입니다. 차차 개선되어 나가긴 하겠지만 아직 불안정한 부분이 많으며, 일어날 수 있는 오작동과 그로 인한 결과는 일절 책임지지 않습니다.   이 문서는 Windows 사용자 기준입니다. Linux나 Mac을 사용할 정도의 내공...  
36 Love2d 안드로이드 게임 패키징하기 [3] 노루발 546   2014-12-15 2021-01-11 12:11
이 문서는 개발 환경이 갖추어져 있는 상태이고, 빌드를 무사히 마친 뒤라고 가정합니다. 또한 이 문서는 https://bitbucket.org/MartinFelis/love-android-sdl2/wiki/Game%20Packaging#markdown-header-how-to-package-the-apk-with-your-own-love-090-game ...  
35 cocos2d-x 게임을 iOS에 이식할 때 생기는 문제들 똥똥배 543   2013-08-26 2013-09-13 07:28
1. 윈도우 한정 명령어는 사용할 수 없다. 너무도 당연한 문제. 2. 한글 인코딩 문제 최신 VS을 사용하면 겪지 않을 문제일지 모르겠지만, 보통은 h나 cpp를 ANISI형식 문서로 만들 것이다. XCode에서는 Unicode나 UTF-8 형식을 쓰므로 소스에 박아둔 한글은 ...  
34 Love2D: 콜백 함수들 노루발 538   2013-09-17 2013-09-17 08:25
Love의 콜백 함수들은 love.run(가장 메인이 되는 겁니다.)에 의해 호출되며, 많은 작업들을 수행합니다. 이것들이 없다고 게임이 실행되지 않는다거나 하지는 않지만 좋은 게임을 만들기 위해선 이것들을 적재적소에 활용해야 합니다. 이미 아시는 분들도 있...  
33 cocos2d-x에서 schedule_selector 정의 변화 [1] 똥똥배 521   2013-08-19 2013-09-13 07:28
예전에 적은 글에는 터치와 업데이트를 활성화 시키는 법을 적어놨다. http://hondoom.com/zbxe/index.php?mid=study&document_srl=385031 이글은 cocos2d-1.0.1-x-0.9.1를 기준으로 적은 글인데, 최신버전으로 오면서 update의 정의에 대해서 변화가 생겼...  
32 Love2d 여러 플랫폼으로 빌드 자동화 노루발 470   2014-11-12 2014-11-12 17:35
https://github.com/MisterDA/love-release/blob/master/README.md http://www.ambience.sk/lua-love2d-game-distribution/  
31 Love2D? 개요, 설치, 실행. 노루발 464   2013-09-17 2013-09-17 08:20
love2d.org/Love2D 홈페이지. Lua로 2D 게임을 만드는 프레임워크입니다. 무료고, 오픈 소스이며, 윈도우, 맥, 리눅스에서 동작하며, 안드로이드에서 동작하게 하는 논의도 활발하다 합니다. 그럼 일단 받아봅시다. 아무리 좋아도 내 컴퓨터에 못 깔면 소용없...  
30 [Love2D] 일단 뭔가 해보자 노루발 457   2013-09-17 2013-09-17 08:27
감기를 딛고 다시 재기... Lua로 초 간단한 원시적인 게임을 만들려고 합니다. 뭐냐하면 소코반이라고, 이렇게 말하시면 모르지만 푸쉬푸쉬라면 아시는 분들이 엄청 많으실겁니다. 이걸 그래픽조차 씌우지 않은 아스키로. ########## #    ..      # #    o  o...  
29 Love2D를 사용하기 위한 Lua 강좌: 변수형 노루발 446   2013-09-17 2013-09-17 08:23
안녕하세요, 노루발입니다. 저번에 변수에 대해 다뤄보았습니다. 변수는 값을 담는 그릇이라고 했습니다. 그리고 루아는 변수 안에 있는 값이 숫자던 문자던 그냥 변수로 취급한다고 했고 "몇개를 살까요?" 라는 질문에 "ㄹ개" 라고 답할 수도 있다고 했습니...  
28 cocos2d-x CCMenuItem 자신을 지웠을 때 생기는 에러 똥똥배 442   2013-09-13 2013-09-13 07:28
CCMenuItem으로 메뉴를 생성하고 타겟과 셀렉터를 정해서 그 명령 안에서 자신을 지우게 되었을 경우 activate() 안에서 에러가 발생한다. 아직 activate()를 실행해야 되는데 remove 당했기 때문에 생긴 문제인데, 구글에서 검색해 본 결과, https://github.c...  
27 턴 기반 시스템 구현에 대한 글 [4] 노루발 440   2020-11-14 2020-11-18 05:49
플레이어와 NPC들의 모든 행동에 1턴이 소요된다면 턴 기반 시스템의 구현이 쉽겠지만 (사실 엄청 쉽지는 않다... 게임엔진은 실시간으로 돌아가는데 행동은 턴으로 제약해야 하니) 전략성을 요구하기 위해 행동에 소모되는 턴을 다르게 설정한다면 다소 생각...  
26 love.graphics.print 한국어 출력 노루발 431   2013-09-17 2013-09-17 08:24
Love2D 사용 시 한국어가 ㅁㅁㅁ이나 ??? 등으로 깨져 나와 해결책을 수소문하여 겨우 찾았다. 원래 중국어 등을 출력하기 위한 것이었으니 적절한 폰트를 쓴다면 한자나 히라가나등도 출력할 수 있을 것이다. function love.load() korfont = love.graphics....