2010-07-15 6 views
15

हमारे आवेदन के अगले संस्करण के लिए, मैं sharedUserId को बदलना चाहता हूं क्योंकि अब हम एक आंतरिक नियंत्रण डैशबोर्ड ऐप का उपयोग करते हैं जिसे अन्य ऐप की सेटिंग्स फ़ाइलों को लिखना होगा।sharedUserId: ऐप पहले से ही बाजार में बदलने के लिए सुरक्षित है?

लेकिन चूंकि ऐप पहले से ही कई फोनों पर स्थापित है, क्या यह एक समस्या होगी? मैंने एमुलेटर पर थोड़ा परीक्षण चलाया, और मुझे डिवाइस लॉग में अपवाद दिखाई दे रहे हैं कि * वरीयता फ़ाइलों के .bak संस्करणों को लिखा नहीं जा सकता है। सुनिश्चित नहीं है कि यह कितना महत्वपूर्ण है। उत्सुकता से, सेटिंग्स को सुरक्षित करना अभी भी काम करता प्रतीत होता है, भले ही साझा_prefs फ़ोल्डर किसी अन्य लिनक्स उपयोगकर्ता आईडी का उपयोग करके बनाया गया हो।

क्या कोई इससे पहले कोशिश करता था?

+0

ठीक है, लगता है कि यह असंभव हो जाएगा, डांग। ऐप के एक संस्करण का उपयोग करके बनाई गई डेटाबेस फ़ाइल तक पहुंचने का प्रयास करते समय यह क्रैश हो जाता है जिसमें कस्टम उपयोगकर्ता आईडी सेट नहीं था। वैसे भी डिफ़ॉल्ट उपयोगकर्ता आईडी क्या है? क्या दूसरा ऐप शायद अपना यूजर आईडी पहले एप की डिफ़ॉल्ट यूजर आईडी पर सेट कर सकता है? – Matthias

उत्तर

24

और मेरे ही सवाल का फिर जवाब देने के लिए:

नहीं, यह सुरक्षित नहीं है। एंड्रॉइड मार्केट के माध्यम से ऐप अपडेट करने से डेटाबेस और वरीयता फाइलों को नहीं हटाया जाएगा, नया संस्करण इन फ़ाइलों को पढ़ने या लिखने में सक्षम नहीं होगा (क्योंकि वे एक अलग लिनक्स उपयोगकर्ता आईडी के तहत बनाए गए थे), और ऐप के बाद क्रैश हो जाएगा अद्यतन करें। आपको अपने उपयोगकर्ताओं से पूरी तरह से अनइंस्टॉल करने और ऐप को पुनर्स्थापित करने के लिए कहना होगा, जो निश्चित रूप से अनुशंसित नहीं है।

एक सामान्य नियम के रूप में मैं इस से निष्कर्ष निकालता हूं: जब भी आप एक नया ऐप विकसित करना शुरू करते हैं, तो मैन्युअल android:process और android:sharedUserId विशेषता सेट करना सुनिश्चित करें! यदि आपको इसकी आवश्यकता नहीं है तो इससे कोई दिक्कत नहीं होती है, लेकिन यह आपको पूर्ण नियंत्रण देता है कि किस ऐप के पास इस ऐप के निजी संसाधनों तक पहुंच है।

+2

पोस्ट करने के लिए धन्यवाद, मैं लगभग साझा यूज़र आईडी का अद्यतन प्रकाशित कर रहा था .. दुख की बात है कि हम कभी नहीं सीखते कि जब हम ऐप बना रहे हैं:/ –

+0

हम में से उन लोगों के लिए जिन्होंने आगे की योजना नहीं बनाई है, क्या इस समस्या का समाधान है? –

+1

@ बैरीफ्रूटमैन यदि उपयोगकर्ता के डेटा को खोने में कोई समस्या नहीं है तो आप अलग-अलग नामों के साथ नई फाइलों का उपयोग कर सकते हैं। हमें एक बार एंड्रॉइड बग के कारण ऐसा करना पड़ा जिसने हमारी फ़ाइलों को कुछ उपकरणों पर पहुंच प्रदान नहीं किया। – Oderik

2

अब तक कोई समाधान है, लेकिन पंजीकृत मुद्दों पर अभिनीत गूगल इसे ठीक करने के लिए मिल सकता है:

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

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

+0

समस्या यह है कि यह एक बग नहीं है, यह एक विशेषता है। साझा उपयोगकर्ता आईडी निर्दिष्ट किए बिना, एंड्रॉइड (या अंतर्निहित लिनक्स) आपके लिए एक असाइन करेगा। जैसे ही आप एक सेट करते हैं, यह परिभाषा से अलग होगा। चूंकि किसी भी लिनक्स सिस्टम पर, किसी उपयोगकर्ता को किसी अन्य उपयोगकर्ता की फ़ाइलों तक पहुंचने की इजाजत नहीं है जब तक ऐसा करने की अनुमति न दी जाए, यह बहुत अधिक अपेक्षित व्यवहार है। – Matthias

+0

सच है, लेकिन बग का उल्लेख यह तथ्य है कि एंड्रॉइड ओएस एक साझा आईडी को पहचानने/बदलने के लिए विफल रहता है और तदनुसार पहले से इंस्टॉल किए गए ऐप डेटा के अधिकार अपडेट करता है। –

संबंधित मुद्दे