2010-07-15 2 views
15

다음 버전의 응용 프로그램에서는 다른 응용 프로그램의 설정 파일에 기록해야하는 내부 제어 대시 보드 응용 프로그램을 사용하기 때문에 sharedUserId를 변경하려고합니다.sharedUserId : 앱이 이미 출시되면 변경하는 것이 안전할까요?

하지만 앱이 이미 많은 휴대 전화에 설치되어 있기 때문에 문제가 될 수 있나요? 에뮬레이터에 대한 약간의 테스트를 실시했는데 장치 로그에 * .bak 버전의 기본 설정 파일을 쓸 수 없다는 예외가 있습니다. 그것이 얼마나 중요한지는 확실하지 않습니다. 다른 Linux 사용자 ID를 사용하여 shared_prefs 폴더를 만들었지 만, 궁금한 점은 safing 설정이 여전히 작동하는 것 같습니다.

누구에게도 이것을 시도한 적이 있습니까?

+0

는 댕 보인다. 사용자 지정 사용자 ID가 설정되지 않은 응용 프로그램 버전을 사용하여 만든 데이터베이스 파일에 액세스하려고하면 충돌이 발생합니다. 어쨌든 기본 사용자 ID는 무엇입니까? 두 번째 앱이 사용자 ID를 첫 번째 앱의 기본 사용자 ID로 설정할 수 있습니까? – Matthias

답변

24

그리고 다시 내 자신의 질문 대답 :

아니, 안전하지합니다. Android 마켓을 통해 앱을 업데이트해도 데이터베이스 및 환경 설정 파일이 삭제되지 않으므로 새 버전은 (다른 Linux 사용자 ID로 생성 되었기 때문에)이 파일을 읽거나 쓸 수 없으며 앱은 최신 정보. 앱을 완전히 제거하고 다시 설치하도록 사용자에게 요청해야합니다. 이는 권장하지 않습니다.

일반적으로 결론은 다음과 같습니다. 새로운 앱을 개발할 때마다 수동 android:processandroid:sharedUserId 속성을 설정해야합니다. 그것은 당신이 그것을 필요로하지 않는 경우에 다치게하지 않지만, 어떤 앱이이 앱의 비공개 리소스에 액세스 할 수 있는지 완전히 제어 할 수 있습니다.

+2

게시 해 주셔서 감사합니다. sharedUserId의 업데이트를 거의 게시했습니다. 슬프게도 우리가 앱을 만들 때 그 사실을 결코 알지 못합니다./ –

+0

앞서 계획하지 않은 분들은이 문제에 대한 해결책이 있습니까? –

+1

@BarryFruitman 사용자의 데이터를 잃어 버리는 것이 문제가 아니라면 이름이 다른 새 파일을 사용할 수 있습니다. 일부 장치에서는 파일을 액세스 할 수 없게 만든 Android 버그로 인해이 작업을 한 번 수행해야했습니다. – Oderik

2

지금과 같은 해결책 있지만, 등록 된 문제에 출연하는 것은 구글이이 문제를 해결하기 위해 얻을 수 있습니다 :이 불가능할 것 같은 괜찮

http://code.google.com/p/android/issues/detail?id=1227

http://code.google.com/p/android/issues/detail?id=14074

+0

문제는 버그가 아니며 기능입니다. 공유 사용자 ID를 지정하지 않으면 Android (또는 기본 Linux)가 사용자를 지정합니다. 설정을 마치면 정의에 따라 달라집니다. 모든 Linux 시스템에서 한 사용자가 허용 된 권한이 없으면 한 사용자가 다른 사용자의 파일에 액세스 할 수 없기 때문에 이는 예상되는 동작입니다. – Matthias

+0

사실, 언급 된 버그는 Android OS가 sharedId가 할당/변경되었음을 인식하지 못하고 이미 설치된 앱 데이터의 권한을 적절하게 업데이트한다는 사실입니다. –

관련 문제