반응형
GoogleMaps downgrade
1.나타난 문제
- 기존에 앱(google maps 2.4.0)이 설치 되어있는 상황에서 새로 업데이트되는 앱(google map 1.13.2)으로 업데이트 할 경우, 맵 view 자체는 업로드 되지만 맵 tile 이미지가 불리지 않는 문제가 나타났다(Google 로고 등은 다 나타나는 상황이다).
- 기존앱을 완전히 지우고, 업데이트 버전을 설치한 경우 문제없이 맵이 불려지는 것을 확인하였다.
- 기존 앱의 설정이 남아있고, 이 설정이 업데이트 된 후에도 남아있어 맵 tile을 로드하지 못하는 상황이라는 가설을 세웠다.
- https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1 에서 보면 디렉토리의 구성이 아래 그림과 같음을 알 수 있었다.
- 이 안에는 Application Support, Caches, Frameworks, Preferences Directory가 있는것을 위의 문서에서 확인할 수 있다.
- Application Support는 App이 관리하는 App이 생성한 데이터 파일, configuration 파일, templates, 기타 fixed 또는 modifiable resource들이 있고, 이들 파일들을 저장하는데 사용할 수 있다고 정의 되어있다.
- 따라서 앱을 업데이트 했을 경우에는 이 폴더 내에 있는 파일은 계속 남아 있지만, 앱을 완전히 삭제하면 같이 사라지게 된다.
- Directory를 이리 저리 확인하던 중 google map에 관련된 파일이 Application Support Directory에 존재하는것을 알게 됐다.
- 문제가 된 앱의 Application Support Directory에서 아래 사진안의 파일들이 존재하였다.
- 참고로 문제가 된 앱은 Google Maps이외의 라이브러리도 사용하고 있으며, Google 관련 라이브러리 외의 다른 라이브러리는 해당 부분에 파일을 저장하지 않는것을 위와 같이 확인했다.
- 각 앱 마다 다른 파일이 존재할 수 있으므로 안에 있는 파일을 꼭 확인해 봐야 한다.
NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); NSString *applicationSupportDirectoryPath = [directoryPaths firstObject]; NSArray *subPaths = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:applicationSupportDirectoryPath error:nil]; for (NSString *path in subPaths) { NSLog(@"%@", path); }
let directoryPaths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true) let applicationSupportDirectoryPath = directoryPaths.first if let checkedPath = applicationSupportDirectoryPath { do { let subPaths = try FileManager.default.subpathsOfDirectory(atPath: checkedPath) for path in subPaths { print(path) } } catch { print("") }
- google map과 관련된것(com.google.GoogleMaps)만 삭제하여 테스트한 결과 문제없이 맵 tile을 불러오는것을 확인하였다.
- 삭제는 앱델리게이트의 didFinishLaunchingWithOptions: 가 실행될 때 하였다.
- 파일의 예상 용도는 tile 이미지를 불러오는데 필요한것이라고 만 예상을 했고, 해당 파일을 확인하지 않았다. 후에 확인하여 관련 포스팅을 해보겠다.
- 삭제 되는 세개의 파일들은 앱 실행 후 다시 생성되는것으로 확인하였다.
Library Directory에는 App-Specific Files를 저장하고 있다고 밝히고 있다.
반응형
'iOS > Framework' 카테고리의 다른 글
UIControl, UIControl.state, UIControl.Event (0) | 2018.06.09 |
---|---|
Memory - iOS 앱에서 사용할 수 있는 최대 메모리는?? (0) | 2018.01.04 |
Core ML - Reducing the Size of Your Core ML App 번역 (0) | 2017.12.29 |
Core ML - Classifying Images with Vision and Core ML 번역 (0) | 2017.12.28 |
Core ML - Converting Trained Models to Core ML 번역 (0) | 2017.12.27 |