एआरएम चिपसेट के दायरे में, जो कि सामान्य कारक है, संपूर्ण एंड्रॉइड स्टैक, लिनक्स पर आधारित निकट-समान कर्नेल से, वास्तव में, 32 बिट, क्रॉस से संकलित या तो आमतौर पर 32 बिट / 64 बिट मेजबान वातावरण, मेजबान वातावरण आमतौर पर लिनक्स के वितरण में से एक है। एंड्रॉइड के निर्माण और क्रॉस-संकलन के लिए Google द्वारा अनुशंसित वितरण, उबंटू है ।
एंड्रॉइड रन-टाइम लाइब्रेरी (मीडिया, ग्राफिक्स, फाइलसिस्टम, नाम करने के लिए लेकिन कुछ) भी 32 बिट हैं, लेकिन जैसे-जैसे हम डैल्विकम की परत तक पहुंचते हैं, तब बिट्स की संख्या अप्रासंगिक हो जाती है, क्योंकि यह इस बिंदु पर है, आने वाले एप्स Google Play Store से देशी बाईटेकोड (ए "बाय-प्रोडक्ट" जेनरेट किए गए जावा कोड को एक पोर्टेबल बाइटेकोड में संकलित किया जाता है) जो डालविकवीएम (वर्चुअल मशीन) को लक्षित करता है जो बदले में कच्चे एआरएम इंस्ट्रक्शन सेट को लक्षित करता है और बाईटकोड को ट्रांसलेट करता है।
फ्रायो आखिरी एंड्रॉइड था जिसने 32 बिट होस्टेड वातावरण के तहत संकलन को सक्षम किया था जिसमें यह एआरएम चिपसेट को लक्षित करते हुए क्रॉस-संकलित किया गया था।
जिंजरब्रेड तीन साल पहले "भविष्य" एंड्रॉइड, बैक और सर्का का पहला था, जिसने 64 बिट होस्ट किए गए वातावरण का उपयोग करने की आवश्यकता को पेश किया था जिसमें यह बनाया गया था। 32 बिट होस्टेड माहौल के तहत जिंजरब्रेड बनाने के लिए कई हैक थे।
आईसीएस और जेबी, और ऊपर की ओर अब निश्चित रूप से संकलन में तेजी लाने और इमारत में बारी-बारी के समय को कम करने के लिए 64 बिट पर्यावरण की आवश्यकता होती है।
तो संक्षेप में, आप जो प्ले स्टोर पर देखते हैं, उस पर कोई असर नहीं पड़ता है कि क्या 32 बिट या 64 बिट का उपयोग किया जाता है और इस तरह अप्रासंगिक है।
साइड नोट: विशिष्ट 16 जीबी रैम / क्वाड कोर / 64 बिट लिनक्स वितरण, खरोंच से आईसीएस के निर्माण में लगने वाला समय, अधिकतम 30 मिनट लगता है, यह 32 बिट लिनक्स वितरण होने के नाते था, इसमें अधिक समय लगेगा, वास्तव में सीपीयू सीपीयू के कारण हो सकता है के रूप में वहाँ बस है, मंथन और बाहर क्रैंक पार संकलित कोड है, जो करने के लिए पर्याप्त नहीं प्रसंस्करण शक्ति है एक बहुत की मांग की और कर लगाने की प्रक्रिया!
इसका प्रमाण।
उदाहरण के लिए, /system/bin
या में पाए गए किसी भी मूल एआरएम बाइनरी में खींचो , यह Dalvik VM बाइनरी है जो जावा और APK की ऊपरी परतों के लिए जिम्मेदार है।/system/xbin
/system/bin/dalvikvm
अब, इस आदेश को जारी करके द्विआधारी की जांच करें: file dalvikvm
जो उस प्रकार की फ़ाइल का सारांश देता है, अपेक्षित आउटपुट यह होगा:
dalvikvm: ईएलएफ 32-बिट एलएसबी निष्पादन योग्य, एआरएम, संस्करण 1 (एसवाईएसवी), गतिशील रूप से जुड़ा हुआ (साझा लिबास का उपयोग करता है), छीन लिया गया
32-बिट ईएलएफ के संदर्भ को नोटिस करें, और एआरएम से क्रॉस-संकलित किया गया है और एक द्विआधारी निष्पादन योग्य है।
सही है, चलिए, एक देशी साझा पुस्तकालय का निरीक्षण करते हैं /system/lib
, उदाहरण के लिए /system/lib/libandroid_runtime.so
, अब जारी करते हैं file libandroid_runtime.so
, अपेक्षित आउटपुट यह होगा:
libandroid_runtime.so: ELF 32-बिट LSB साझा ऑब्जेक्ट, ARM, संस्करण 1 (SYSV), गतिशील रूप से जुड़ा हुआ, छीन लिया गया
फिर से, नोटिस, इसकी 32-बिट ईएलएफ, एआरएम से क्रॉस-संकलित और एक साझा पुस्तकालय है।
होस्ट के क्रॉस-संकलन की कुंजी को एओएसपी स्रोत में पाया जा सकता है, अर्थात, जिंजरब्रेड बिल्ड को मूल रूप से 64 बिट होस्ट सिस्टम पर बनाया जाना था, यहां समाचार समूह लिंक का उल्लेख है कि इसे बनाने के लिए स्क्रिप्ट को कैसे पैच करना है। 32 बिट होस्ट जिसमें दो पैच हैं, एओएसपी की गेरिट समीक्षा पर , ( build/core.mk
और संयुक्त ) के लिए यहां पाया गया है ।build/main.mk
बाद के परिणाम के रूप में, इस पैच ने आईसीएस की निर्माण लिपियों के लिए अपना रास्ता बना लिया था जिसमें मुझे एक 32 बिट प्लेटफॉर्म पर आईसीएस संकलित करने का विशेषाधिकार मिला था जिसे बनाने में 3 दिन का समय लगा ( यह जेट ब्लेड के लिए आईसीएस का एक बंदरगाह था )। अब, आवश्यकताओं, ऊपर बढ़ा दिया जाता है आप करते हैं निश्चित रूप से ऊपर की तरफ ICS की ओर से AOSP के निर्माण के पार संकलन सक्षम करने के लिए 64 बिट मेजबान की जरूरत है :)