2016년 3월 15일 화요일

Cordova App UUID problem in my case (코르도바 앱 업데이트시 데이터 사라짐 문제)

Cordova 프로젝트를 진행하면서 앱 내부에 파일을 저장하고 거기에 계속 접근해야하는데
안드로이드는 문제가 없으나
iOS에서 업데이트를 하면 데이터를 다시받아야한다는 문제가 생겼다.

분석해본다

- 앱을 설치한다.
- 파일을 다운로드한다.
- 파일의 경로를 본다.
반복

1. file:///var/mobile/Containers/Data/Application/DC10658C-BB87-43C1-B6D0-C95731C956BA/Documents/NoCloud/dir/data
2. file:///var/mobile/Containers/Data/Application/70B35BEC-7077-4B23-BFE2-5F5A60E3A8AB/Documents/NoCloud/dir/data
3. file:///var/mobile/Containers/Data/Application/4CFE8D38-3810-4B16-B4D8-6F3D5F7AB687/Documents/NoCloud/dir/data

이렇게 나왔는데 앱의 UUID가 다 다르다.

DC10658C-BB87-43C1-B6D0-C95731C956BA
70B35BEC-7077-4B23-BFE2-5F5A60E3A8AB
4CFE8D38-3810-4B16-B4D8-6F3D5F7AB687


이렇게 3개가 다 각각 다르다현재 테스트는 디바이스에 debug 모드로 앱을 올리고 있는데


현재 명령어인$cordova run ios --release --device
실패.


The following build commands failed:Ld build/app.build/Release-iphoneos/app.build/Objects-normal/armv7s/app normal armv7s


위와 같은 에러가 났는데 7.0 버전으로 타겟을 너무 낮게 잡아서 그런거라고 경고가 뜨길래
버전을 8.3으로 올려줘봤다.

config.xml에<preference name="deployment-target" value="8.3" />를 추가하고 진행하였으나 실패 (에러남).


그냥 xcode로 릴리즈 모드로 실행해보았다.일단 실행은 잘됨.



아까 했던 그 반복을 다시 해본다.


1. file:///var/mobile/Containers/Data/Application/C089CB02-C0ED-4E98-87EF-63BEE176BE21/Documents/NoCloud/dir/data
2. file:///var/mobile/Containers/Data/Application/392D7B12-05F3-4B3C-AD2E-2D98C3B59DBB/Documents/NoCloud/dir/data


또 달라진다...

C089CB02-C0ED-4E98-87EF-63BEE176BE21392D7B12-05F3-4B3C-AD2E-2D98C3B59DBB


일단 UUID의 뜻을 보면
Universally Unique Identifier 라고 하는 것인데시간, 

공간의 값을 섞어서 만든 128bit 겹치지 않는 유니크한 수라고 한다.

난 유니크보다 바뀌지 않았으면 했는데 왜 자꾸 바뀌는 것인가봤더니http://stackoverflow.com/questions/29219172/android-cordova-uuid-reliability
위의 글에 따르면 iOS의 경우 안정성있는 값이 아니라고 한다. 부들부들


혹시나 해서 다시 해봤는데
이 상황에도 다시 바뀜

file:///var/mobile/Containers/Data/Application/5FEEE71E-8858-4CD3-A6BD-08FF2FF16EFD/Documents/NoCloud/dir/data

혹시나 해서 device plugin에 있는 uuid를 봤는데


1. device.uuid = 6536A21C-375B-4F12-8D6B-05A2EC8025392. 

2. device.uuid = 6536A21C-375B-4F12-8D6B-05A2EC802539

안변한다.앱 내부에서의 uuid는 안변하는데app의 uuid는 변한다...



어떻게 해야할지 답이 안나온다.
실제로 앱을 업데이트 했는데 데이터가 날아가는 경우가 있는지 알아봐야겠다.

========================================================

파일을 확인해볼수 있는 함수인
resolveLocalFileSystemURL(path , function (entry) {console.log(entry);});
로 확인해봤더니
파일은 있었더랬다...

바뀌는 앱의 UUID까지 저장한 경로를 불러오면 안된다는 소리라서
파일 경로 저장을 dir/data로 저장하고
데이터를 불러올때는 cordova.file.documentsDirectory + "NoCloud/dir/" + dataname으로 불러왔더니

성공!




댓글 없음:

댓글 쓰기

JIRA Plugin - ScriptRunner 소개 #2

관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...