티스토리 뷰
Base Of Coding 베오코 Youtube 채널을 개설했습니다.
아직은 많이 부족하지만, 블로그에 있는 정보들을 영상으로 담아 보다 더 자세하게 알려드리겠습니다.
점차 발전해나가는 모습 지켜봐주시면 감사하겠습니다.
좋아요와 구독으로 응원해주세요!
https://www.youtube.com/channel/UC7abgcK0OZtkjU9ERbsYKnQ
=========================================================================
< 해당 글은 Unity Android Platform일 경우에만 해당하는 글입니다. >
안녕하세요. Base Of Coding입니다.
이번에 구글에서 2019년 8월 1일까지 apk를 빌드할 때 64비트 ( ARMv8 ) 을 포함하지 않으면, 업데이트를 하지 못하게 한다고
선언을 했는데요. ( 왜 지금와서...ㅠㅠ )
2021년에는 32비트인 앱은 그냥 플레이스토어에서 삭제를 한다고 되어 있습니다.
개발자분들의 바쁨이 느껴집니다...ㅠㅠ 힘내세요!
저 또한 2017.2 버전을 사용하던 유저라 갑자기 유니티 버전 업데이트를 해야만 하는 일이 드디어 왔습니다.
뭐 MacOS 때문이라도 업데이트를 했어야만 하는 상태였기 때문이죠..
2번째 문제도 한 번 살펴보세요~!
[ 글을 시작하기 앞서서 ARMv7? x86? ARMv8? 이건 뭐에요?? ]
- 지금 이 글을 보시는 분들은, ARMv7 이란 아키텍처를 보셨을거란 생각을 합니다.
ARMv7과 x86은 그럼 뭐였어요??
안드로이드 운영체제를 사용하는 기기에는 총 2가지의 종류의 CPU가 있는데 하나는 ARM 아키텍처를 사용하는 퀄컴사의 CPU
x86은 인텔용 CPU를 사용하는 기기입니다. 하지만 삼성이나 중국폰들은 퀄컴사의 CPU를 사용하기 때문에, x86은 빌드할 때 아키텍처에서 빼고 ARMv7만을 넣고 빌드하는 것이 앱 용량에도 좋기 때문에 그렇게 해왔었습니다.
하지만 이젠 ARMv7과 함께 ARMv8 ( ARM64 ) 또한 같이 넣고 빌드를 해야만 합니다. 물론 용량의 차이는 얼마 나진 않습니다.
그럼 이제 어떻게 해야하느냐? 이제부터 한 번 알아보도록 하죠!ㅎㅎ
[ 유니티 버전을 변경해봅시다. ]
- 현재 64비트를 빌드 할 수 있는 버전은 제한되어 있습니다. Unity 5 버전은 아예 되질 않는다고 생각하시면 되구요.
현재 되는 버전은, Unity 2017.4 버전 ( LTS ) 부터, 가능합니다.
저의 경우에는, 2017.2 버전에서, 그냥 오래가야 하는 프로젝트이니깐 2018.4.0f1 LTS 버전으로 변경해서 업데이트를 하여 사용했습니다.
업데이트를 하기 전에 이것저것 문서들을 비교하면서 없어진 것이 있는 지 없는 지를 확인하고, 최적화를 해야했습니다.
그렇기 때문에, 그냥 오래가실 프로젝트라면, 2018버전으로 업데이트 하시는 것을 추천드려요. 특히 LTS 버전으로 사용하시면
2년간 장기지원을 하는 버전이기 때문에 버전을 한단계 업그레이드 하지 않고 오래가실 수도 있을거라는 생각을 합니다.
[ 유니티 버전을 변경하면서 수정해야만 했던 것들 ]
- 저는 솔직히 별 게 없었습니다. 하지만 그 별 거 없던 부분들도 알아놓으면 분명 도움은 되시겠죠?
일단 첫 번째로는, WWW 객체를 사용할 수는 있지만, 다음 버전부터는 사용할 수가 없는 것 같더군요ㅠㅠ
그렇기 때문에, WWW로 데이터를 받아오는 부분들은 다 없애고 새로 짜야했습니다.
이제부턴, WWW -> UnityWebRequest 라는 클래스를 사용합시다. 음 뭔가 WWW 보다는 UnityWebRequest가 조금은 빠른 느낌이 있었습니다. 메모리 상으로도 큰 차이는 아니지만, 메모리도 조금은 줄어든 느낌이 들더군요. 물론 아이폰을 테스트 했을 때 느낀 점입니다.
안드로이드는 무슨 짓을 해도 메모리에 큰 영향은 잘 안가더군요ㅠㅠ 프로파일러를 봐도 심각하지 않은..
그리고 두 번째는, AssetBundle에 대한 코드 또한 모두 수정을 해야만 합니다. AssetBundle을 만들어 ftp 서버에 넣어줄 때도, 또는 AssetBundle을 받아서 앱에서 실행을 시켜줄 때 또한 변경을 해줘야 잘 작동이 됩니다.
자세한 얘기들은 제가 천천히 또 다시 올려놓도록 하겠습니다.
세 번째는, ParticleEmitter 관련입니다. 이 컴포넌트는 현재 2018 버전에서는 사용할 수가 없는 컴포넌트입니다.
그렇기 때문에, 이펙트에 ParticleEmitter를 사용하셨던 분이라면 이 모든 컴포넌트 또는 코드에서 삭제를 해주셔야 합니다.
에셋을 사용하셨다면, 컴포넌트가 없는 이펙트를 다시 구매하셔서 사용을 하셔야겠죠ㅠㅠ 저희는 미리 이 문제에 대해 대응을 했기 때문에 별 문제 없이 넘어갔습니다. 다행히!
마지막 네 번째는, int.Parse에 대한 내용이였는데. 이 부분은 밑에 링크를 참조해주시길 바랍니다.
2019/06/05 - [BaseOfCoding/Issue 문제 및 해결] - Unity C# 4.0으로 인한 int.parse()의 오류 해결
뭐 여러가지 문제가 있기도 했지만 그 부분들은 콘솔에 에러 로그만 봐도 고칠 수 있던 부분들이라 써놓진 않도록 하겠습니다.
아! 파이어베이스를 사용하시는 분이신데 firebase오류가 났다면 다시 새로 설치하셔서 닷넷 4.0 버전으로 설치하시길 권장합니다.
[ ARMv8을 빌드해 봅시다. ]
1. Unity를 2017.4 이상으로 업데이트를 합니다. 저는 LTS 버전을 권장합니다.
2. 업데이트를 한 후, 모든 에러는 전부 고칩니다. ( 이건 프로젝트마다 다르기 때문에 해결해주셔야 하는 부분입니다. )
3. 그 이전 버전에는 사용하지 않아도 되었던 ndk 파일을 드디어 사용하게 됩니다. ndk를 버전에 맞는 ndk로 설치해주세요.
[ NDK 설치 방법 ]
1 ) Preferences -> External Tools로 이동합니다.
2 ) NDK로 되어 있는 부분에서, Browse 옆에 Download를 클릭하시면 버전에 맞는 ndk 설치 링크로 이동합니다.
3 ) 그리고 설치 파일을 압축해제 하셨다면, 그 폴더를 Browse로 가리키시면 됩니다.
4 ) 그럼 끝!
4. Android platform 선택 후, Player Settings -> Other Settings에 Scripting Backend에 Mono라고 되어 있는 부분을, IL2CPP로
변경해주세요.
5. 그럼 Target Architectures에 ARM64가 활성화가 되었습니다.
6. 저는 ARMv7과 ARM64를 전부 선택 후 빌드를 합니다. 제 폰이 갤S9+인데.. ARM64를 지원하는 폰이지만, ARM64만 체크하고 빌드를 하면 실행이 되질 않더군요. 용량의 차이는 약 10MB 정도의 차이이기 때문에 그냥 둘 다 체크하고 사용합니다.
아 그리고! 64비트를 포함한다면, 앱 용량이 100MB로 제한되었던 부분이 200MB로 늘어난다고 하니 Split을 하셔야 하는 개발자 분들이 많이 줄어들 수도 있을 것 같습니다.
지금까지 안드로이드 64비트 배포에 대응하는 방법을 알아봤습니다.
저 또한 5월 초에 이 공지를 보면서도.. 하 업데이트를 어떻게 해야되지란 생각이 먼저 들더군요.. 하지만 해야하는 부분이기 때문에
여러분들도 화이팅 하시길 바랍니다!
Base Of Coding이였습니다. 감사합니다! 다음은 64비트를 업데이트 하면서 대응했던 오류 해결 방법을 적어보도록 하겠습니다!
'게임 프로그래밍 ( 이제 안함 ) > Issue 문제 및 해결' 카테고리의 다른 글
- Total
- Today
- Yesterday
- Servlet
- Next.js
- Spring
- GitHub
- CSS
- 안드로이드
- 유니티로 배우는 C#
- spring boot
- VR
- 스프링
- Base Of Coding
- 뷰포리아
- Java
- unity3d
- Unity
- 유니티
- HTML
- JSP
- Vuforia
- Controller
- 프로그래밍
- 비지니스 로직
- Git
- MVC
- 서블릿
- c#
- 게임프로그래밍
- baseofcoding
- 프리젠테이션 로직
- 유니티3D
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |