메뉴 건너뛰기

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

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 추천 수 날짜 최근 수정일
185 express.js 세션 적용 후 리다이렉트 시 세션 적용이 제대로 안 되는 문제점 노루발 4   2024-02-07 2024-02-07 14:23
문제: logout.js router.get('/', (req, res) => { req.session.destroy(); res.redirect('/login'); }); login.js if (result[0] !== undefined) { // 로그인에 성공하였으므로 세션을 할당 req.session.uid = result[0].uid; req.session.us...  
184 Bootstrap4 container class가 적용된 div의 양 옆에 설정하지 않은 margin이 생김 노루발 5   2024-02-07 2024-02-07 14:25
문제: <div class="container"> TEST </div> 위와 같은 페이지를 브라우저에서 렌더링 시 div의 양 옆에 설정하지 않은 빈 margin이 생김. 해결: <div class="container-fluid"> TEST </div> margin을 0으로 주고 width를 100%로 주고 등등 별걸 다 해봤는데 ...  
183 리캡챠 적용 [1] 노루발 11   2021-01-08 2021-01-11 12:15
XE 회원가입 시 구글 리캡챠 인증 추가하기 : 네이버 블로그 (naver.com)  
182 certbot을 이용한 HTTPS 인증서 발급 및 적용 노루발 18   2021-01-12 2021-01-12 16:57
snap 설치 및 업데이트 sudo snap install core; sudo snap refresh core certbot 설치 sudo snap install --classic certbot 심볼릭 링크 생성 sudo ln -s /snap/bin/certbot /usr/bin/certbot nginx에 맞춰 자동 설정 sudo certbot --nginx 알아서 다 해주기...  
181 love2d에서 안드로이드 터치 제스처 인식하기 노루발 20   2020-11-12 2020-11-12 00:38
-- 안드로이드/iOS 등등의 터치스크린 입력을 받는 기기에서는 총 3가지의 콜백 함수를 사용한다: -- love.touchpressed / love.touchmoved / love.touchreleased -- 다만 위 3가지 함수는 마우스 클릭으로는 발생하지 않으므로 추가적인 처리가 필요하다. -- ...  
180 Lua-love2d TCP 통신 [1] 노루발 21   2023-07-14 2023-07-22 16:19
서버: Lua 클라이언트: Love2d(Lua) 서버 구동에는 luasocket 라이브러리가 필요하며, luarocks로 설치할 수 있음. 별도 패키지 관리자가 있는 리눅스 시스템에서는 apt-get install lua-socket 등의 패키지 관리자 명령어로 설치 가능하며 Windows에서 구동시...  
179 illegal character 방지 [3] 노루발 22   2023-07-17 2023-07-19 16:14
문제점: 클라이언트 <-> 서버 통신을 하면서 다음과 같이 메세지를 주고받기로 함 패킷종류|파라미터1|파라미터2 예) MOTDREQ -> 서버에 MOTD를 요청 (파라미터 없음) MOTD|공지사항입니다 -> MOTD는 "공지사항입니다" 임 (파라미터 1개) MSG|김덕배|안녕하세...  
178 Lua 클래스 만들고 활용하기 노루발 23   2020-11-06 2020-11-06 22:43
------------------------ stairs.lua ------------------------ Stairs = {} function Stairs:new(x, y, floor, direction, locked) local newStairs = {x = x, y = y, floor = floor, direction = direction, locked = locked} self.__index = self retur...  
177 Lua 테이블 안에 함수 저장하기 노루발 28   2020-11-06 2020-11-06 21:07
테이블 안에 함수를 저장할 수 있다. function move(object, direction) print(object .. " moved to ".. direction) end scheduler = {} scheduler.queue = {} function scheduler.newentry(action, args) scheduler.queue[#scheduler.queue + 1] = {} schedu...  
176 루아 스타일 가이드 노루발 33   2020-11-19 2020-11-19 00:58
http://lua-users.org/wiki/LuaStyleGuide https://github.com/Olivine-Labs/lua-style-guide  
175 Lua 인수로 nil값이 들어왔을 경우 처리하기 노루발 36   2020-11-06 2020-11-06 20:29
or 연산자를 사용한다. 예제 코드: function moveplayer(direction) direction = direction or "nowhere" print("player moved to ".. direction) end moveplayer() --> "player moved to nowhere" moveplayer("north") -- "player moved to north" 이런 코드...  
174 이쁜 눈나가 유니티 개발 알려주는 재생목록 노루발 37   2020-11-12 2020-11-12 05:59
https://www.youtube.com/watch?v=Ur2jN6_si6c&list=PLi-ukGVOag_1lNphWV5S-xxWDe3XANpyE https://www.youtube.com/watch?v=sJClf9S7AMA&list=PLi-ukGVOag_0HR09oTs966Wt81IYYXlFH 유니티를 배우고 있는 건 아닌데 만들어진 라이브러리를 다루는게 아...  
173 Love2d 이미지 하얗게 그리기 노루발 42   2020-11-23 2020-11-23 04:11
아래와 같은 코드를 사용해 이미지에 색상을 적용할 수 있다. hamster = love.graphics.newImage("hamster.png") love.graphics.setColor(1, 0, 0) -- 빨간색으로 그리기 love.graphics.draw(hamster) love.graphics.setColor(1, 1, 1) 하지만 이미지를 하얗게...  
172 Love2d 게임 안드로이드로 패키징하기 노루발 48   2021-01-11 2021-02-21 01:45
http://hondoom.com/zbxe/index.php?mid=study&document_srl=797993 버전이 바뀌면서 빌드 방법이 바뀌었기에 다시 정리한다. 1. Android studio 설치 https://developer.android.com/studio/index.html SDK 플랫폼 - Android 11.0 [API 30] SDK 버전 - An...  
171 특정좌표를 기준으로 zoom in/zoom out하기 노루발 58   2020-11-11 2020-11-11 01:22
-- x,y - 줌인/줌아웃시 기준점 (좌표 이동이나 scale에 영향받지 않는 순수한 화면 좌표) -- scale - 현재 scale(1:그대로 0.5:1/2 사이즈 2:2배 사이즈) -- scaleinc - 얼마나 scale을 변화시킬것인가 (I usually use 0.1 or -0.1) -- camx - 카메라의 x좌표...  
170 Windows To Go와 R-Studio를 이용한 손실된 데이터 복구하기 노루발 89   2020-01-30 2020-01-30 19:52
하기의 복구 방법으로 모든 자료를 100% 복구할 수는 없으므로 자료의 손실 이전에 신뢰성 있고 주기적인 백업이 선행되어야 한다. 준비물: - 부팅 USB 혹은 외장 HDD/SSD - 복구한 자료를 저장할 외부 저장장치 (옵션) - R-Studio https://www.r-studio.com/ ...  
169 Oracle cloud에 Nginx/MariaDB 설치하기 노루발 93   2020-12-06 2020-12-06 20:19
https://itreport.tistory.com/624  
168 Love2d DPI 이슈 해결 [3] 노루발 97   2019-06-29 2019-07-01 06:34
이런 love 프로젝트가 있다고 하자. (conf.lua) function love.conf(t) t.window.width = 640 t.window.height = 360 end 창 크기를 640*480으로 설정한 뒤 실행하면 어떻게 보일까? 당연히 창 크기가 640*480 크기로 보여야겠지만 내 컴퓨터에서는 이렇게 보...  
167 Love2d로 만든 로그라이크 예제 노루발 252   2020-11-30 2020-11-30 22:54
https://gitlab.com/Jalexander39/roguelikedev-does-the-complete-roguelike-tutorial 이걸 왜 여태 몰랐지...  
166 love.update(dt) 에서 버벅이는 현상. 노루발 256   2013-09-17 2013-09-17 08:15
윈도우를 잡고 흔들거나 윈도우 사이로 잠시 전환하거나.. 등으로 원치 않는 렉이 발생할 시 dt의 값이 평소보다 크게 들어갑니다. (예를 들면, 평소에 0.25가 들어간다면 이번에는 3.1이 들어갑니다.) 이건 평소보다 더 많이 크기 때문에, dt를 가지고 타이...