2010-06-16 14 views
7

अपग्रेड नहीं किया जा सकता है, मैं ऑपरेटर के लिए काम करता हूं, और हम एंड्रॉइड फोन पर प्रीलोड लोड करते हैं।.so लाइब्रेरी फ़ाइल के साथ प्रीलोडेड एंड्रॉइड एप्लिकेशन को

हालांकि, कुछ प्रीलोड किए गए एप्लिकेशन, एक बार बाजार, क्रैश से अपग्रेड किए गए।

समस्या यह है: - आवेदन एक .so पुस्तकालय फ़ाइल
शामिल हैं -
आदेश में एक फोन पर पूरा आवेदन पहले से लोड करने में, .so पुस्तकालय फ़ाइल lib निर्देशिका में अलग रखा जाना है (/ सिस्टम/lib/libXXXXjni.so)
- जब प्रीलोड किए गए एप्लिकेशन को बाजार से चलाया जाता है और चलाया जाता है, तो नए एपीके में .so लाइब्रेरी फ़ाइल के बजाय, पुरानी प्रीलोडेड .so फ़ाइल पहले पाई जाती है - जिससे क्रैश होता है, क्योंकि दो .so fiels में अलग-अलग सामग्री हैं

क्या किसी के पास कोई सुझाव दिया गया है, या लाइब्रेरी-खोज अल्गर्थिम का ज्ञान जो मेरी मदद कर सकता है इसका समाधान करो?

लाइब्रेरी फ़ाइल का नाम बदलने का एक संभावित समाधान हो सकता है, लेकिन क्या यह पर्याप्त है?

अग्रिम धन्यवाद ...

उत्तर

0

जब आप को पहले से लोड, में अनुप्रयोगों के पुस्तकालय डाल प्रयास करें: होगा पुस्तकालय का नाम बदल रहा /data/data/com.package.foobar/lib/libXXXXjni.so

काम। शायद .so फ़ाइल के नाम के रूप में ऐप के संस्करण संख्या का उपयोग कर। हालांकि निर्माण अधिक जटिल हो जाता है।

+0

किसी भी प्रकार की प्रीलोड स्थिति के लिए, डिवाइस को उस डेटा/डेटा स्थान में किसी फ़ाइल का नाम बदलने के लिए रूट पहुंच नहीं होगी? – Maximus

+0

मैं सोच रहा था कि लाइब्रेरी को अपग्रेड किए गए संस्करण में नया नाम मिलता है। नामकरण डेवलपर की मशीन पर होगा (और System.loadLibrary (...) में कोड में कॉल करें।) सबसे अच्छा मुझे लगता है कि लाइब्रेरी को सिस्टम/lib के बजाय ऐप की lib निर्देशिका में प्रीलोड करना है। – abh

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