पहले, एंड्रॉयड वास्तव में सिर्फ लिनक्स है, इसलिए यदि आप "मेरी Android एप्लिकेशन के लिए एक यूएसबी चालक लेखन" के बारे में बात कर रहे हैं आप बल्कि कहना चाहिए "विशिष्ट उपकरण के लिए एक linux USB ड्राइवर लिख"।
अगला, आपको किसी भी तरह से अपने डिवाइस तक पहुंचना होगा। लिनक्स के लिए यूएसबी ड्राइवर लिखने पर आपको क्या मिलेगा शायद कुछ फ़ाइल नोड/dev/में है। मुझे लगता है कि आप गैर-मानक यूएसबी डिवाइस (जैसे माउस/जॉयस्टिक/मास स्टोरेज) के लिए ड्राइवर बनाना चाहते हैं जिसके लिए एंड्रॉइड एक अच्छा जावा एपी प्रदान नहीं करता है? उस स्थिति में आपको मूल पुस्तकालय लिखना होगा (शायद आपके पास पहले से मौजूद कोड पर आधारित है) और इसे एनडीके के साथ संकलित करें। .so फ़ाइल जिसे आप इससे बाहर निकाल देंगे, आपके एंड्रॉइड एप्लिकेशन में पैक किया जा सकता है, जिसका उपयोग तब आपके यूएसबी डिवाइस से बात करने के लिए किया जा सकता है।
तो यह योग करने के लिए ऊपर:
यूएसबी डिवाइस ड्राइवर -> एक कर्नेल मॉड्यूल बना सकते हैं या अपने लिनक्स कर्नेल में एक चालक को एम्बेड: इस linux USB ड्राइवर प्रोग्रामिंग सामान है, जिसके लिए आप पर्याप्त गाइड को खोजने के लिए सक्षम होना चाहिए वेब पर। यदि आपने वास्तव में एक विंडोज़ यूएसबी ड्राइवर बनाया है तो आपको अपने सी कोड के कुछ हिस्सों का पुन: उपयोग करने में सक्षम होना चाहिए।
देशी रैपर लाइब्रेरी आपके डिवाइस (.so फ़ाइल, या .dll यदि आप विंडोज टर्मिनोलॉजी के लिए उपयोग की जाती हैं) तक पहुंचने के लिए -> एक एनडीके प्रोजेक्ट बनाएं जो सही डिवाइस नोड खोलता है और सही ढंग से आपके डिवाइस से लिखता/लिखता है।
एंड्रॉइड ऐप -> .so फ़ाइल शामिल करें और जेनी के माध्यम से अपने मूल (सी) विधियों तक पहुंचें। आप अपनी लाइब्रेरी की हेडर फ़ाइलों से जेनी कोड जेनरेट करने के लिए जावा या स्विग जैसे टूल का उपयोग करने में सक्षम हो सकते हैं।
क्या एनडीके अनुप्रयोगों को रूट पहुंच की आवश्यकता है? –
नहीं आप नहीं करते हैं। मूल कोड रूट के बिना विकसित और तैनात किया जा सकता है लेकिन सिस्टम के स्वामित्व वाले संसाधनों जैसे कि उपकरणों को रूट की आवश्यकता होगी। एक गैर-यूएसबी उदाहरण मानक लिनक्स एसएसडीडी जैसे ड्रॉपबियर का उपयोग करेगा, यह संभव है कि आप उन्हें प्ले स्टोर पर पा सकें, हालांकि स्टैंडरार्ड बंदरगाहों पर चलाने के लिए उन्हें रूट के रूप में चलाने की आवश्यकता होगी। – Neil