반응형

 

 

 유니티는 기본적으로 Handheld.Vibrate() 함수로 진동기능이 들어가있지만. 해당 함수로 실행되는 진동은 약 1초가량으로 생각보다 진동이 길다. (진동 시간 조절이 불가능)

 

게임을 제작하다보면 1초의 긴 진동보다 짧은 진동이 필요할때가 생각보다 많다. 따라서, 짧은 진동을 필요로 할때 Handheld.Vibrate()는 완전히 무쓸모다.

 

안드로이드의 경우 AndroidManifest권한 추가에 코드 몇줄만 넣어주면 되지만, 이놈의 iOS는 뭐가 이리 복잡한지.. 아이폰 유저도 아니라 방법 찾는데 생각보다 많이 헤맸다.

 

iOS의 경우 햅틱이라는 기능이 있는데, 6S모델부터 들어가있다고 한다.

 

UISelectionFeedbackGenerator을 통해 햅틱 기능을 사용할수 있는것 같은데, 개발하는 게임들의 최소 버전이 아이폰5 부터라 최대한 낮은 모델에서도 진동 사용이 가능해야했기에 AudioServicesPlaySystemSound를 사용하기로 했다.

 

AudioServicesPlaySystemSound를 사용하기 위해 일단 에디터에 Plugins/iOS 폴더에 Vibrate.mm파일을 만들어준다. 그리고 이어서 플러그인 파일에 코드 작성.

 

#import <UIKit/UIKit.h>
#import <AudioToolBox/AudioToolBox.h>

extern "C" void Vibrate(int _n)
{
    AudioServicesPlaySystemSound(_n);
}

 

그리고 이어서 스크립트를 생성 후, 다음과 같이 작성 후 사용하면 된다.

 

using System.Runtime.InteropServices;

[DllImport("__Internal")]
public static extern void Vibrate(int _n);

※ 참고로 플러그인 파일명과 함수명은 입맛대로 바꿔도 상관없다.

 

인수에 들어가는 int값은 밑에 값들 중 입맛대로 선택해서 넣으면 된다.

 

1519 // Actuate `Peek` feedback (weak boom)

1520 // Actuate `Pop` feedback (strong boom)

1521 // Actuate `Nope` feedback (series of three weak booms)

 

실행해보니 잘 된다. (물론 잘 되는건 6S부터다. 그 밑의 폰들은 당연히 안된다.)

 

 

반응형
반응형

※ 본 포스팅은 유니티 버전 2018.4.20(LTS)을 대상으로한 솔루션입니다.


구글 플레이 업로드를 위해 안드로이드 빌드를 하던중 갑자기 에러를 발견하게 된다.

 

com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed

 

하루 전까지만 해도 잘 되던 빌드가 위와 같은 에러가 뜨면서 진행되지를 않는다.

처음보는 에러에 검색을 해봤지만.. 유니티에서 문제가 된 사람은 거의 없던건지, 잘 못찾았던건지 안드로이드 스튜디오에서 작업한 사람의 문의글로 가득한 페이지를 보면서 이것저것 따라해보기 시작했다.

 


시도 1) 안드로이드 스튜디오 업데이트

 

2018 버전으로 작업한 프로젝트이기에 유니티에서 제공하는 SDK를 사용하지 않고 안드로이드 스튜디오에서 받은 SDK를 사용중이라 시도를 해봤다.

 

안드로이드 스튜디오 몇몇 버전이 AAPT2라는게 기본적으로 사용되어진다고 해서 최신버전으로 바꾸거나 AAPT2를 비활성화 하라는 내용인데, Unity에 대한 설명이 아니라서 일단 안드로이드 스튜디오를 최신버전으로 변경후 빌드를 시도해봤다.

 

결과 : 실패


시도 2) .android .gralde 폴더 제거

 

이 시도는 스택오버플로우에서 보게된것인데, 위의 폴더를 제거하면 빌드가 된다고하는 내용이었다.

※ 위의 폴더들은 C:\Users\UserName 폴더 안에 존재한다.

 

.android, .gradle 폴더 삭제후 빌드를 시도해봤다.

 

결과 : 실패


시도 3) mainTemplate.gradle 설정

 

이 시도는 gradle 버전을 수정하여 해결하는 방법이다.

 

유니티 Build setting - Publishing setting에 Main gralde template를 체크해주면 플러그인 폴더에 mainTemplate 파일이 생성된다.

 

해당 파일을 열면 dependencies 항목에 다음과 같이 적혀있다.

dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
**BUILD_SCRIPT_DEPS**}
}

필자의 경우엔 위와 같이 gradle 버전이 3.4.0으로 되어있었는데, 해당 부분을 3.3.2로 변경후 저장, 빌드를 시도해봤다.

 

결과 : 성공

 


급하게 해결해야 했던 상황이라, 왜 저게 되는건지 자세한 사항은 파악하지 못했지만.. 일단 무사히 빌드가 되는것에 안도하고 위기를 넘기게 되었다.

 

자세한 사항은 추후 파악 후 서술할 예정.

반응형
반응형

※ 본 포스팅은 유니티 버전 2018.4.20(LTS)을 대상으로한 솔루션입니다.


최근 구글 개발자 콘솔이 개편이 되고나서 빌드를 업로드하면 검토과정에서 받을수있는 경고가 눈에 띄었습니다.

 

 

Symbol 경고 메세지

경고 내용

 

이 App Bundle 아티팩트 유형은 네이티브 코드를 포함하며 아직 디버그 기호가 업로드되지 않았습니다.

비정상 종료 및 ANR을 더 쉽게 분석하고 디버그할 수 있도록 기호 파일을 업로드하는 것이 좋습니다.


 

기존엔 없던 경고여서 확인을 해보니 aab로 빌드를 하면 기호 파일을 따로 업로드 할 필요가 없다고 하는데 aab로 빌드해도 똑같은 경고 메세지를 받았습니다.

 

어차피 콘솔에서 띄워주는 디버그 관련 정보들은 평소에 확인하지 않아서 그냥 넘길까 했지만 찝찝한 마음에 따로 기호 파일을 올리게 되었습니다.

 


1. 먼저 Build setting 창에서 Create symbols.zip 버튼을 체크하여 빌드를 하면 aab파일과 symbol압축 파일이 추출됩니다.

 

2. aab 파일은 기존과 같은 방법으로 업로드 한 뒤, 개발자 콘솔 좌측 항목에 추출 - App bundle 탐색기로 들어갑니다.

(기본적으로 제일 최근에 올린 App bundle로 설정되어있지만 혹시 설정이 잘못되어있다면 우측 상단 Artifact를 눌러 원하는 버전으로 바꾸시면 됩니다.)

 

3. 설정할 버전이 뜨면 버전 밑에 '다운로드'를 눌러서 스크롤을 제일 밑으로 내리면 '저작물'이라는 카테고리를 확인할 수 있습니다.

 

4. '저작물' 카테고리의 '네이티브 디버그 기호'에 symbol압축 파일을 업로드하면 완료!

 

하지만, 여기서 symbol압축 파일을 그대로 올리면 에러 메세지가 뜨게됩니다.

디버그 기호 업로드 용량은 300mb까지 허용하는데 유니티가 뱉어낸 symbol압축 파일은 300Mb가 가볍게 넘어가기 때문이지요...

 

이 문제도 해결해보겠습니다.

 


1. symbol압축 파일을 압축 해제합니다.

 

2. 압축을 풀게되면 'arm64-v8a'와 'armeabi-v7a'폴더가 보이게되는데 각각의 폴더는 3개의 파일을 포함하고있습니다.

 

3. 각 폴더를 열어서 SO 확장자 파일을 제외하고 전부 지워주세요.

 

4. 세팅을 완료 했으면 'arm64-v8a'와 'armeabi-v7a' 폴더를 같이 압축하신뒤 업로드를 하게되면 완료!

 

 

 

 

반응형
반응형

※ 본 포스팅은 유니티 2019버전 솔루션입니다.


 

유니티 IAP 테스트 중, 처음보는 오류를 봤습니다.

 

결제를 진행할 때, 결제가 진행되지 않고 로그에 Missing method UnityEngine.VR.VRSettings.enabled ~ 라고 뜨는 현상입니다. 구글링 해보니 IAP update가 진행되지 않아 생긴현상이었습니다.

 

IAP update를 따로 진행하려고 해도 update시도조차 못하게 비활성화 되어있더군요.

포럼에서 찾아본 결과, 유니티 설치 경로에 공백이 있으면 IAP update 진행이 안된다고 합니다.

 

유니티의 기본 설치경로 중 c:\Program files\... 의 공백이 원인이었습니다.

경로를 바꿔서 재설치를 진행한 후, IAP update가 문제없이 진행됐고 정상적으로 IAP가 진행됐습니다!

 


 

 

※ 위와 같이 설치 경로를 공백이 없는 폴더명으로 해주시면 됩니다.

※ 위에서도 언급했듯이 유니티 2019버전 대상으로한 솔루션입니다. 다른 버전도 해당하는 부분인지는 모르겠습니다.

 

 

 

 

 

반응형

+ Recent posts