2010-07-15 21 views
15

Uygulamamızın bir sonraki sürümü için, şimdi diğer uygulamanın ayarlar dosyasına yazması gereken bir iç kontrol panosu uygulaması kullandığımızdan, sharedUserId değerini değiştirmek istiyorum.sharedUserId: Uygulama zaten pazardayken değiştirmek güvenli midir?

Ancak uygulama zaten birçok telefona kurulduğundan bu bir problem olacak mı? Emülatörde küçük bir test yaptım ve aygıt günlüklerinde tercih dosyalarının * .bak sürümlerinin yazılmadığı istisnalar görüyorum. Bunun ne kadar kritik olduğundan emin değilim. İlginç bir şekilde, paylaşım ayarları, shared_prefs klasörü başka bir Linux kullanıcı kimliği kullanılarak oluşturulmuş olsa bile hala çalışıyor gibi görünüyor.

Bunu daha önce deneyen var mı?

+0

, dang görünüyor. Özel bir kullanıcı kimliği ayarına sahip olmayan bir uygulamanın sürümünü kullanarak oluşturulmuş bir veritabanı dosyasına erişmeye çalışırken çöküyor. Zaten varsayılan kullanıcı kimliği nedir? İkinci uygulama, kullanıcı kimliğini belki de ilk uygulamanın varsayılan kullanıcı kimliğine ayarlayabilir mi? önceden plan yoktu bizler için/ – Matthias

cevap

24

Ve yine kendi sorumu cevap:

Hayır, güvenli değil. Bir uygulamayı Android Market üzerinden güncelledikten sonra veritabanı ve tercih dosyalarını kaldırmayacak, yeni sürüm bu dosyaları okuyamayacak veya yazamayacak (farklı bir Linux kullanıcı kimliği altında oluşturuldukları için) ve uygulama güncelleştirme. Kullanıcılarınızın uygulamayı tamamen kaldırmasını ve yeniden yüklemesini istemeniz gerekir; bu kesinlikle önerilmez.

Ben bundan sonuçlandırmak Genel bir kural olarak

: Eğer yeni bir uygulama geliştirme başlar zaman, manuel android:process ve android:sharedUserId niteliğini belirlemek için emin olun! İhtiyacın olmadığında zarar vermez, ancak hangi uygulamaların bu uygulamanın özel kaynaklarına erişebileceği konusunda tam kontrol sağlar.

+2

sayesinde neredeyse yazık ki biz uygulamayı oluştururken olduğunu öğrenmek asla .. sharedUserId güncellemesini yayınlıyordu? –

+0

, bu soruna bir çözüm yoktur: o yazabilmek için –

+1

@BarryFruitman Kullanıcı verilerini kaybetmek sorun değilse, farklı isimlerle yeni dosyalar kullanabilirsiniz. Dosyalarımızı bazı cihazlarda erişilemeyen bir Android hatası nedeniyle bunu bir kez yapmak zorunda kaldık. – Oderik

2

bugün itibariyle hiçbir çözüm, ancak kayıtlı konulara oynadığı Google, bu düzeltmek için sonuçları elde edebilirsiniz: Bu imkansız olacaktır gibi tamam

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

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

+0

Sorun şu ki, bu bir hata değil, bir özellik. Paylaşılan bir kullanıcı kimliği belirtmeden, Android (veya altta yatan Linux) sizin için bir tane atayacaktır. Birini ayarladığınız anda, tanım gereği farklı olacaktır. Herhangi bir Linux sisteminde, bir kullanıcının izin verilen başka bir kullanıcının dosyalarına erişmesine izin verilmediğinden, bu beklenen bir davranıştır. – Matthias

+0

Doğru, ancak belirtilen hata, Android OS'nin bir sharedId öğesinin tanımlandığını/değiştirildiğini ve önceden yüklenen uygulama verilerinin haklarını buna göre güncellediğini algılamasıdır. –

İlgili konular