[Unity] split application binary에서 Application.dataPath가져오기 본문
Unity에선 split application binary 기능을 지원한다.
이 기능을 통해 기본 앱(APK)파일과 .obb확장 파일을 만들어 낼 수 있다.
하지만, Application.dataPath를 이용해 특정 경로에서 파일을 가져와 사용하는
처리가 있다면 주의해야한다.
Unity Documentation에 다음과 같은 내용이 있다.
***
Android: Normally it would point directly to the APK. The exception is if you are running a split binary build in which case it points to the the OBB instead.
***
기본적으로 Android Platform에서 Application.dataPath를 통해 경로를 가져오면 앱의 소스경로(source dir)를 참조한다.
* source dir : jar:file:///data/app/com.pakage.name-numberindex/base.apk
하지만 OBB를 이용한 앱에서 Application.dataPath를 하면 해당 OBB파일이 Install되는 경로를 참조하게 된다.
* data dir : jar:file:///data/data/com.package.name
즉, OBB를 이용한 앱에서 Application.dataPath의 결과는 리소스경로(data dir)이 되는것이다.
이를 해결하기 위해 Unity내에서 지원하는 다양한 경로 참조 기능을 이용해보았지만, OBB형태의 앱에선
기본적으로 무조건 리소스경로를 참조하게 되는 것 같다. (정확하지 않습니다)
본론으로 들어가, Split application binary옵션을 사용한 Unity Android 앱에서
해당 옵션을 사용하지 않았을 때와 같은 결과를 얻고싶다면 Android Native에서 다음의 경로를 얻어오도록 하면 된다.
//Java (Android)
//Unity OBB Build, Get the same result of Application.dataPath
PackageManager m = getPackageManager();
String s = getPackageName();
PackageInfo p = m.getPackageInfo(s, 0);
s = p.applicationInfo.sourceDir;
Unity에서 JavaStatic객체를 생성해, 위 코드의 s값을 참조해보자
그럼 Split Application Binary를 사용하지 않았을 때 Application.dataPath에서 리턴해주는 값과 같은 값을 정상적으로 가져올 수 있는 걸 확인할 수 있다.
- 참고 : https://stackoverflow.com/questions/5527764/get-application-directory
'프로그래밍 > ㄴ기타' 카테고리의 다른 글
[Unity] Display 2-D Array in Inspector, 2차원 배열 인스펙터에 표시하기 (0) | 2019.10.25 |
---|---|
[Unity] Animation vs Tween 비교 (0) | 2019.10.25 |
[C++] 멤버카피와 대입연산자에 관하여(memcpy vs operator =) (0) | 2019.09.30 |
[CMD] Windows Batch Command를 이용해 APK Manifest 분석하기 (0) | 2019.06.13 |
[Unity] Batchmode 함수 호출을 이용해 빌드하기 (2) | 2019.06.11 |