Duplicate Class Define 에러가 발생하는데 빌드는 당장 해야되면


빌드 옵션 설정 -> Minify 에서 Proguard를 사용하지 않는다.

'기타 > ETC' 카테고리의 다른 글

유니티 안드로이드 APK 빌드 하기 (Unity to Android APK)  (1) 2017.08.16
API 에러창 띄우기  (0) 2017.04.20
size_t 란 무엇인가? C++  (0) 2017.04.09

Unity로 만든 게임을 휴대폰 APK로 빌드해서 실행 해보자.


Unity 설정변경 + NVIDIA Codeworks 에서 받은 파일을 설치, 빌드 할 예정이다.


유니티 메뉴중 File 메뉴 -> Build Settings 를 클릭한다.



빌드 설정을 변경하는 부분이다.


1. Scenes In Build (맨위 창) 에는 게임에 사용될 씬이 모두 있어야 한다. 만약 없다면 씬전환이 이루어 지지 않는다.

2. Platform에서 Android를 클릭한다.

3. 왼쪽 밑의 Switch Platform을 클릭하면 변환이 진행된다. 상당히 오래 걸린다.


만약 안드로이드를 눌렀는데 오른쪽 밑의 화면이 안뜬다면 ?

이 사진처럼 Open Download Page가 있을것이다. (예시는 IOS) Open Download Page클릭 한뒤 설치하면 된다.


변환이 모두 완료됬다면 https://developer.nvidia.com/codeworks-android 사이트로 이동한다.

다음과 같은 창이 뜰텐데 Download 녹색 버튼을 클릭한다.

오른쪽의 DOWNLOADS 밑의 녹색 글씨중 Windows ( 64-bit)를 클릭해서 다운로드 한다. (맥이면 맥으로 다운로드)

이때 NVIDIA 계정이 필요하다.

CodeWorksforAndroid-1R6-windows.z01

CodeWorksforAndroid-1R6-windows.zip

CodeWorksforAndroid-1R6-windows.z02


언제 까지 될진 모르겠는데 첨부파일을 다운로드 해도 된다.



실행하면 다음과 같은 창이 반겨준다. Next > 를 클릭하자.


여기서도 다음 클릭

설치 경로 와 임시 다운로드 경로 (PATH)를 설정해야 하는데 가급적 기본 설정 그대로 두는것을 추천한다. Next > 클릭

다음과 같은 화면이 뜨게 될텐데

어떠한 버전으로 빌드하느냐에 따라 설정이 달라진다.

내 핸드폰은 안드로이드 7.0이고 안드로이드 5.0이상에서만 실행할 생각이기 때문에 5.0 이전 버전은 설치를 안할 예정

설치를 안할 버전은 클릭해서 no action으로 변경해 주면 된다.

no action을 선택하면 다음과 같은 창이 뜨는데 Keep & Apply 클릭해주면 된다.

나는 다음과 같이 설정했다. 5.0이전 버전만 no action으로 선택하고 나머지는 그대로 두었다.


그다음 왼쪽 아래에 있는 Automatically resolve dependency conflicts 에 체크하고 설치하는게 편하다.

체크 안하면 확인확인 엄청 눌러줘야됨

Next 를 누르면 다음과 같은 창이 나온다.

Accept All 한뒤 Accept 버튼 누르면 된다. 어차피 체크 안하면 못씀

다운로드가 시작되면 용량이 상당하다. 전부 설치시 약 11기가를 차지한다고 설명에 나온다.

설치가 완료됬다면 재부팅 하라고 알림이 뜰텐데 재부팅 해주자


재부팅 이후 이제 Unity에서 Path (경로) 설정을 해주자


유니티 Edit 메뉴의 Preferences를 클릭한다.

External Tools 메뉴에 들어가면 SDK, JDK 경로가 빈칸인데 이 부분을 설정할 거다.

SDK 옆의 Brose버튼을 누르면

경로를 변경하지 않고 그대로 설치했다면

C드라이브 -> NVPACK -> android-sdk-windows 폴더를 선택하면 된다.


마찬가지로 JDK 옆의 Browse 버튼을 누른뒤

C드라이브 -> NVPACK -> jdk1.8.0_77 폴더를 선택해 주면 된다.

위 사진처럼 경로가 정상적으로 설정 됬으면 완료이다.


다음은 프로젝트 이름, 조직과 관련된 설정을 할것이다.


유니티 메뉴 File -> Build Settings에서 왼쪽 밑의 "Player Settings..." 버튼을 클릭해 보자.

오른쪽 인스펙터에 다음과 같은 창이 표시될 것이다.

Company Name은 조직명이다.

Product Name은 상품명이다. 일반적으로는 게임 이름이다.


밑의 Identification의 Package Name을 보면 com.Company.ProductName 이렇게 하는게 일반적이다.

(www.naver.com 이런 주소처럼 역순으로 com.회사이름.제품이름 이렇게 서술한다.)

이때 숫자를 맨 앞에 표기하거나 한글을 사용하지 않는다.

스크립트를 만들때 맨앞에 숫자를 사용해서 만들어 봤으면 알겠지만 정상적으로 동작하지 않는다.


Identification안의 메뉴중 Minimum API Level은 이 프로그램이 작동할 최소 버전을 선택하는 것이다.

나는 안드로이드 5.0 롤리팝 부터 지원하도록 5.0을 선택했다

이렇게 했으면 설정은 끝났다.


File -> Build Settings에서 Build 버튼을 클릭한다.

APK 파일명을 뭐로 할지 정해주고 저장을 누르면 빌드를 시작한다.

이 파일을 핸드폰에 넣어준뒤 설치해주면 휴대폰에서 실행할 수 있다.

'기타 > ETC' 카테고리의 다른 글

Unity Gradle Build 에러시  (0) 2018.07.02
API 에러창 띄우기  (0) 2017.04.20
size_t 란 무엇인가? C++  (0) 2017.04.09

코딩을 하다보면 다음 사진과 같은 화면이 필요할 때가 있다.

어느부분에서 에러가 났는지 확인하기 위한 용도인데 이번에는 이 에러창을 띄워보자.


필요한것 : assert.h


공용헤더(stdafx.h)에 assert.h를 선언한다.

그뒤 에러를 확인하고자 하는 부분에서 다음과 같은 코드를 삽입하자.


지금 이 코드는 만들어진 객체 하나를 해제하는 과정이다.

m_pD3DDevice->Release(); 밑에

error = 1; 로 하게되면

창을 닫았을때 저렇게 에러 창이 발생한다.


assert를 이용해서 저런식으로 에러창을 만들수 있다.

'기타 > ETC' 카테고리의 다른 글

Unity Gradle Build 에러시  (0) 2018.07.02
유니티 안드로이드 APK 빌드 하기 (Unity to Android APK)  (1) 2017.08.16
size_t 란 무엇인가? C++  (0) 2017.04.09

요약 : 반복문을 사용할때 int의 경우 오버플로우를 발생 시킬 수 있다.(범위를 벗어남) 안전하게 사용하기 위해서 size_t를 사용할 수 있다.


주의할 점 : unsigned_int 타입이 "아니다" unsigned 자료형을 반환한다.  sizeof()가 반환하는 타입으로 , 해당 시스템에서 어떤 값 객체가 차지할 수 있는 이론적인 최대 크기를 표현하는 자료형 이다. 32비트 , 64비트 등 시스템에 따라 크기가 변화한다.


size_t가 필요한 이유는 1바이트로 만들 수 있는 최대 크기의 array(배열) 라든지, 하나의 값이 가질 수 있는 최대의 크기를 범위로 하는 값을 다룰 때 필요하다.


또 한개의 파일 크기가 4GB가 넘거나 큰 데이터를 다뤄야 한다면 필수적으로 알고 있어야 한다.


원문


size_t is an unsigned data type defined by several C/C++ standards, e.g. the C99 ISO/IEC 9899 standard, that is defined in stddef.h.1 It can be further imported by inclusion of stdlib.h as this file internally sub includes stddef.h.


This type is used to represent the size of an object. Library functions that take or return sizes expect them to be of type or have the return type of size_t. Further, the most frequently used compiler-based operator sizeof should evaluate to a constant value that is compatible with size_t. As an implication, size_t is a type guaranteed to hold any array index.

'기타 > ETC' 카테고리의 다른 글

Unity Gradle Build 에러시  (0) 2018.07.02
유니티 안드로이드 APK 빌드 하기 (Unity to Android APK)  (1) 2017.08.16
API 에러창 띄우기  (0) 2017.04.20

+ Recent posts