2013-11-09 4 views
6

मैं चाहता हूं कि मेरा एंड्रॉइड एप्लिकेशन रनटाइम पर डिवाइस की विशेषताओं के अनुसार एक .so फ़ाइल (मेरे द्वारा संकलित मूल पुस्तकालय) डाउनलोड करे, इसलिए एपीके का आकार छोटा होगा क्योंकि मैं कई अलग-अलग संस्करणों के साथ एपीके भर नहीं पाऊंगा मूल पुस्तकालय का।Android में डाउनलोड की गई मूल लाइब्रेरी को रखने का सबसे अच्छा स्थान क्या है?

मैं इस पुस्तकालय को डाउनलोड करने के लिए सही जगह नहीं समझ सका। इस के लिए पसंदीदा और अनुशंसित निर्देशिका कहां है, इसलिए मैं इसे जल्दी और सुरक्षित रूप से लोड करने के लिए System.loadLibrary फ़ंक्शन का उपयोग कर सकता हूं?

+0

क्या आपको ऐसा करने के लिए रेजर के सुझावों के साथ सफलता मिली? – joelsand

+0

@joelsand मैं एप्लिकेशन के बहु-एपीके संस्करण को समाप्त कर दिया, भले ही यह कभी-कभी समय लेने वाला ऑपरेशन होता है ... – frankish

उत्तर

2

यदि आप एपीके को अनजिप करते हैं, तो आप देखेंगे कि मूल निर्देशिका में lib फ़ोल्डर है। यह निर्देशिका आपके अनुप्रयोग की निर्देशिका /data/data/package.name/lib में /data/app-lib/package.name पर एक सिम्लिंक के रूप में भी मौजूद है। यदि आप वास्तव में रनटाइम पर देशी पुस्तकालयों को डाउनलोड करना चाहते हैं, तो उनमें से एक वह जगह है जहां आपको उन्हें रखना होगा।

चूंकि एप्लिकेशन अपनी डेटा निर्देशिका में लिखने की अनुमति प्राप्त कर सकते हैं, इसलिए आपको वास्तव में एक फ़ाइल डाउनलोड करने में सक्षम होना चाहिए। ContextWrapper.getFilesDir() पथ /data/data/package.name वापस करेगा ताकि आप इसे हार्डकोड न करें।

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

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

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