2011-10-01 12 views
9

हमारे पास एक एप्लिकेशन (स्ट्रिंग्स की मध्यम मात्रा के साथ) है जिसका हम 27+ भाषाओं में अनुवाद करते हैं। हम आवेदन के 2 बिल्ड बनाते हैं। ये 2 बिल्ड केवल पैकेज के नाम पर भिन्न हैं। तो मूल रूप से हम पहले पैकेज नाम के साथ हमारे आवेदन का निर्माण करते हैं com.android.sad.app और फिर पैकेज नाम com.android.even.sadder.app के साथ एक और कहें। हम Android उपकरणों की एक महान विविधता पर हमारे आवेदन का परीक्षण करने का मौका था और हमें पता चला है कि सैमसंग ऐस, Samsung Galaxy S या एलजी ऑप्टिमस 2 एक्स हमारे आवेदन लोड नहीं कर सकते जैसे कुछ उपकरणों पर/पढ़ संसाधन इसलिए एप्लिकेशन आइकन भी नहीं दिखाया गया है और जब एप्लिकेशन प्रारंभ होता है तो यह android.content.res.Resources.NotFoundException के साथ दुर्घटनाग्रस्त हो जाता है। अन्य उपकरणों पर सब कुछ ठीक काम कर रहा है।कुछ डिवाइसों पर एंड्रॉइड संसाधन नहीं पाए गए

हमें पता चला है कि अगर हम को एप्लिकेशन के संसाधनों में स्ट्रिंग की कुल मात्रा को कम करते हैं, तो हमारा आवेदन उपर्युक्त उपकरणों पर सफलतापूर्वक चला सकता है। हालांकि हमें नहीं लगता कि यह हमारी समस्या का असली समाधान है क्योंकि संसाधनों में पूर्ण तारों के साथ डीबग निर्माण प्रश्नों के उपकरणों पर चलाया जा सकता है।

तो मेरा प्रश्न यह होगा कि कोई जानता है कि संभावित रूप से इस अजीब व्यवहार का कारण क्या हो सकता है?

उत्तर

0

मैं यहां बहुत कुछ मानने जा रहा हूं, लेकिन मैं स्ट्रिंग की मात्रा से संबंधित होने पर पैसे डालूंगा। आपके सभी तार स्मृति का उपभोग करेंगे और शायद इन लक्षित उपकरणों के आपके आवेदन के लिए पर्याप्त उपलब्ध नहीं है। आपके पैकेज नाम भिन्नता के लिए, कम से कम एक लंबे समय से कम बाइट्स का उपभोग करेगा।

मेरा सुझाव है कि आप उपयोग में तारों की मात्रा को कम करें और देखें कि क्या यह आपके मुद्दों को हल करता है।

2

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

हमने देखा है कि हमारे उपकरण के साथ apk repackaging के बाद हम मूल apkएंड्रॉयड निर्माण द्वारा बनाई गई की apkआधा करने के लिए आकार के आकार को कम करने में सक्षम थे। जैसा कि हमने पाया है कि repackaging हमारी समस्या का कारण था!

अगर repacked apk Mb छोटे तो ~ 1.6 था के रूप में हमारे प्रयोगों से पता चला है, सभी उपकरणों पढ़ सकते हैं और नव साथ काम करने में सक्षम repackedapk थे। हालांकि अगर एपीके का आकार ~ 1 से अधिक हो गया है।6 एमबी इस पोस्ट में उल्लिखित डिवाइस (और एमुलेटर) आवेदन एपीके के साथ सही ढंग से पढ़ने या काम करने में सक्षम नहीं थे।

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

नोट: अब से हम एंड्रॉयडaaptउपकरण का उपयोग कर रहे हैं पैकेज के लिए हमारी फ़ाइलों को सम्मिलित करने, उपकरण के बजाय हम प्रयोग कर रहे हैं और अंतिम apk सभी उपकरणों द्वारा पढ़ा जा सकता से

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

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